赞
踩
这是关于蒙特卡洛树搜索解决黑白棋问题的文章,如果你不了解蒙特卡洛树搜索,参看蒙特卡洛树搜索
黑白棋(Reversi),也叫翻转棋,是一款经典的策略游戏。
一般棋子双面为黑白两色,故称“黑白棋”。因为行棋之时将对方棋子翻转,则变为己方棋子,故又称“翻转棋” (Reversi) 。
它使用 8x8 的棋盘,由两人执黑子和白子轮流下棋,最后子多方为胜方。
board棋盘,规格时8*8,黑棋用X表示、白棋用O表示、空用.
表示。
类中有如下的函数:
class Board(object) def __init__(self): #初始化函数 ... def __getitem__(self,index): #获取索引处的落子状态 ... def display(self,step_time=None,total_time=None):#显示棋盘 ... def count(self,color):#统计color一方的棋子数量 ... def get_winnner(self):#判断哪一方获胜 ... def _move(self,action,color):#落子 ... def backpropagation(self,action,flipped_pos,color):#回溯 ... def is_on_board(self,x,y):#判断是否越界 ... def _can_fliped(self,action,color):#判断落子是否合法 ... def get_legal_actions(self,color):#获得合法的走法 ... def board_num(self,action):#棋盘左边转化为索引 ... def num_board(self,action):#索引转化为棋盘坐标 ...
__init__
def __init__(self):
"""
初始化棋盘状态
"""
self.empty = '.' # 未落子状态
self._board = [[self.empty for _ in range(8)] for _ in range(8)] # 规格:8*8
self._board[3][4] = 'X' # 黑棋棋子
self._board[4][3] = 'X' # 黑棋棋子
self._board[3][3], self._board[4][4] = 'O', 'O' # 白棋棋子
__getitem__(self,index)
def __getitem__(self, index):
"""
添加Board[][] 索引语法
:param index: 下标索引
:return:
"""
return self._board[index]
diaplay
def display(self, step_time=None, total_time=None):
"""
打印棋盘
:param step_time: 每一步的耗时, 比如:{"X":1,"O":0},默认值是None
:param total_time: 总耗时, 比如:{"X":1,"O":0},默认值是None
:return:
"""
board = self._board
# print(step_time,total_time)
# 打印列名
print(' ', ' '.join(list('ABCDEFGH')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。