print("*" * 10, " Игра Крестики-нолики для двух игроков ", "*" * 10)
board = list(range(1, 37))
def draw_board(board):
print("-" * 43)
for i in range(6):
print("|", str(board[0 + i * 6]).center(4), "|", str(board[1 + i * 6]).center(4), "|", str(board[2 + i * 6]).center(4), "|", str(board[3 + i * 6]).center(4), "|", str(board[4 + i * 6]).center(4), "|", str(board[5 + i * 6]).center(4), "|")
print("-" * 43)
def take_input(player_token):
valid = False
while not valid:
player_answer = input("Куда поставим " + player_token + "? ")
try:
player_answer = int(player_answer)
except:
print("Некорректный ввод. Вы уверены, что ввели число?")
continue
if player_answer >= 1 and player_answer <= 36:
if str(board[player_answer - 1]) not in "XO":
board[player_answer - 1] = player_token
valid = True
else:
print("Эта клетка уже занята!")
else:
print("Некорректный ввод. Введите число от 1 до 36.")
def check_win(board):
win_coord = (
(0,1,2), (1,2,3), (2,3,4), (3,4,5),
(6,7,8), (7,8,9), (8,9,10), (9,10,11),
(12,13,14), (13,14,15), (14,15,16), (15,16,17),
(18,19,20), (19,20,21), (20,21,22), (21,22,23),
(24,25,26), (25,26,27), (26,27,28), (27,28,29),
(30,31,32), (31,32,33), (32,33,34), (33,34,35),
(0,6,12), (6,12,18), (12,18,24), (18,24,30),
(1,7,13), (7,13,19), (13,19,25), (19,25,31),
(2,8,14), (8,14,20), (14,20,26), (20,26,32),
(3,9,15), (9,15,21), (15,21,27), (21,27,33),
(4,10,16), (10,16,22), (16,22,28), (22,28,34),
(5,11,17), (11,17,23), (17,23,29), (23,29,35),
(0,7,14), (1,8,15), (2,9,16), (3,10,17),
(6,13,20), (7,14,21), (8,15,22), (9,16,23),
(12,19,26), (13,20,27), (14,21,28), (15,22,29),
(18,25,32), (19,26,33), (20,27,34), (21,28,35),
(5,10,15), (4,9,14), (3,8,13), (2,7,12),
(11,16,21), (10,15,20), (9,14,19), (8,13,18),
(17,22,27), (16,21,26), (15,20,25), (14,19,24),
(23,28,33), (22,27,32), (21,26,31), (20,25,30)
)
for each in win_coord:
if board[each[0]] == board[each[1]] == board[each[2]]:
return board[each[0]]
return False
def main(board):
counter = 0
win = False
while not win:
draw_board(board)
if counter % 2 == 0:
take_input("X")
else:
take_input("O")
counter += 1
if counter > 4:
tmp = check_win(board)
if tmp:
print(tmp, "выиграл!")
win = True
break
if counter == 36:
print("Ничья!")
break
draw_board(board)
main(board)
input("Нажмите Enter для выхода!")