-7

PC プレーヤーを含む Tic & Toe ゲームを作成しています。これは 3 x 3 のゲーム ボードで、9 つのボタンがあります。人間のプレーヤーがボタンをクリックすると (つまり、「x」をマークします)、PC プレーヤーは自動的に次のボタンを選択します。「o」をマークする適切なボタンを選択するために PC プレーヤー用に開発した次のコードを見てください。

if(buttons[1].getText().equals("O") && buttons[2].getText().equals("O") && buttons[3].getText().equals("")){
            buttons[3].setText("O");
            buttons[3].setEnabled(false);
        } else if(buttons[4].getText().equals("O") && buttons[5].getText().equals("O") && buttons[6].getText().equals("")){
            buttons[6].setText("O");
            buttons[6].setEnabled(false);
        } else if(buttons[7].getText().equals("O") && buttons[8].getText().equals("O") && buttons[9].getText().equals("")){
            buttons[9].setText("O");
            buttons[9].setEnabled(false);                
        } 

私はこれに満足していません。これは小さなピースです。If else は非常に長く、各ボタンを 1 つずつ確認します。AIとは言えません。グリッドを 4 x 4 にすると、それ以外の場合は全体を編集する必要があります。

PC プレーヤーの「o」マーク ボタンを選択するより良い方法はありますか? 助けてください!

アップデート

私は勝利状態のセットを求めていません。if else を排除できるアルゴリズムまたは何かを探しています。

4

3 に答える 3

2

すべてのゲームの状態を列挙するだけで、三目並べを解決できます。カットできるコーナーはいくつかありますが、多くはありません。

これは、これを行う方法の優れたグラフィカル表現です。 http://xkcd.com/832/

于 2013-03-13T17:16:42.373 に答える
1

私は大学でAIクラスのために(ほぼ)この正確なことをしました。私が使用した解決策は、などのいくつかの関数を作成することでした。AI部分はfindBestMove()isGameOver()などのヘルパー関数lastSuccessfulMoveForScenario()でした。Tic-Tac-Toeは非常に単純なので、前のすべての動きと、それが勝利につながったかどうかをメモリに保存するだけでした。次に、成功した動きを再生し、パフォーマンスが低下した動きを取り除きました。ゲームが進むにつれ、AIはどんどん上手にプレイできるようになりました。これがあなたが探しているものであるかどうかはわかりませんが、うまくいけばそれが役立つでしょう。

編集:

また、AIがとにかく実際に決定を下す小さなケースはごくわずかしかないことも指摘しておく必要があります。勝利をブロックする必要があること、そして可能であれば勝利する必要があることは明らかです。私が思い出すと、4つの動きのうち1つだけが「AI」エンジンを利用することになりました。

于 2013-03-13T17:28:12.100 に答える
-1

これについては、elseが唯一の方法である場合。それ以外の場合は長いですが、それは私たちがしなければならないことです。すべての当選条件を確認し、それ以外の場合は一緒に移動します

于 2013-03-13T17:41:34.750 に答える