忍者ブログ

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

現在、新しいコメントを受け付けない設定になっています。

オセロ3 part2

前回のオセロにAIをつけてみた。
ダウンロード

(Cキーで終了、Rキーでリセット)
もしかすると実行するのにGLUTをインストールする必要があるかもしれない…

(ソース)
Display.txt
Idle.txt
KeyboardMouseC.txt
KeyboardMouseState.txt
main.txt
MainState.txt
PositionMaps.txt
ResionMap.txt
States.txt
Stones.txt
VectorMaps.txt
Texture.txt
EventFlags.txt
General.txt
SetValue.txt
ProgEnd.
EventCheck.txt
AIReversi
BoardOperater.txt

AIなんだけど、打つことが出来る場所に数値を設定して、
その数値の大きさがそこへ打つ確率の大きさになる。

その数値なんだけど、数値を変更する関数を合成して得られるんだけど
まず値を変化させる関数のAIGeneraterという型を作る。
type AIGenerater = (MState -> (Vector2 GLint) -> GLint -> GLint)
そしてそのリスト [AIGenerater] のaiGeneratersを

aiGeneraters = [losePutValue , cornerPutValue , xPutValue , cPutValue , cornerLosePut]
losePutValue : 全滅につながる手を避ける
cornerPutValue : 角優先
xPutValue  : X打ちする場合の値の作成 
cPutValue : C打ちする場合の値の作成
cornerLosePut : 角を取られるような手を避ける

と定義してaiConstructで合成した。
そしてその関数を使って数値を作り出す。

なんというか関数のリストを作ってそれを合成するっていうのはなんか便利だな。
これは他にも使えそうな気がする。
PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

プロフィール

HN:
tentaku
性別:
非公開

最新記事

(09/11)
(11/24)
(09/22)
(01/01)
(11/01)

P R