Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

ПОМОГИТЕ С ПРОГРАММОЙ НА ПИТОНЕ. ЗАДАНИЕ С УСЛОВИЕМ НИЖЕ

Игра с компьютером «Крестики-нолики». Поле игры произвольное (небольшое). Пользователь вводит, а компьютер выводит координаты нулика (крестика). Компьютер подводит итог.

По дате
По рейтингу
Аватар пользователя
Новичок
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
 import random 
 
def print_board(board): 
    for row in board: 
        print(" | ".join(row)) 
        print("-" * (len(row) * 4 - 1)) 
 
def check_winner(board, player): 
    n = len(board) 
    # Check rows 
    for row in board: 
        if all(cell == player for cell in row): 
            return True 
    # Check columns 
    for col in range(n): 
        if all(board[row][col] == player for row in range(n)): 
            return True 
    # Check diagonals 
    if all(board[i][i] == player for i in range(n)): 
        return True 
    if all(board[i][n-1-i] == player for i in range(n)): 
        return True 
    return False 
 
def is_board_full(board): 
    return all(cell != ' ' for row in board for cell in row) 
 
def get_computer_move(board): 
    empty_cells = [(i, j) for i, row in enumerate(board) for j, cell in enumerate(row) if cell == ' '] 
    return random.choice(empty_cells) 
 
def main(): 
    size = int(input("Введите размер поля (например, 3 для поля 3x3): ")) 
    board = [[' ' for _ in range(size)] for _ in range(size)] 
    print_board(board) 
 
    current_player = "X" 
    while True: 
        if current_player == "X": 
            row = int(input("Введите номер строки (0-{}): ".format(size - 1))) 
            col = int(input("Введите номер столбца (0-{}): ".format(size - 1))) 
            if board[row][col] != ' ': 
                print("Эта ячейка уже занята. Попробуйте снова.") 
                continue 
            board[row][col] = "X" 
        else: 
            row, col = get_computer_move(board) 
            board[row][col] = "O" 
            print("Компьютер выбрал ячейку ({}, {})".format(row, col)) 
 
        print_board(board) 
         
        if check_winner(board, current_player): 
            print("Игрок {} выиграл!".format(current_player)) 
            break 
         
        if is_board_full(board): 
            print("Ничья!") 
            break 
         
        current_player = "O" if current_player == "X" else "X" 
 
if __name__ == "__main__": 
    main()  

Как это работает:
Программа запрашивает у пользователя размер поля.
Игровое поле создается с указанным размером.
Игрок и компьютер по очереди делают ходы. Игрок вводит координаты для своего хода, а компьютер случайным образом выбирает свободную ячейку для своего хода.
После каждого хода проверяется, выиграл ли кто-то или закончились ли свободные ячейки.
Игра заканчивается, когда кто-то выигрывает или все ячейки заняты.