Yo, кодеры и будущие хакеры!
Мы все играли в «Змейку» — это классика, которая затянула миллионы игроков. Но что, если я скажу вам, что вы можете создать эту игру сами? Это не просто круто, это ваш первый настоящий босс-файт в программировании. Сегодня я покажу, как создать игру с нуля, используя Pygame — ваш главный инструмент для разработки игр на Python.
Шаг 1: Настраиваем свой "инвентарь"
Для начала нам нужна библиотека Pygame. Откройте терминал или командную строку и установите её:
pip install pygame
Теперь создайте файл, например, snake.py.
Шаг 2: Пишем код. "Собираем" нашу игру
Мы будем писать код по частям, как собираем лего. Наш план:
- Создаём игровое поле.
- Рисуем змейку.
- Управляем змейкой.
- Делаем еду и следим за счётом.
- Заканчиваем игру.
import pygame
import random
# Инициализируем Pygame
pygame.init()
# Настройки экрана
screen_width = 600
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("Змейка")
# Цвета
black = (0, 0, 0)
white = (255, 255, 255)
green = (0, 255, 0)
red = (255, 0, 0)
# Размеры змейки и еды
block_size = 20
snake_speed = 15
# Шрифты для текста
font = pygame.font.SysFont(None, 25)
def message(msg, color):
mesg = font.render(msg, True, color)
screen.blit(mesg, [screen_width / 6, screen_height / 3])
def game_loop():
game_over = False
game_close = False
# Начальные координаты змейки
x1 = screen_width / 2
y1 = screen_height / 2
# Изменение координат
x1_change = 0
y1_change = 0
snake_list = []
snake_length = 1
# Координаты еды
food_x = round(random.randrange(0, screen_width - block_size) / block_size) * block_size
food_y = round(random.randrange(0, screen_height - block_size) / block_size) * block_size
clock = pygame.time.Clock()
while not game_over:
while game_close == True:
screen.fill(black)
message("Ты проиграл! Нажми C - играть снова или Q - выйти", red)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
game_over = True
game_close = False
if event.key == pygame.K_c:
game_loop()
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -block_size
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = block_size
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -block_size
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = block_size
x1_change = 0
# Обновляем координаты змейки
x1 += x1_change
y1 += y1_change
# Закрашиваем экран
screen.fill(black)
# Рисуем еду
pygame.draw.rect(screen, green, [food_x, food_y, block_size, block_size])
snake_head = []
snake_head.append(x1)
snake_head.append(y1)
snake_list.append(snake_head)
# Обрезаем список, чтобы змейка не была слишком длинной
if len(snake_list) > snake_length:
del snake_list[0]
# Рисуем змейку
for x in snake_list:
pygame.draw.rect(screen, white, [x[0], x[1], block_size, block_size])
pygame.display.update()
# Проверяем, съела ли змейка еду
if x1 == food_x and y1 == food_y:
food_x = round(random.randrange(0, screen_width - block_size) / block_size) * block_size
food_y = round(random.randrange(0, screen_height - block_size) / block_size) * block_size
snake_length += 1
# Проверяем на столкновение с границами
if x1 >= screen_width or x1 < 0 or y1 >= screen_height or y1 < 0:
game_close = True
clock.tick(snake_speed)
pygame.quit()
quit()
game_loop()
Разбираем "магию"
- pygame.init(): Инициализируем Pygame.
- pygame.display.set_mode(...): Создаём игровое поле.
- pygame.draw.rect(...): Эта команда рисует прямоугольник, из которых состоят наша змейка и еда.
- pygame.event.get(): Мы получаем все действия игрока (нажатия клавиш, закрытие окна).
- clock.tick(snake_speed): Мы управляем скоростью игры. Чем выше snake_speed, тем быстрее движется змейка.
- snake_list: Здесь мы храним координаты каждого кусочка змейки.
Вы — победитель!
Запустив этот скрипт, вы увидите, как на экране появится ваша первая игра. Вы не просто скопировали код, вы создали работающий проект. Это ваш первый "босс-файт" с настоящей программой, и вы его выиграли!
Ваш следующий квест: Добавьте в игру счётчик очков! Поделитесь в комментариях, какую игру вы хотели бы создать после «Змейки». Увидимся на следующем уровне!