機器博弈 tic tac toe遊戲

2021-09-30 05:30:16 字數 1901 閱讀 8568

下面是我寫的乙個tic-tac-toe的簡單遊戲。

我主要的思路是使用極大極小的搜尋策略。並且體會到博弈程式的好壞很大程度上取決於局面評估函式的好壞。

評估函式和程式對局面的搜尋速度是成反比的。

我的程式中評估函式比較弱。

主要有二個類:

~~~~~~~~~~~~~~~~~~~~map.h~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`

#ifndef map_h

#define map_h

#include

#include

#define max_depth 2

using namespace std;

class map

//the computer try to make best movement

int makebestmove(player& computer) 

//umake previous movement

bool unmakemove(const int& x,const int& y)

//print the board

void printboard()

}if( -1 == side )    }}

return best ;          //返回走棋方的最優值

}private:

static char board[4][4];

enum ;

typedef struct movemove ;

move bestmove;          //最佳的下子位置

int  genallmove(move* array)}}

return movenum;

}int evaluatemap()

if( 'h' == board[i][j] )}}

memcpy( board , boardcopy , sizeof(boardcopy));  //還原原來的board

return comp - human ;

}int util(int x,int y,char c)

board[x][y] = '0' ;

if( 0 == score )

return 1 ;

else

return score ;

}const static int dir[8][2];

};#endif

char map::board[4][4]=;

const int map::dir[8][2]=,, ,,,,, };

~~~~~~~~~~~~~~~~~~~~~~~player.h~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#ifndef player_h

#define player_h

class player

public:

int posx;     //記錄player當前的位置

int posy;

int type;

};#endif

~~~~~~~~~~~~~~~~~~~~~~~主程式~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#include

#include "player.h"

#include "map.h"

#define not !

using namespace std;

player computer(1),human(-1);     // 1對應computer -1對應human

map map;

int main()

else

else}}

}cout<<"a draw ... the game ends!"

}

tic tac toe遊戲勝方判別(井字棋)(一)

題目說明 需要讀入乙個3x3矩陣,矩陣中1表示x,0表示o,如果有三個連在一起的相同符號,則該方獲勝,如果沒有,則沒有獲勝方。解決方法 為了解決這個問題,需要做的是對整個矩陣進行遍歷,看是否存在上述情況。為了達到目的,需要從行 列和對角線三個維度進行遍歷。程式實現 include include i...

組合遊戲(博弈)

昨天看大白書翻到了組合遊戲這章,看著發覺原來是博弈論的內容,於是便看下去了。真是不看不知道,一看才知道自己的水平有多弱,不過好在還是集中精神地看了大部分。從nim遊戲 n堆石子,每人每次可以從任意一堆中取至少1個 至多整堆的石子,不能取者為輸 開始講起,引入必勝態 必敗態的概念 1.乙個狀態是必敗狀...

博弈 塗色遊戲

在乙個2 n的格仔上,alice和bob又開始了新遊戲之旅。這些格仔中的一些已經被塗過色,alice和bob輪流在這些格仔裡進行塗色操作,使用兩種塗色工具,第一種可以塗色任意乙個格仔,第二種可以塗色任意乙個2 2的格仔。每一輪遊戲裡,他們可以選擇一種工具來塗色尚未被染色的格仔。需要注意,塗色2 2的...