0

「Get four」ゲーム用の単純な AI を作成しようとしています。基本的なゲームの原理が完成したので、さまざまな色のコインを投入し、それらを積み重ねて 2D 配列などを埋めることができます。今まで、これはメソッドがどのように見えるかです:

public int insert(int x, int color)  //0 = empty, 1=player1 2=player2"

X は水平座標で、Y 座標はすでに配列にある石の数によって決定されるため、アイデアは明らかだと思います。

ここでの問題は、特定のゲームの状況を評価する必要があるため、特定の状況で新しいペア、トリプレット、および可能性のある 4 つ連続で獲得できる数を見つけて、各状況に特定の値を与えることです。これらの値を使用して、「ゲーム ツリー」をセットアップし、次にどの動きが最適かを判断できます (後でアルファ ベータ プルーニングを実装します)。私の現在の問題は、Java メソッドで現在のゲーム状況の評価を実装する効率的な方法が思いつかないことです。
どんなアイデアでも大歓迎です!

4

3 に答える 3

4

これは宿題だと思いますが、評価関数を書いて、どんなトリックを使うべきかわからないということですか?

このゲームは英語で「コネクト4」と呼ばれているので、「コネクト4評価関数」をグーグルで検索できます。

ヒューリスティックについて議論する人を十分に見つけることができます。

実際のソースコードをコピーしないでください。これは重要な演習です:)

于 2008-12-10T00:27:10.147 に答える
1

Connect 4 の検索スペースは、ありえないほど大きくありません。単純な実装では、実行に時間がかかりますが (おそらく数十分)、誰かが勝つかゲームが終了するまでミニマックス検索を実行します。どちらかのプレイヤーが勝利した場合は +1 または -1 を割り当て、引き分けた場合は 0 を割り当てます。

于 2008-12-10T10:04:52.230 に答える
0

ぼろぼろ。検索スペースは巨大です。それを行いたい場合は、定義済みのテーブルを使用する必要があります。

于 2009-02-05T18:33:11.703 に答える