C言語で素晴らしいオセロを作らないか?
at TECH
371:デフォルトの名無しさん
08/01/27 19:03:38
先手黒から見た評価関数の一部の例
>>366での
for (i = 0; i < n; i++) {
move (i);
v = -minmax (-max, -min);
undo ();
の部分だと思います
─────────────────────
/* ネット上の拾いものの解説 */
while( 打てる手がある ){
@手を差して次の盤面を作る;
Aval = minimax( 盤面, depth - 1 ); 一手先を読む再帰。3手まで読んでみるつもり
B盤面を1手戻す;
─────────────────────
/* 上記を例に作ってみた */
blackturn( int **board , depth ) 2次元配列のポインタと、3手読みたいので3を貰う
{
int val;
if( depth == 0 ) return 評価値(盤面);
for( y=1; y<=BOARD_SIZE; y++ ) { 盤面全部を検索し置ける場所を8*8全部調べる
for( x=1; x<=BOARD_SIZE; x++ ) {
@ if( 自作関数1 ) { board[x][y]に石が置けるならひっくり返してみる
ターンを次にする;
色を変える;
A val = blackturn( &board , depth - 1 );
B問題点 ここの処理がスタックを用いておらず出来ません。通常どのように行って居るのでしょうか?
長々と見ずらく申し訳ないですが伝わって頂ければ幸いです
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5376日前に更新/112 KB
担当:undef