パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

初期配置自在のChessのAIを作る

2023-10-16 | 新規1000万人ぐらいにプログラムをマスターしてもらいたい

CodinGameにChess Messというゲームが投稿されていたのでAI作ってみました

https://www.codingame.com/contribute/view/73770c8a187dd663d2584bf1606de430f1d32

しばらくしたらリンク先変更になると思います

 

まだシステム事体が作りかけで入出力が説明と実際で異なっているため

固まってから参戦してみようかなと思ったけど、まあいいやで制作開始

 

作成過程

システムの前提条件としてrandomというコマンドが用意されていて

駒の初期配置と移動を自動命令することが可能、王手(Check)回避はする

アルゴリズムの条件にマッチしないときはrandomを使ってます

 

1)まず入力項目の確認でボード一般的な記述を2次元ボード化

2)初期に駒を配置していくようなのでそのフェーズのデータの確認

3)配置のコマンドはランダムのままとしポーンが相手の駒を取れるときは取りそれ以外はランダム

4)ポーンが前に行けるときは前に行く

5)王手放置で負けるので王手がかかっていない時 3)4)を実行に変更

6)空き王手で負けるので3)4)の時空き王手のチェックも追加

7)初期配置でポーンを最前線に置くようにする

8)ポーンが取るコマに優先順位をつける

 

というアルゴリズムを実装したものです

 

追記

2号実装

9)盤の相手の効き位置を保持

10)クイーンがただで相手の駒を取れるときには取るを最優先

11)ナイト、ルーク、ビショップにも同様な処理を追加

12)ただで取れるときに取れる駒を点数化してすべて保持

13)最後にソートして一番点の高い手を指す

と追加したものが下です

こういった、なんちゃってAIをどんなデータで実現させるか

適当に考えている時間が好きだったりします

 

好き勝手に作っているのでもう土台からグラグラしていて

カオスになる寸前だったりします


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。