🎮 Как сделать игру на питоне Змейку - пошаговая инструкция для начинающих разработчиков!
import pygame
import random
# Инициализация окна игры
pygame.init()
width, height = 640, 480
screen = pygame.display.set_mode((width, height))
# Цвета
black = pygame.Color(0, 0, 0)
white = pygame.Color(255, 255, 255)
red = pygame.Color(255, 0, 0)
# Позиция и размер змейки
snake_position = [100, 50]
snake_body = [[100, 50], [90, 50], [80, 50]]
# Позиция и размер фрукта
fruit_pos = [random.randrange(1, width // 10) * 10, random.randrange(1, height // 10) * 10]
fruit_spawned = True
# Направление и скорость змейки
direction = 'RIGHT'
change_to = direction
snake_speed = 15
# Функция для обновления экрана
def update_screen():
screen.fill(black)
for pos in snake_body:
pygame.draw.rect(screen, white, pygame.Rect(pos[0], pos[1], 10, 10))
pygame.draw.rect(screen, red, pygame.Rect(fruit_pos[0], fruit_pos[1], 10, 10))
pygame.display.flip()
# Главный игровой цикл
while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP and direction != 'DOWN':
change_to = 'UP'
if event.key == pygame.K_DOWN and direction != 'UP':
change_to = 'DOWN'
if event.key == pygame.K_LEFT and direction != 'RIGHT':
change_to = 'LEFT'
if event.key == pygame.K_RIGHT and direction != 'LEFT':
change_to = 'RIGHT'
# Обновление направления
direction = change_to
# Обновление позиции змейки
if direction == 'UP':
snake_position[1] -= 10
if direction == 'DOWN':
snake_position[1] += 10
if direction == 'LEFT':
snake_position[0] -= 10
if direction == 'RIGHT':
snake_position[0] += 10
# Увеличение размера змейки
snake_body.insert(0, list(snake_position))
if snake_position[0] == fruit_pos[0] and snake_position[1] == fruit_pos[1]:
fruit_spawned = False
else:
snake_body.pop()
# Появление нового фрукта
if not fruit_spawned:
fruit_pos = [random.randrange(1, width // 10) * 10, random.randrange(1, height // 10) * 10]
fruit_spawned = True
# Обновление экрана
update_screen()
# Завершение игры при столкновении с границей
if snake_position[0] < 0 or snake_position[0] > width - 10 or snake_position[1] < 0 or snake_position[1] > height - 10:
pygame.quit()
exit()
# Завершение игры при столкновении с телом змейки
for block in snake_body[1:]:
if snake_position[0] == block[0] and snake_position[1] == block[1]:
pygame.quit()
exit()
# Задержка для установки скорости змейки
pygame.time.Clock().tick(snake_speed)
Детальный ответ
Как сделать игру на питоне "змейку"
Змейка – одна из самых популярных игр, которую можно легко создать с использованием языка программирования Python. В этой статье мы расскажем вам, как разработать свою собственную игру "змейка" с использованием Python.
Необходимые инструменты
Для создания игры на питоне "змейка" вам потребуются:
- Установленный интерпретатор Python
- Библиотека Pygame
Установка библиотеки Pygame
Чтобы установить библиотеку Pygame, выполните следующие команды:
pip install pygame
Импорт библиотек и настройка экрана
Перед тем как начать разрабатывать игру, необходимо импортировать библиотеку Pygame и настроить основные параметры игрового экрана:
import pygame
import time
# Инициализация Pygame
pygame.init()
# Размеры экрана
width = 800
height = 600
# Цвета
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
Создание класса для змейки
Следующий шаг – создание класса для змейки. Здесь мы определим все необходимые методы и свойства, которые позволят управлять движением и отрисовкой змейки на экране:
class Snake:
def __init__(self):
self.length = 1
self.positions = [((width // 2), (height // 2))]
self.direction = random.choice([up, down, left, right])
self.color = red
self.score = 0
def get_head_position(self):
return self.positions[0]
def move(self, dir):
cur = self.get_head_position()
x, y = self.direction
new = (((cur[0] + (x*gridsize)) % width), (cur[1] + (y*gridsize)) % height)
if len(self.positions) > 2 and new in self.positions[2:]:
self.reset()
else:
self.positions.insert(0, new)
if len(self.positions) > self.length:
self.positions.pop()
def reset(self):
self.length = 1
self.positions = [((width // 2), (height // 2))]
self.direction = random.choice([up, down, left, right])
self.score = 0
def draw(self, surface):
for p in self.positions:
pygame.draw.rect(surface, self.color, (p[0], p[1], gridsize, gridsize))
Игровой цикл
Последний шаг – написание основной части программы, которая будет отвечать за основной игровой цикл:
def main():
clock = pygame.time.Clock()
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('Змейка')
snake = Snake()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
snake.direction = up
elif event.key == pygame.K_DOWN:
snake.direction = down
elif event.key == pygame.K_LEFT:
snake.direction = left
elif event.key == pygame.K_RIGHT:
snake.direction = right
snake.move()
# Другие действия (проверка столкновений, отрисовка фона и т.д.)
pygame.quit()
if __name__ == '__main__':
main()
Запуск игры
Чтобы запустить игру, вам нужно вызвать функцию main(), как показано ниже:
if __name__ == '__main__':
main()
Заключение
Теперь вы знаете, как сделать игру на питоне "змейка". Успешно разработав свою собственную игру, вы можете дополнить ее дополнительными функциями и усовершенствованиями. Наслаждайтесь созданием игры и продолжайте развиваться в программировании!