紙のサッカーをするボットを Java で実装したいのですが、始め方がわかりません。
複雑さを最小限に抑えるには、どのようなアルゴリズムを選択する必要がありますか? どうすればそれができるかについてのアイデアはありますか?
簡単なアルゴリズムは、8 つの方向のそれぞれの有効性をテストし、ランダムに 1 つを選択することです。おそらく、相手のゴールに近づく方向を好むでしょう。すべての選択肢に均等に 60% の確率を割り当て、次に最良の選択肢に 20% の追加を割り当て、2 番目と 3 番目に最適な選択肢のそれぞれに 10% の追加を割り当てることができます。選択肢が 2 つしかない場合は、75/25% の確率を割り当てます。利用可能な選択肢が 1 つしかない場合、ランダム性は必要ありません。
編集:
例 1: 開始位置、画面上部のゴール、各動きの確率の割合:
17.5 27.5 17.5
7.5 7.5
7.5 7.5 7.5
例 2:
では、最良の動きから最悪の動きまでランク付けするにはどうすればよいでしょうか。各方向のゴールからの距離を使用し、ゴールに向かって移動する場合はそれを追加し、遠ざかる場合は減算します。したがって、目標が上に 7 マス、左に 3 マスの場合、各方向のスコアは次のようになります。
10 7 4
3 -3
-4 -7 -10
上記の状況で 5 つの可能な動きがあり、違法な動きがたまたま上、右上、および右下であるとすると、各動きの確率は次のようになります (違法な動きには 0 チャンスが割り当てられています)。
32 0 0
22 22
12 12 0