1

これは私の最初の Android ゲーム アプリで、現在少し行き詰まっています。

つまり、基本的に私が持っているのはカードゲームで、合計 6 ターンで構成されています。1 番目のターン = プレイヤー 1、2 番目のターン = プレイヤー 2、3 番目のターン = プレイヤー 1 など。

最初に考えたのは、WHILE (round<=6) という while ループ内で各プレイヤーのターンを処理し、変数 round を 0 に初期化することでした。

その WHILE ループ内で、if(turn=1){ プレイヤー 1 の利用可能なアクションとカードを画面に表示し、onclicklisteners を設定し、クリック時に変数を 1 ずつインクリメントします}、else if (turn=2){ は同じことを行いますが、プレーヤー 2}。

while ループがプレイヤーがボタンやカードをクリックするのを待たないことを考えると、これは明らかに機能しません。

それで、私は数日間解決策を探していましたが、非常に啓発的なものを見つけることができないようです.

何らかの解決策や、可能な解決策を得るために読むことができる情報源を誰かが推奨してくれれば、本当に感謝しています。

ありがとうございました。

4

3 に答える 3

0

ユーザーが順番を終えたときにクリックするボタンを使用する場合、これは非常に簡単です。turnsターン数を追跡するグローバル変数を作成し、 whoseTurn「1」または「2」を含む変数を保持するだけで、現在誰のターンかがわかります。

と でプレーヤー 1 のターンとしてゲームを開始しturns = 1ますwhoseTurn = 1。「ボタン」がクリックされたらturns、1ずつインクリメントwhoseTurnして 2 に変更します。次に、インターフェイスをプレーヤー 1 からプレーヤー 2 に変更します。「ボタン」がもう一度クリックされると、反対のことを行い、プレーヤー 1 に戻ります。turnカウンターが 3 になった状態で、ターンが 6 になるまでこれを続けます。

擬似コード:

int turns = 1;
int whoseTurn = 1;

on button click {
    //Check for end of game
    if(turns >= 6) {
        //game over
    }
    else {
        turns++;
        if(whoseTurn == 1) {
            whoseTurn = 2;
            player2();
        } else {
            whoseTurn = 1;
            player1();
    }
}

player1() {
    //code for player 1's turn
}

player2() {
    //code for player 2's turn
}

Java でこれを行っていることは知っていますが、Javascript でのこの小さなデモは役に立つかもしれません。

デモ

于 2013-09-19T15:17:12.967 に答える
0

ループでこれをやりたくないでしょう。あなたの最善の策は、State Design Patternを調べることです。

このパターンを使用すると、「ターン」のさまざまな状態が得られます。次に、ユーザーがボタンまたはカードをクリックすると、ターンの状態が変化します。次に、「ターン」オブジェクトには、誰のターンであるかなどの変更を処理するためのリスナーがあります。

実際のコードを見なければ、コード例を示すことはできません。

于 2013-09-19T14:43:18.250 に答える