Python Tic Tac Toe AI执行2+;同时移动到块
我有一个井字游戏:Python Tic Tac Toe AI执行2+;同时移动到块,python,python-2.7,artificial-intelligence,tic-tac-toe,Python,Python 2.7,Artificial Intelligence,Tic Tac Toe,我有一个井字游戏: import random boardX = int(raw_input("How many X boards do you want? > ")) boardY = int(raw_input("How many Y boards do you want? > ")) Matrix = [[0-0 for x in range(boardX)] for y in range(boardY)] Matrix_2 = [[" "for x in range(boar
import random
boardX = int(raw_input("How many X boards do you want? > "))
boardY = int(raw_input("How many Y boards do you want? > "))
Matrix = [[0-0 for x in range(boardX)] for y in range(boardY)]
Matrix_2 = [[" "for x in range(boardX)] for y in range(boardY)]
l = len(Matrix)
def turnX():
global Player1_row
global Player1_column
Player1_row = int(raw_input("P1 What row do you want?"))
Player1_row = Player1_row - 1
Player1_column = int(raw_input("P1 What column do you want?"))
Player1_column = Player1_column - 1
if Player1_row > boardX:
turnX()
if Player1_column > boardY:
turnX()
if (1 == Matrix[Player1_column][Player1_row] or 500 == Matrix[Player1_column][Player1_row]):
print "This is an invaild move!"
turnX()
else:
Matrix[Player1_column][Player1_row] = 1
Matrix_2[Player1_column][Player1_row] = "X"
def turnY():
Player2_row = random.randint(1, boardX)
Player2_column = random.randint(1, boardY)
Player2_column = Player2_column - 1
Player2_row = Player2_row - 1
if (1 == Matrix[Player2_column][Player2_row] or 500 == Matrix[Player2_column][Player2_row]):
turnY()
print "AI Turn:"
if result[e] == boardY - 1 * 500:
Matrix[Player1_column - 1][Player1_row] = 500
Matrix_2[Player1_column - 1][Player1_row] = "O"
if Player1_column == boardY - 1:
Matrix[Player1_column][Player1_row - 1] = 500
Matrix_2[Player1_column][Player1_row - 1] = "O"
if Player1_column != boardY - 1:
Matrix[Player2_column][Player2_row] = 500
Matrix_2[Player2_column][Player2_row] = "O"
def printArray(boardX, boardY):
for i in range(boardX):
print ""
print boardY * " _ "
for j in range(boardY):
print "|", Matrix_2[i][j],"| ",
print ""
print boardY * " _ "
win = False
def win_condition():
global Row
global result
global diagonal1
global diagonal2
global e
#Row
row = [sum(row) for row in Matrix]
#Column
result = [sum(row[i] for row in Matrix) for i in range(len(Matrix[0]))]
#Diagonal
diagonal1 = [sum(Matrix[i][i] for i in range(l))]
diagonal2 = [sum(Matrix[l-1-i][i] for i in range(l-1,-1,-1))]
#Column
result = [sum(row[i] for row in Matrix) for i in range(len(Matrix[0]))]
for h in range(0, boardX):
if row[h] == boardX * 500:
print "The AI won! Row!"
win = True
printArray(boardX, boardY)
quit()
if row[h] == boardX:
print "Player 1 won! Row!"
win = True
printArray(boardX, boardY)
quit()
for e in range(0, boardY):
if result[e] == boardY * 500:
print "The AI won! Column!"
win = True
printArray(boardX, boardY)
quit()
if result[e] == boardY:
print "Player 1 won! Column!"
win = True
printArray(boardX, boardY)
quit()
if diagonal1[0] == boardY:
print "Player 1 Won! Diagonal!"
win = True
printArray(boardX, boardY)
quit()
if diagonal1[0] == boardY * 500:
print "The AI won! Diagonal!"
win = True
printArray(boardX, boardY)
quit()
if diagonal2[0] == boardY:
print "Player 1 Won! Diagonal!"
win = True
printArray(boardX, boardY)
quit()
if diagonal2[0]== boardY * 500:
print "The AI won! Diagonal!"
win = True
printArray(boardX, boardY)
quit()
while win == False:
win_condition()
turnX()
win_condition()
printArray(boardX, boardY)
win_condition()
turnY()
win_condition()
printArray(boardX, boardY)
但当我的输入是,它做了2转,因为人工智能想阻止我所有的立场
在递归调用turnX或turnY后写入return
编辑:或将函数的其余部分放在else块中,或将输入的测试放在while循环中。递归调用turnX或turnY后写入return 编辑:或者将函数的其余部分放在else块中,或者将输入的测试放在while循环中