Недавно я столкнулся с другой проблемой с использованием функций для игры с tic tac toe. Я хочу, чтобы эта функция выполняла проверку, если кто-либо из игроков выиграл функцию «выиграть». Функция работает в моем исходном коде, но это потребовало, чтобы я написал ее 4 раза. Я хотел упростить его, сделав его функцией, но я не могу заставить его работать. Я попытался добавить глобальные переменные в начале функции, но это, похоже, не так.Функция, которая проверяет, является ли что-то переменным
num1 = '1'
num2 = '2'
num3 = '3'
num4 = '4'
num5 = '5'
num6 = '6'
num7 = '7'
num8 = '8'
num9 = '9'
player1_mark = "X"
player2_mark = "O"
endgame = False
def drawBoard():
''' Prints the board'''
print
def win(x):
if (num1 == x and num2 == x and num3 == x):
drawBoard()
print "The computer wins!"
endgame = True
elif (num1 == x and num5 == x and num9 == x):
drawBoard()
print "The computer wins!"
endgame = True
elif (num1 == x and num4 == x and num7 == x):
drawBoard()
print "The computer wins!"
endgame = True
elif (num4 == x and num5 == x and num6 == x):
drawBoard()
print "The computer wins!"
endgame = True
elif (num7 == x and num8 == x and num9 == x):
drawBoard()
print "The computer wins!"
endgame = True
elif (num7 == x and num5 == x and num3 == x):
drawBoard()
print "The computer wins!"
endgame = True
elif (num1 == x and num2 == x and num3 == x):
drawBoard()
print "The computer wins!"
endgame = True
elif (num8 == x and num5 == x and num2 == x):
drawBoard()
print "The computer wins!"
endgame = True
elif (num9 == x and num6 == x and num3 == x):
drawBoard()
print "The computer wins!"
endgame = True
elif (num1 != '1' and num2 != '2' and num3 != '3' and num4 != '4' and num5 != '5' and num6 != '6' and num7 != '7' and num8 != '8' and num9 != '9'):
drawBoard()
print "Draw"
endgame = True
'''Lets say that the player gets the row 1 2 and 3'''
num1 = 'X'
num2 = 'X'
num3 = 'X'
while True:
win(player1_mark)
while endgame == True:
print 'You win!'
break
Приветствия
Почему вы используете девять отдельных переменных для игрового поля, а не, например, список или список списков? – kindall
Извините, но ваш код - настоящий беспорядок. Вы должны переписать его. Например. вы намеренно дважды проверяете, являются ли '(num1 == x и num2 == x и num3 == x)'? Я подозреваю, что это ваш дизайн, все повторения, что в конечном итоге затрудняет логику. – jDo