Введение
В этом проекте вы научитесь создавать игру Pong с использованием Python и библиотеки Pygame. Pong - это классическая двухигровая аркадная игра, в которой игроки контролируют ракетки, чтобы击球 мячом друг через друга.
Для завершения этого проекта вам нужно выполнить шаги ниже. Мы начнем с создания файлов проекта и настройки игрового окна. Затем мы определим цвета и настроим ракетки и мяч. Наконец, мы будем двигать ракетки и мяч, обрабатывать столкновения и рисовать игровые элементы.
👀 Предварительный просмотр

🎯 Задачи
В этом проекте вы научитесь:
- Как создавать файлы проекта
- Как настраивать игровое окно
- Как настраивать ракетки и мяч
- Как настраивать игровые переменные
- Как настраивать игровой цикл
- Как двигать ракетки
- Как двигать мяч
- Как обрабатывать столкновения мяча
- Как обновлять счета и сбрасывать мяч
- Как обрабатывать столкновения и движение усилителей
- Как рисовать игровые элементы
- Как рисовать счет
- Как обновлять отображение
- Как устанавливать количество кадров в секунду (FPS)
- Как выйти из игры
🏆 Достижения
После завершения этого проекта вы сможете:
- Использовать библиотеку Pygame для создания игрового окна
- Настраивать и двигать игровые объекты, такие как ракетки и мяч
- Обрабатывать столкновения между игровыми объектами
- Обновлять и отображать игровые счета
- Устанавливать количество кадров в секунду (FPS) для игры
- Корректно выйти из игры
Создайте файлы проекта
Создайте файл с именем pong_game.py в своем предпочитаемом редакторе кода или IDE. Это будет главный файл, где вы пишете код для игры Pong.
cd ~/project
touch pong_game.py
sudo pip install pygame
Настройте игровое окно
Внутри файла pong_game.py импортируйте необходимые библиотеки в начале кода:
import pygame
import random
Затем инициализируйте Pygame, вызвав pygame.init():
## Initialize Pygame
pygame.init()
Далее настройте игровое окно, определив ширину, высоту и количество кадров в секунду (FPS):
## Set up the game window
WIDTH = 800
HEIGHT = 400
FPS = 60
Определите цвета, используемые в игре:
## Define colors
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
BLUE = (0, 0, 255)
ORANGE = (255, 165, 0)
BACKGROUND_COLOR = (50, 50, 50)
Создайте игровое окно, задайте заголовок окна и создайте объект часов, чтобы контролировать частоту кадров:
## Set up the game window
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Pong Game")
clock = pygame.time.Clock()
Настройте платформы и мяч
Определите свойства ракеток, такие как ширина, высота, скорость и цвет:
## Set up the paddles
PADDLE_WIDTH = 10
PADDLE_HEIGHT = 60
PADDLE_SPEED = 5
PADDLE_COLOR = WHITE
Создайте два объекта ракеток с помощью конструктора pygame.Rect() и расположите их по центру каждой стороны игрового окна:
paddle1 = pygame.Rect(0, HEIGHT / 2 - PADDLE_HEIGHT / 2, PADDLE_WIDTH, PADDLE_HEIGHT)
paddle2 = pygame.Rect(
WIDTH - PADDLE_WIDTH, HEIGHT / 2 - PADDLE_HEIGHT / 2, PADDLE_WIDTH, PADDLE_HEIGHT
)
Настройте свойства мяча, такие как ширина, высота, скорость и цвет:
## Set up the ball
BALL_WIDTH = 10
BALL_HEIGHT = 10
BALL_SPEED_X = 3
BALL_SPEED_Y = 3
BALL_COLOR = WHITE
Создайте объект мяча с помощью конструктора pygame.Rect() и расположите его по центру игрового окна:
ball = pygame.Rect(
WIDTH / 2 - BALL_WIDTH / 2, HEIGHT / 2 - BALL_HEIGHT / 2, BALL_WIDTH, BALL_HEIGHT
)
Установите начальную скорость мяча в направлениях x и y случайным образом:
ball_speed_x = BALL_SPEED_X * random.choice((1, -1))
ball_speed_y = BALL_SPEED_Y * random.choice((1, -1))
Настройте бонусы (power-ups), такие как ширина, высота, скорость и цвет:
## Set up the power-ups
POWERUP_WIDTH = 10
POWERUP_HEIGHT = 10
POWERUP_SPEED = 2
POWERUP_COLOR = ORANGE
powerup = pygame.Rect(
WIDTH / 2 - POWERUP_WIDTH / 2,
HEIGHT / 2 - POWERUP_HEIGHT / 2,
POWERUP_WIDTH,
POWERUP_HEIGHT,
)
powerup_speed_x = POWERUP_SPEED * random.choice((1, -1))
powerup_speed_y = POWERUP_SPEED * random.choice((1, -1))
powerup_active = False
Настройте игровые переменные
Настройте переменные для отслеживания очков игроков, создайте объект игрового шрифта и определите цвет для отображения счета:
## Set up the game variables
score1 = 0
score2 = 0
game_font = pygame.font.SysFont(None, 48)
SCORE_COLOR = WHITE
Настройте игровой цикл
Создайте булевую переменную running и установите ее в True, чтобы запустить игровой цикл:
## Set up the game loop
running = True
while running:
Внутри игрового цикла обработайте события, перебирая события, которые произошли:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
Перемещайте платформы
Внутри игрового цикла проверяйте нажатия клавиш для перемещения ракеток:
## Move the paddles
keys = pygame.key.get_pressed()
if keys[pygame.K_w] and paddle1.y > 0:
paddle1.y -= PADDLE_SPEED
if keys[pygame.K_s] and paddle1.y < HEIGHT - PADDLE_HEIGHT:
paddle1.y += PADDLE_SPEED
if keys[pygame.K_UP] and paddle2.y > 0:
paddle2.y -= PADDLE_SPEED
if keys[pygame.K_DOWN] and paddle2.y < HEIGHT - PADDLE_HEIGHT:
paddle2.y += PADDLE_SPEED
Перемещайте мяч
Внутри игрового цикла обновляйте позицию мяча:
## Move the ball
ball.x += ball_speed_x
ball.y += ball_speed_y
Обработайте столкновения мяча
Внутри игрового цикла обработайте столкновения мяча с ракетками и стенами:
## Ball collision with paddles
if ball.colliderect(paddle1) or ball.colliderect(paddle2):
ball_speed_x *= -1
## Ball collision with walls
if ball.y > HEIGHT - BALL_HEIGHT or ball.y < 0:
ball_speed_y *= -1
Обновите счета и сбросьте мяч
Внутри игрового цикла обновляйте счета и сбрасывайте мяч, когда он выходит за пределы ракетки:
## Increase the score and reset the ball
if ball.x < 0:
score2 += 1
ball.center = (WIDTH / 2, HEIGHT / 2)
ball_speed_x *= random.choice((1, -1))
ball_speed_y *= random.choice((1, -1))
if ball.x > WIDTH:
score1 += 1
ball.center = (WIDTH / 2, HEIGHT / 2)
ball_speed_x *= random.choice((1, -1))
ball_speed_y *= random.choice((1, -1))
Обработайте столкновения и движение усилителей
Внутри игрового цикла обработайте столкновения усилителей с ракетками и двигайте усилитель:
## Power-up collision with paddles
if powerup.colliderect(paddle1) or powerup.colliderect(paddle2):
powerup_active = True
powerup.x = WIDTH / 2 - POWERUP_WIDTH / 2
powerup.y = HEIGHT / 2 - POWERUP_HEIGHT / 2
## Power-up movement
if powerup_active:
powerup.x += powerup_speed_x
powerup.y += powerup_speed_y
if powerup.x > WIDTH - POWERUP_WIDTH or powerup.x < 0:
powerup_speed_x *= -1
if powerup.y > HEIGHT - POWERUP_HEIGHT or powerup.y < 0:
powerup_speed_y *= -1
Отрисуйте игровые элементы
Внутри игрового цикла отрисовывайте ракетки, мяч, усилитель и счет на игровом окне:
## Draw the game elements
screen.fill(BACKGROUND_COLOR)
pygame.draw.rect(screen, PADDLE_COLOR, paddle1)
pygame.draw.rect(screen, PADDLE_COLOR, paddle2)
pygame.draw.ellipse(screen, BALL_COLOR, ball)
pygame.draw.rect(screen, POWERUP_COLOR, powerup)
Отрисуйте счет
Внутри игрового цикла отрисовывайте счета в верхней части по центру игрового окна:
## Draw the score
score_text = game_font.render(f"{score1} : {score2}", True, SCORE_COLOR)
screen.blit(score_text, (WIDTH / 2 - score_text.get_width() / 2, 10))
Обновите отображение
Внутри игрового цикла обновите экран, чтобы показать изменения:
## Update the display
pygame.display.flip()
Установите FPS
Внутри игрового цикла установите частоту кадров, чтобы контролировать скорость игры:
## Set the FPS
clock.tick(FPS)
Выйти из игры
После игрового цикла добавьте следующую строку, чтобы выйти из Pygame, когда игра завершена:
## Quit the game
pygame.quit()
Переключитесь на рабочий стол и запустите проект с помощью следующей команды:
python pong_game.py
Теперь вы можете играть в игру Pong, используя стрелки на клавиатуре и клавиши W и S.

Резюме
Поздравляем! Вы завершили пошаговый проект по созданию игры Pong с использованием Python и Pygame. Вы узнали, как настроить игровое окно, определить свойства платформ и мяча, обрабатывать игровые события, перемещать платформы и мяч, обрабатывать столкновения и рисовать игровые элементы. Пробуйте различные модификации, чтобы добавить свои собственные улучшения в игру и получить удовольствие от игры!



