Добавить в корзинуПозвонить
Найти в Дзене
Python Pro🐍

Как создать игру “Змейка” на Python: твой первый босс-файт

Yo, кодеры и будущие хакеры! Мы все играли в «Змейку» — это классика, которая затянула миллионы игроков. Но что, если я скажу вам, что вы можете создать эту игру сами? Это не просто круто, это ваш первый настоящий босс-файт в программировании. Сегодня я покажу, как создать игру с нуля, используя Pygame — ваш главный инструмент для разработки игр на Python. Для начала нам нужна библиотека Pygame. Откройте терминал или командную строку и установите её: pip install pygame Теперь создайте файл, например, snake.py. Мы будем писать код по частям, как собираем лего. Наш план: 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(No
Оглавление

Yo, кодеры и будущие хакеры!

Мы все играли в «Змейку» — это классика, которая затянула миллионы игроков. Но что, если я скажу вам, что вы можете создать эту игру сами? Это не просто круто, это ваш первый настоящий босс-файт в программировании. Сегодня я покажу, как создать игру с нуля, используя Pygame — ваш главный инструмент для разработки игр на Python.

Шаг 1: Настраиваем свой "инвентарь"

Для начала нам нужна библиотека Pygame. Откройте терминал или командную строку и установите её:

pip install pygame

Теперь создайте файл, например, snake.py.

Шаг 2: Пишем код. "Собираем" нашу игру

Мы будем писать код по частям, как собираем лего. Наш план:

  1. Создаём игровое поле.
  2. Рисуем змейку.
  3. Управляем змейкой.
  4. Делаем еду и следим за счётом.
  5. Заканчиваем игру.
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: Здесь мы храним координаты каждого кусочка змейки.

Вы — победитель!

Запустив этот скрипт, вы увидите, как на экране появится ваша первая игра. Вы не просто скопировали код, вы создали работающий проект. Это ваш первый "босс-файт" с настоящей программой, и вы его выиграли!

Ваш следующий квест: Добавьте в игру счётчик очков! Поделитесь в комментариях, какую игру вы хотели бы создать после «Змейки». Увидимся на следующем уровне!