Крестики нолики на Python

Крестики-нолики – это одна из самых популярных игр в мире. Игра проста и понятна даже для детей. Для того, чтобы научиться программировать на Python, можно начать с реализации игры в крестики-нолики. В этой статье мы рассмотрим, как создать игру в крестики-нолики на Python с помощью библиотеки Pygame.

Библиотека Pygame для игры крестики нолики на Python

Для начала нам понадобится установить библиотеку Pygame. Для этого мы можем использовать менеджер пакетов pip:

#
pip install pygame
#

Теперь мы можем приступить к написанию кода. Начнем с импорта необходимых библиотек:

#
import pygame
import sys
#

Создание игры крестики нолики на Python

Далее мы инициализируем библиотеку Pygame и создадим окно для игры:

#
pygame.init()
screen = pygame.display.set_mode((600, 600))
pygame.display.set_caption('Tic Tac Toe')
#

Теперь мы можем нарисовать игровое поле. Для этого мы используем функцию draw.line():

# Рисуем вертикальные линии
pygame.draw.line(screen, (0, 0, 0), (200, 0), (200, 600), 5)
pygame.draw.line(screen, (0, 0, 0), (400, 0), (400, 600), 5)
# Рисуем горизонтальные линии
pygame.draw.line(screen, (0, 0, 0), (0, 200), (600, 200), 5)
pygame.draw.line(screen, (0, 0, 0), (0, 400), (600, 400), 5)
#

Реализация ходов игры

Теперь мы можем добавить возможность игрокам походить. Для этого мы будем использовать цикл while:

#
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        if event.type == pygame.MOUSEBUTTONDOWN:
            # Получаем координаты клика
            x, y = event.pos
            # Определяем клетку, в которую кликнул игрок
            if x < 200:
                col = 0
            elif x < 400:
                col = 1
            else:
                col = 2
            if y < 200:
                row = 0
            elif y < 400:
                row = 1
            else:
                row = 2
            # Рисуем крестик или нолик
            if board[row][col] == 0:
                board[row][col] = player
                if player == 1:
pygame.draw.circle(screen, (255, 0, 0), (x, y), 50, 5)
                    player = 2
                else:
                    pygame.draw.line(screen, (0, 0, 255), (x - 50, y - 50), (x + 50, y + 50), 5)
                    pygame.draw.line(screen, (0, 0, 255), (x + 50, y - 50), (x - 50, y + 50), 5)
                    player = 1
    pygame.display.update()

Проверка победителя в игре

В конце мы добавим проверку на победу:

# Проверка на победу
for row in range(3):
    if board[row][0] == board[row][1] == board[row][2] != 0:
        print('Player', board[row][0], 'wins!')
        sys.exit()
for col in range(3):
    if board[0][col] == board[1][col] == board[2][col] != 0:
        print('Player', board[0][col], 'wins!')
        sys.exit()
if board[0][0] == board[1][1] == board[2][2] != 0:
    print('Player', board[0][0], 'wins!')
    sys.exit()
if board[2][0] == board[1][1] == board[0][2] != 0:
    print('Player', board[2][0], 'wins!')
    sys.exit()

Вот и все! Теперь мы можем запустить нашу игру и поиграть в крестики-нолики. Надеюсь, эта статья помогла вам научиться программировать на Python и реализовать игру в крестики-нолики.

  Шахматы на Python

Полный код игры «Крестики нолики» на Python

import random
# Создаем список для игрового поля
board = [" " for i in range(9)]
# Функция для вывода игрового поля
def print_board():
    row1 = "| {} | {} | {} |".format(board[0], board[1], board[2])
    row2 = "| {} | {} | {} |".format(board[3], board[4], board[5])
    row3 = "| {} | {} | {} |".format(board[6], board[7], board[8])
    print()
    print(row1)
    print(row2)
    print(row3)
    print()
# Функция для проверки победителя
def winner(board):
    # Варианты победных комбинаций
    win_comb = ((0, 1, 2), (3, 4, 5), (6, 7, 8), (0, 3, 6), (1, 4, 7), (2, 5, 8), (0, 4, 8), (2, 4, 6))
# Проверяем каждую комбинацию
    for each in win_comb:
        if board[each[0]] == board[each[1]] == board[each[2]] == "X":
            return "Игрок победил!"
        elif board[each[0]] == board[each[1]] == board[each[2]] == "O":
            return "Компьютер победил!"
# Если ничья
    if " " not in board:
        return "Ничья!"
 # Если игра продолжается
    return None
# Функция для хода компьютера
def computer_move(board):
    # Проверяем возможность победы компьютера
    for i in range(0, 9):
        if board[i] == " ":
            board[i] = "O"
            if winner(board) == "Компьютер победил!":
                print("Компьютер выбрал ячейку {}".format(i + 1))
                return
            else:
                board[i] = "
 # Проверяем возможность победы игрока
    for i in range(0, 9):
        if board[i] == " ":
            board[i] = "X"
            if winner(board) == "Игрок победил!":
                board[i] = "O"
                print("Компьютер выбрал ячейку {}".format(i + 1))
                return
            else:
                board[i] = " "
# Если нет возможности победить, то делаем случайный ход
    while True:
        random.seed()
        computer_choice = random.randint(0, 8)
        if board[computer_choice] == " ":
            board[computer_choice] = "O"
            print("Компьютер выбрал ячейку {}".format(computer_choice + 1))
            break
# Функция для хода игрока
def player_move(board):
    # Проверяем введенное значение
    while True:
        player_choice = int(input("Введите номер ячейки (1-9): "))
        if player_choice in range(1, 10):
            if board[player_choice - 1] == " ":
                board[player_choice - 1] = "X"
                break
            else:
                print("Ячейка уже занята!")
        else:
            print("Неверный номер ячейки!")
# Функция для начала игры
def game():
    print_board()
while True:
        player_move(board)
        print_board()
        if winner(board):
            print(winner(board))
            break
        computer_move(board)
        print_board()
        if winner(board):
            print(winner(board))
            break
game()

Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Python для начинающих
Подписаться
Уведомить о
guest
1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
fdsf
fdsf
1 месяц назад

super

1
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x