[解決済み] Connect 4の評価機能はどのように設計すればよいのでしょうか?
質問内容
コネクト4ゲームをJavaで実装しています。 列と行の数が可変の場合 ) .
この実装では、(ユーザーの選択により)Mini-maxアルゴリズムとAlpha-betaプルーニングを使用し、探索の最大深さを maxDepth
今問題になっているのは ボードの状態に対する優れた評価関数 (これはmaxDepthで返される値です)。
の間の値です。 -100(最悪の選択、負けを意味する) と 100(ベストチョイス、勝ちの状況に相当する) ここで 0 は、本来は ドロー状況 .
実は2つの関数を実装しています(コードが長いので擬似コードで報告します)。
1)
- ノー・ウィン/ノー・ロス
--テーブルが一杯の場合==> 引き分け(0)
--> テーブルが一杯でない場合 ==> よくわからない状況 (50)
- 勝つ
-->私の勝利の場合。100
--> 相手の勝利時:-100
2)
Of me:
- InARow[0] = maximum number of pieces in a HORIZONTAL in a row
- InARow[1] = maximum number of pieces in a VERTICAL in a row
- InARow[2] = maximum number of pieces in a DIAGONAL (ascending) in a row
- InARow[3] = maximum number of pieces in a DIAGONAL (descending) in a row
Of the opponent
- InARow2[0] = maximum number of pieces in a HORIZONTAL in a row
- InARow2[1] = maximum number of pieces in a VERTICAL in a row
- InARow2[2] = maximum number of pieces in a DIAGONAL (ascending) in a row
- InARow2[3] = maximum number of pieces in a DIAGONAL (descending) in a row
value = (100* (InARow[0] + InARow[1] + InARow[2] + InARow[3]) )/16 - (100* (InARow2[0] + InARow2[1] + InARow2[2] + InARow2[3]) )/16
をデザインする必要があります。 第三の(可能であればより優れた) 機能です。何か提案はありますか?
よろしくお願いします。
どのように解決するのですか?
各プレイヤーがまだ作ることのできる4の列の数を数え、それを互いに引き算すればよいのです。
例えば、両者ともスコアが
7*4 (horizontal) + 4*7 (vertical) + 4*4 (diagonal up) + 4*4 (diagonal down)
. 赤が左下隅に1点入れたら、黄の失点は
1 + 1 + 1 + 0 = 3
. しかし、赤が真ん中に置くと、黄色は以下のスコアを失います。
4 + 1 + 1 + 1 = 7
.
もちろん、どのプレーヤーが勝っても、他のプレーヤーのスコアは
-infinity
は、上記のシステムとは関係なく
関連
-
[解決済み】このコンパイルユニットは名前付きモジュールに関連しているため、名前付きパッケージeclipseを宣言する必要があります。
-
[解決済み】Java、"変数名 "を変数に解決することができない
-
[解決済み】Javaクラスの "型に解決できない"
-
[解決済み】Javaの部分文字列:「文字列のインデックスが範囲外」。
-
[解決済み】スレッド "main "での例外 java.util.NoSuchElementException
-
[解決済み】純粋なJUnitテストにVisibleForTestingを使用する方法
-
[解決済み] 文字列のための優れたハッシュ関数
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] Spring Bootアプリケーションにポートを設定する方法
-
[解決済み] ThreadLocal変数はいつ、どのように使用すればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】HTTPステータス 405 - リクエストメソッド「POST」はサポートされていません (Spring MVC)
-
[解決済み】エラー:配列または java.lang.Iterable のインスタンスに対してのみ反復処理を行うことができます。
-
[解決済み】Javaの部分文字列:「文字列のインデックスが範囲外」。
-
[解決済み】「java -cp」と「java -jar」の違い?
-
[解決済み] intellijが自動配線リポジトリにタイプのBeanが見つからないと不正確な発言をする件
-
[解決済み】Hibernateの例外「failed to lazily initialize a collection of role」の解決方法
-
[解決済み】java.io.IOException: 壊れたパイプ
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み] [Solved] java.lang.NoClassDefFoundError: クラスXXXを初期化できませんでした。
-
[解決済み】Javaの".class expected "について