print("*" * 10, " Игра Крестики-нолики для двух игроков ", "*" * 10)
board = list(range(1,26))
def f(a, i):
#print(board)
if board[a+i*5] == "O" or board[a+i*5] == "X": return ' ' + str(board[a+i*5])
elif a + i * 5 < 9: return ' ' + str(board[a+i*5])
else: return board[a+i*5]
def draw_board(board):
print("-" * 25)
for i in range(5):
print("|", f(0, i), "|", f(1, i), "|", f(2, i), "|", f(3, i), "|", f(4, i), "|")
print("-" * 25)
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 <= 25:
if(str(board[player_answer-1]) not in "XO"):
board[player_answer-1] = player_token
valid = True
else:
print("Эта клетка уже занята!")
else:
print("Некорректный ввод. Введите число от 1 до 25.")
def check_win(board):
win_coord = ((0,1,2,3,4), (5,6,7,8,9), (10,11,12,13,14), (15,16,17,18,19), (20,21,22,23,24),
(0,5,10,15,20), (1,6,11,16,21), (2,7,12,17,22), (3,8,13,18,23), (4,9,14,19,24),
(0,6,12,18,24), (4,8,12,16,20))
for each in win_coord:
if board[each[0]] == board[each[1]] == board[each[2]] == board[each[3]] == board[each[4]]:
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 > 6:
tmp = check_win(board)
if tmp:
print(tmp, "выиграл!")
win = True
break
if counter == 25:
print("Ничья!")
break
draw_board(board)
main(board)
input("Нажмите Enter для выхода!")