3 人のプレイヤー (最終的には 4 人) に更新する 1v1 ゲームがあり、ユーザーが 2 人のコンピューター プレイヤーと対戦しているときに、プレイヤーの追跡で問題が発生しています。
ゲームプレイの主要なコードをすべて処理し、コンピューター プレイヤーのアクションも制御する Game NSObject があります。以前は、Game.h の 2 つのプロパティ (User と Opponent) が得意でしたが、現在は 3 つ (User、Opponent、Opponent2) があります。次のように宣言します。
@property (retain) Player *user;
問題が発生するのは、コンピューター プレーヤーのアクションを制御するメソッドを使用する必要がある場合です。例として、コンピューター プレーヤーが入札する必要がある場合、入札額と対戦相手に関するその他の情報を知っている必要があります。古いコードのスニペットは次のとおりです。
- (void)computerBiddingObjects {
// ... other stuff
if (_opponentPoints == 110 && _userPoints >= 90 && _userDidBid != YES) {
bid = bidTwenty;
} else if (_opponentPoints == 115 && _userPoints >= 90 && _userDidBid != YES) {
bid = bidTwentyFive;
}
// ... other stuff
}
対戦相手の情報を取得するために、Player.h に 2 つの新しいプロパティを追加して、各プレイヤーの対戦相手 (対戦相手 1 と対戦相手 2) を追跡することを考えました。私の質問は、各プレーヤーのプロパティを次のように設定した場合です。
_opponent.opponent = _user;
_opponent.opponent2 = _opponent2;
それらを参照したり、両方のコンテキストで個々のプロパティを設定したりできますか? 上記を考えると、これらのステートメントは同等でしょうか。
_opponent.opponent.didBid = YES;
_user.didBid = YES;
また、この入札コード スニペットの新しいバージョンのように、Player オブジェクトのプロパティにアクセスできますか?
- (void)computerBiddingObjectsForOpponent:(Player *)opponent {
// ... other stuff
if (opponent.points == 110 && self.currentBid < bidTwenty && ((opponent.opponent1.points >= 90 && opponent.opponent1.didBid != YES) || (opponent.opponent2.points >= 90 && opponent.opponent2.didBid != YES))) {
bid = bidTwenty;
} else if (opponent.points == 115 && self.currentBid < bidTwentyFive && ((opponent.opponent1.points >= 90 && opponent.opponent1.didBid != YES) || (opponent.opponent2.points >= 90 && opponent.opponent2.didBid != YES))) {
bid = bidTwentyFive;
}
// ... other stuff
opponent.bid = bid.
}
私はベース/トラックから外れていますか? これを行う簡単な方法はありますか?