Как создать игру змейку на питоне - полный гайд для начинающих разработчиков 🐍🎮
Как создать игру змейку на питоне
Создание игры "Змейка" на питоне - это отличный способ начать изучение разработки игр. Вот пример простого решения.
import pygame
import random
# Инициализация игры
pygame.init()
# Определение цветов
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLACK = (0, 0, 0)
# Определение размеров окна
window_width = 800
window_height = 600
# Создание окна
window = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption("Змейка")
# Инициализация параметров змейки
snake_block = 10
snake_speed = 15
# Функция для рисования змейки
def draw_snake(snake_block, snake_list):
for x in snake_list:
pygame.draw.rect(window, GREEN, [x[0], x[1], snake_block, snake_block])
# Основной игровой цикл
def game_loop():
game_over = False
game_close = False
# Задание начальных координат змейки
x1 = window_width / 2
y1 = window_height / 2
x1_change = 0
y1_change = 0
# Инициализация списка координат змейки
snake_List = []
Length_of_snake = 1
# Генерация случайных координат для яблока
foodx = round(random.randrange(0, window_width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, window_height - snake_block) / 10.0) * 10.0
# Основной игровой цикл
while not game_over:
while game_close:
# Вывод сообщения при поражении игрока
font_style = pygame.font.SysFont(None, 50)
message = font_style.render("Вы проиграли! Нажмите Q-выход или C-начать заново", True, RED)
window.blit(message, [window_width / 6, window_height / 3])
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 = -snake_block
y1_change = 0
if event.key == pygame.K_RIGHT:
x1_change = snake_block
y1_change = 0
if event.key == pygame.K_UP:
y1_change = -snake_block
x1_change = 0
if event.key == pygame.K_DOWN:
y1_change = snake_block
x1_change = 0
# Обработка выхода за границы экрана
if x1 >= window_width or x1 < 0 or y1 >= window_height or y1 < 0:
game_close = True
# Изменение координат змейки
x1 += x1_change
y1 += y1_change
# Очистка окна
window.fill(BLACK)
# Отрисовка яблока
pygame.draw.rect(window, RED, [foodx, foody, snake_block, snake_block])
# Обновление списка координат змейки
snake_Head = []
snake_Head.append(x1)
snake_Head.append(y1)
snake_List.append(snake_Head)
if len(snake_List) > Length_of_snake:
del snake_List[0]
# Обработка столкновений
for x in snake_List[:-1]:
if x == snake_Head:
game_close = True
# Отрисовка змейки
draw_snake(snake_block, snake_List)
# Обновление окна
pygame.display.update()
# Обработка поедания яблока
if x1 == foodx and y1 == foody:
foodx = round(random.randrange(0, window_width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, window_height - snake_block) / 10.0) * 10.0
Length_of_snake += 1
# Определение скорости змейки
pygame.time.Clock().tick(snake_speed)
pygame.quit()
quit()
# Запуск игры
game_loop()
Этот код создает окно для игры "Змейка" и реализует движение змейки, поедание яблок и обработку столкновений. Вы можете использовать этот код в качестве отправной точки для создания своей версии игры "Змейка" на питоне. Удачи!
Детальный ответ
Как создать игру змейку на питоне
Добро пожаловать! Сегодня мы разберем, как создать игру змейку на питоне. Змейка - это классическая и увлекательная игра, которая поможет вам улучшить свои навыки программирования на питоне. Давайте начнем!
Шаг 1: Установка библиотеки Pygame
Перед тем, как приступить к созданию игры, убедитесь, что у вас установлена библиотека Pygame. Она предоставляет нам необходимые инструменты для создания графического интерфейса и управления в игре.
pip install pygame
Шаг 2: Создание окна игры
Для начала, создадим окно игры. Воспользуемся возможностями Pygame для создания графического окна заданного размера:
import pygame
# инициализация Pygame
pygame.init()
# задаем ширину и высоту окна
width = 400
height = 400
# создаем окно игры
window = pygame.display.set_mode((width, height))
pygame.display.set_caption("Змейка")
Шаг 3: Создание головы змейки
Теперь создадим голову змейки и сделаем ее перемещение по окну. Для этого нам понадобится переменная, чтобы хранить координаты головы:
# задаем начальные координаты головы змейки
x = 200
y = 200
# задаем скорость перемещения головы змейки
speed = 10
# основной цикл игры
running = True
while running:
# обрабатываем события
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# движение головы змейки
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
x -= speed
if keys[pygame.K_RIGHT]:
x += speed
if keys[pygame.K_UP]:
y -= speed
if keys[pygame.K_DOWN]:
y += speed
# очищаем экран
window.fill((0, 0, 0))
# рисуем голову змейки
pygame.draw.rect(window, (255, 0, 0), (x, y, 10, 10))
# обновляем экран
pygame.display.update()
# завершение игры
pygame.quit()
Шаг 4: Добавление еды для змейки
Давайте добавим еду для змейки, чтобы она могла расти. Для этого нам понадобится переменная, чтобы хранить координаты еды:
# задаем начальные координаты еды для змейки
food_x = 100
food_y = 100
# добавляем проверку на столкновение с едой
if x == food_x and y == food_y:
# змейка съела еду, увеличиваем ее размер
# изменяем координаты еды
Шаг 5: Добавление тела змейки
Чтобы змейка могла расти, создадим список, в котором будем хранить координаты каждого сегмента тела змейки:
# создаем список для хранения координат сегментов тела змейки
snake = []
# добавляем голову змейки в список
snake.append((x, y))
# если змейка съела еду, добавляем сегмент в список
if x == food_x and y == food_y:
# добавляем новый сегмент в начало списка
snake.insert(0, (x, y))
Далее, в основном цикле игры, необходимо отрисовать каждый сегмент змейки:
# очищаем экран
window.fill((0, 0, 0))
# рисуем голову змейки
pygame.draw.rect(window, (255, 0, 0), (x, y, 10, 10))
# рисуем каждый сегмент тела змейки
for segment in snake:
pygame.draw.rect(window, (0, 255, 0), (segment[0], segment[1], 10, 10))
# обновляем экран
pygame.display.update()
Шаг 6: Проверка на столкновение с границами
Чтобы змейка не выходила за пределы окна игры, добавим проверку на столкновение головы змейки с границами:
# проверяем столкновение с границами
if x < 0 or x > width - 10 or y < 0 or y > height - 10:
running = False
Шаг 7: Добавление зацикленности движения
Теперь займемся зацикленностью движения змейки. Для этого будем использовать переменные для определения направления движения:
# задаем начальное направление движения
direction = "right"
# обрабатываем события клавиатуры
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and direction != "right":
direction = "left"
if keys[pygame.K_RIGHT] and direction != "left":
direction = "right"
if keys[pygame.K_UP] and direction != "down":
direction = "up"
if keys[pygame.K_DOWN] and direction != "up":
direction = "down"
# двигаем змейку в заданном направлении
if direction == "left":
x -= speed
if direction == "right":
x += speed
if direction == "up":
y -= speed
if direction == "down":
y += speed
Шаг 8: Добавление игрового цикла
Чтобы игра была интерактивной, добавим игровой цикл, который будет обрабатывать все события и обновлять экран:
# создаем игровой цикл
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# обработка событий клавиатуры
# движение змейки
# проверка на столкновение с границами
# добавление еды для змейки
# добавление тела змейки
# очистка экрана
# отрисовка головы змейки
# отрисовка тела змейки
# обновление экрана
# завершение игры
pygame.quit()
Шаг 9: Заключение
Поздравляю! Вы успешно создали игру "Змейка" на питоне. В этой статье мы рассмотрели основные шаги создания игры, включая установку библиотеки Pygame, создание окна игры, перемещение головы змейки, добавление еды и тела змейки, проверку на столкновение и зацикленность движения. Теперь вы можете добавить свои собственные улучшения и идеи, чтобы сделать игру еще более интересной. Желаю вам удачи в изучении программирования на питоне и создании новых увлекательных игр!