#python
#python
Вопрос:
Я создал базовую игру в крестики-нолики, и, кажется, все работает, за исключением проверки большинства ситуаций с X win. O отлично работает во всех случаях, но X — нет. Я не понимаю, что не так.
Я попытался объединить условия выигрыша в одну группу, и это не сработало. Я не вижу никаких ошибок.
def def_board():
global board
empty = "| |"
board = {'1':empty, '2':empty, '3':empty, '4':empty, '5':empty, '6':empty, '7':empty, '8':empty, '9':empty,}
print("Board:")
print('|1|2|3|n|4|5|6|n|7|8|9|')
def board_check_x():
board_check_board = ["null", board['1'], board['2'], board['3'] ,board['4'],board['5'],board['6'],board['7'],board['8'],board['9']]
if "|X|" == board_check_board[1] and "|X|" == board_check_board[2] and "|X|" == board_check_board[3]:
player_win("2")
if "|X|" == (board_check_board[4] and "|X|" == board_check_board[5] and "|X|" == board_check_board[6]):
player_win("2")
if "|X|" == (board_check_board[7] and "|X|" == board_check_board[8] and "|X|" == board_check_board[9]):
player_win("2")
if "|X|" == (board_check_board[1] and "|X|" == board_check_board[4] and "|X|" == board_check_board[7]):
player_win("2")
if "|X|" == (board_check_board[2] and "|X|" == board_check_board[5] and "|X|" == board_check_board[8]):
player_win("2")
if "|X|" == (board_check_board[3] and "|X|" == board_check_board[6] and "|X|" == board_check_board[9]):
player_win("2")
if "|X|" == (board_check_board[1] and "|X|" == board_check_board[5] and "|X|" == board_check_board[9]):
player_win("2")
if "|X|" == (board_check_board[3] and "|X|" == board_check_board[5] and "|X|" == board_check_board[7]):
player_win("2")
def board_check_o():
board_check_board = ["null", board['1'], board['2'], board['3'] ,board['4'],board['5'],board['6'],board['7'],board['8'],board['9']]
if "|O|" == board_check_board[1] and "|O|" == board_check_board[2] and "|O|" == board_check_board[3]:
player_win("1")
elif "|O|" == board_check_board[4] and "|O|" == board_check_board[5] and "|O|" == board_check_board[6]:
player_win("1")
elif "|O|" == board_check_board[7] and "|O|" == board_check_board[8] and "|O|" == board_check_board[9]:
player_win("1")
elif "|O|" == board_check_board[1] and "|O|" == board_check_board[4] and "|O|" == board_check_board[7]:
player_win("1")
elif "|O|" == board_check_board[2] and "|O|" == board_check_board[5] and "|O|" == board_check_board[8]:
player_win("1")
elif "|O|" == board_check_board[3] and "|O|" == board_check_board[6] and "|O|" == board_check_board[9]:
player_win("1")
elif "|O|" == board_check_board[1] and "|O|" == board_check_board[5] and "|O|" == board_check_board[9]:
player_win("1")
elif "|O|" == board_check_board[3] and "|O|" == board_check_board[5] and "|O|" == board_check_board[7]:
player_win("1")
Я хочу, чтобы игра проверила, получаете ли вы X три раза подряд. Вместо этого игра не регистрирует ее для случая X, но отлично работает для O.
Ответ №1:
Обновите свою board_check_x
функцию.
Попробуйте это:
def board_check_x():
board_check_board = ["null", board['1'], board['2'], board['3'] ,board['4'],board['5'],board['6'],board['7'],board['8'],board['9']]
if "|X|" == board_check_board[1] and "|X|" == board_check_board[2] and "|X|" == board_check_board[3]:
player_win("2")
elif "|X|" == board_check_board[4] and "|X|" == board_check_board[5] and "|X|" == board_check_board[6]:
player_win("2")
elif "|X|" == board_check_board[7] and "|X|" == board_check_board[8] and "|X|" == board_check_board[9]:
player_win("2")
elif "|X|" == board_check_board[1] and "|X|" == board_check_board[4] and "|X|" == board_check_board[7]:
player_win("2")
elif "|X|" == board_check_board[2] and "|X|" == board_check_board[5] and "|X|" == board_check_board[8]:
player_win("2")
elif "|X|" == board_check_board[3] and "|X|" == board_check_board[6] and "|X|" == board_check_board[9]:
player_win("2")
elif "|X|" == board_check_board[1] and "|X|" == board_check_board[5] and "|X|" == board_check_board[9]:
player_win("2")
elif "|X|" == board_check_board[3] and "|X|" == board_check_board[5] and "|X|" == board_check_board[7]:
player_win("2")
Если ваш o работает, это должно сработать и для x. Я только что переработал вашу функцию o для поиска x с помощью двух быстрых регулярных выражений в моем редакторе.