因此,对于我的计算机科学课,我必须创建一个能够在它出现之前找到并预测领带游戏的功能,而且我很遗憾。到目前为止,游戏运作得非常好,但即使领带游戏不可避免,也会继续玩游戏。
我的一些功能:
canWin - (主要针对AI对手)检查是否有任何单一动作可以导致游戏获胜,如果没有获胜则返回-1,如果有没有则返回肯定取胜。
gameWon - 这会调用几个辅助函数来检查游戏是否赢了,赢取了Horizontal,赢得了垂直等等。
columnFull - 检查列是否已满
dropChecker - 告知行中某个列中的检查器将落地
createBoard - 创建游戏主板
其余的功能都是由导师做的,我相信我们不能打电话,而且我真的很难过,我是否需要制作一个全新的人工智能来预测最好的移动?
我的代码在下面,但是这里是对那些不想阅读它的人的总结,我的代码遍历棋盘上的每个0值(0为空,1为玩家1为人类,2为玩家2,是AI),在看到0后它会运行canWin,如果它返回false则函数返回false,然后根据奇数或偶数随机放置一个值(1或2),并检查canWin和gameWon,以及继续这样做。我相信你可以很快看到随机放置值是不理想和不现实的。
def gameTied (board):
board1=board
for i in range (0,len(board)):
for j in range (0,len(board[0])):
if 0 == board[i][j]:
if canWin(board,"PLAYER_1")!=-1:
return False
if canWin(board,"PLAYER_2")!=-1:
return False
if j%2==0:
board1[i][j]=1
else:
board1[i][j]=2
if gameWon(board1,i,j)==True:
return False
if canWin(board,"PLAYER_1")!=-1:
return False
if canWin(board,"PLAYER_2")!=-1:
return False
for i in range (0,len(board)):
for j in range (0,len(board[0])):
if 0 == board[i][j]:
if canWin(board,"PLAYER_1")!=-1:
return False
if canWin(board,"PLAYER_2")!=-1:
return False
if j%2==0:
board[i][j]=2
else:
board[i][j]=1
if gameWon(board,i,j)==True:
return False
if canWin(board,"PLAYER_1")!=-1:
return False
if canWin(board,"PLAYER_2")!=-1:
return False
return True
另外,我使用的是python版本3.6(最新版本)