Advertisement
plarmi

Крестики-нолики

Mar 16th, 2023 (edited)
579
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.58 KB | None | 0 0
  1. print("~" * 10, " Игра Крестики-нолики для двух игроков ", "~" * 10)
  2.  
  3. board = list(range(1, 10))
  4.  
  5. def draw_board(board):
  6.    print("-" * 13)
  7.    for i in range(3):
  8.       print("|", board[0+i*3], "|", board[1+i*3], "|", board[2+i*3], "|")
  9.       print("-" * 13)
  10.  
  11. def take_input(player_token):
  12.    while True:
  13.       player_answer = input("Куда поставим " + player_token+"? ")
  14.       try:
  15.          player_answer = int(player_answer)
  16.       except:
  17.          print("Некорректный ввод. Вы уверены, что ввели число?")
  18.          continue
  19.       if player_answer >= 1 and player_answer <= 9:
  20.          if(str(board[player_answer-1]) not in "XO"):
  21.             board[player_answer-1] = player_token
  22.             break
  23.          else:
  24.             print("Эта клетка уже занята!")
  25.       else:
  26.         print("Некорректный ввод. Введите число от 1 до 9.")
  27.  
  28. def check_win(board):
  29.    win_coord = ((0,1,2), (3,4,5), (6,7,8), (0,3,6), (1,4,7), (2,5,8), (0,4,8), (2,4,6))
  30.    for each in win_coord:
  31.        if board[each[0]] == board[each[1]] == board[each[2]]:
  32.           return board[each[0]]
  33.    return False
  34.  
  35. counter = 0
  36. while True:
  37.     draw_board(board)
  38.     if counter % 2 == 0:
  39.         take_input("X")
  40.     else:
  41.         take_input("O")
  42.     counter += 1
  43.     if counter > 4:
  44.         tmp = check_win(board)
  45.         if tmp:
  46.             print(tmp, "выиграл!")
  47.             break
  48.     if counter == 9:
  49.         print("Ничья!")
  50.         break
  51. draw_board(board)
  52.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement