Objective-Cの感覚を集めるために、 Cocoaを使用しない非常に基本的なconnect4ゲームを作成しています。
私のプログラムには、次の3つのモジュールがあります。
- 「ゲーム」:ボード情報を保持する配列が含まれています。main内で作成され、ターンを担当するオブジェクト。PlayerオブジェクトとComputerオブジェクトは、このモジュール内にあります。
- 「プレイヤー」:プレイヤーの駒を優先列に挿入する機能を保持します(このモジュールはカプセル化の目的でのみ存在します)。
- 「コンピューター」:現在のボード設定に基づいて、コンピューターが移動する場所を決定し、その場所にピースを配置する機能を保持します。
pieceLoc
理想的には、PlayerクラスとComputerクラスが、ある種の継承を通じてGame内に存在する同じインスタンスを編集できるようにしたいのですが、これを行う方法がわかりません。
これが私が現在考えていることの抜粋です:
// startGame exists within the "Game" module
char *pieceLoc[42]; // This is a *temporary* global var. I'm still learning about
// the best way to implement this with class and instance
// methods. This is the array that holds the board info.
-(void) startGame {
Player *player =[[Player alloc] init]; // player's symbol = 'X'
Computer *computer =[[Computer alloc] init]; // computer's symbol = 'O'
int i = 0;
while ([game hasPieceWon: 'X'] == NO && [game hasPieceWon: 'O'] == NO) {
//function for player move
if ([game hasPieceWon: 'X'] == NO) {
//function for computer move
}
}
if ([game hasPieceWon: 'X'] == YES)
// Tell the player they've won
else
// Tell the player the computer has won.
}
プレーヤーとコンピューターの移動に使用される関数は、配列へのアクセスを何らかの方法で取得するために必要な関数ですpieceLoc
(クラスとインスタンスのメソッドについて詳しく知ると、将来的にはインスタンス変数として存在します)。pieceLoc
現在、関数パラメーターを介して渡す必要がある場合に備えて、char*として存在します。
これは、OOPについての考え方ではかなり単純な問題のように感じますが、午後のほとんどを検索したにもかかわらず、探していたものに対する答えを見つけることができませんでした。私が集めたものから、私の質問はクラス構成に関連していますが、Objective-Cのそれについての良いリソースを見つけることができませんでした。
pieceLoc
つまり、繰り返しますが、「親クラス」ゲーム内に存在する単一のインスタンスを、追加のパラメーターを使用せずpieceLoc
に直接操作できる2つの「子クラス」に渡す方法を探しています。
配列をパラメーターとして渡すことが、より慣用的なことになる場合、Objective-Cで参照による受け渡しがどのように機能するかの例を取得できますか?
助けてくれてありがとう!