今天我们带来一个带人机对战功能的五子棋程序。程序基于前面文章中的框架搭建,新增人机对战的策略。程序基于规则进行决策,不考虑禁手,玩家执黑子先行。棋盘规模采用15乘15,棋盘规模容易扩展,程序棋力中等,可以用来放松陪玩。
程序每一步都会搜索棋盘所有可以落子的位置,然后识别出最值得落子的位置,实现进攻和围堵。目前评估值为人为设置,所以程序棋力只能与编者相当,勉强算作中等棋力,后期若引入遗传算法或者强化学习,通过养蛊之法,可以养出更高棋力的程序。部分代码如下:
```
BOARD = []for i in range(UNIT, UNIT * ROW_NODE_NUM + UNIT, UNIT):for j in range(UNIT, UNIT * ROW_NODE_NUM + UNIT, UNIT):
BOARD.append((j, i))print(BOARD)class myFrame(wx.Frame):def __init__(self):self.unit = UNITself.pointNum = ROW_NODE_NUM#每行落棋点数 self.pieceNum=0 self.bkCol=(220, 210, 0)self.wht=(255,255,