Регистрация | Вход
def print_board(board): """Печать игрового поля""" print("-------------") for i in range(3): print("|", end="") for j in range(3): print(" " + board[i][j] + " |", end="") print() print("-------------")def check_win(board, player): """Проверка на победу""" for i in range(3): if board[i][0] == board[i][1] == board[i][2] == player: return True if board[0][i] == board[1][i] == board[2][i] == player: return True if board[0][0] == board[1][1] == board[2][2] == player: return True if board[0][2] == board[1][1] == board[2][0] == player: return True return Falsedef play_game(): """Функция для запуска игры""" board = [['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']] player = 'X' while True: print_board(board) row = int(input(f"Игрок {player}, введите номер строки (1-3): ")) - 1 col = int(input(f"Игрок {player}, введите номер столбца (1-3): ")) - 1 if board[row][col] == '_': board[row][col] = player if check_win(board, player): print_board(board) print(f"Поздравляем, игрок {player} победил!") break elif all('_' not in row for row in board): print_board(board) print("Ничья!") break else: player = 'O' if player == 'X' else 'X' else: print("Эта ячейка уже занята, попробуйте еще раз.")play_game()
import numpy as npfrom sklearn.ensemble import RandomForestClassifier# функция для генерации случайных игровых ситуацийdef generate_data(n): X = [] y = [] for i in range(n): board = [['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']] player = 'X' while True: if check_win(board, player): break elif all('_' not in row for row in board): break elif player == 'X': # ходит человек, пропускаем pass else: # ходит компьютер, выбираем случайное действие actions = get_actions(board, player) if len(actions) == 0: break action = actions[np.random.choice(len(actions))] board[action[0]][action[1]] = player player = 'O' if player == 'X' else 'X' # добавляем текущее состояние игрового поля в обучающие данные X.append(board_to_features(board, player)) y.append(1 if player == 'X' else 0) return np.array(X), np.array(y)# функция для обучения моделиdef train_model(): X, y = generate_data(10000) model = RandomForestClassifier(n_estimators=100, max_depth=5) model.fit(X, y) return model# функция для запуска игры с использованием обученной моделиdef play_game(model): """Игра крестики-нолики с использованием обученной модели""" board = [['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']] player = 'X' while True: # выводим текущее состояние игрового поля print_board(board) if check_win(board, player): print(f'Player {player} wins!') break elif all('_' not in row for row in board): print('Draw!') break elif player == 'X': # ходит человек row, col = map(int, input('Enter row and column: ').split()) if board[row][col] != '_': print('Invalid move!') continue board[row][col] = player else: # ходит компьютер features = board_to_features(board, player) action = get_best_action(model, features, player) board[action[0]][action[1]] = player player = 'O' if player == 'X' else 'X'# обучаем модельmodel = train_model()# запускаем игруplay_game(model)