Код для простой пиксельной игры в стиле змейка, которая ест фрукты и растет
python
import pygame
import random
# Инициализация pygame
pygame.init()
# Установка размеров окна
window_width = 800
window_height = 600
window = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption("Змейка")
# Установка цветов
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
# Установка размеров ячейки и скорости змейки
cell_size = 20
snake_speed = 15
# Определение функции для отображения текста на экране
def draw_text(text, font, color, x, y):
text_surface = font.render(text, True, color)
text_rect = text_surface.get_rect()
text_rect.center = (x, y)
window.blit(text_surface, text_rect)
# Определение функции для отрисовки змейки
def draw_snake(snake):
for pos in snake:
pygame.draw.rect(window, white, (pos[0], pos[1], cell_size, cell_size))
# Определение функции для запуска игры
def game_loop():
game_over = False
game_quit = False
# Инициализация координат змейки
snake_x = window_width / 2
snake_y = window_height / 2
snake_dx = 0
snake_dy = 0
# Инициализация координат фрукта
fruit_x = round(random.randrange(0, window_width - cell_size) / cell_size) * cell_size
fruit_y = round(random.randrange(0, window_height - cell_size) / cell_size) * cell_size
# Инициализация длины змейки
snake_length = 1
snake = []
snake_speed_tick = 0
while not game_quit:
while game_over:
window.fill(black)
draw_text("Игра окончена. Нажмите Q для выхода или С для начала новой игры", pygame.font.SysFont(None, 25), white, window_width / 2, window_height / 2)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_quit = True
game_over = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
game_quit = True
game_over = False
if event.key == pygame.K_c:
game_loop()
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_quit = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
snake_dx = -cell_size
snake_dy = 0
elif event.key == pygame.K_RIGHT:
snake_dx = cell_size
snake_dy = 0
elif event.key == pygame.K_UP:
snake_dx = 0
snake_dy = -cell_size
elif event.key == pygame.K_DOWN:
snake_dx = 0
snake_dy = cell_size
if not game_over:
snake_x += snake_dx
snake_y += snake_dy
if snake_x < 0 or snake_x >= window_width or snake_y < 0 or snake_y >= window_height:
game_over = True
elif [snake_x, snake_y] in snake[:-1]:
game_over = True
snake.append([snake_x, snake_y])
if len(snake) > snake_length:
del snake[0]
for pos in snake[:-1]:
if pos == [snake_x, snake_y]:
game_over = True
window.fill(black)
draw_snake(snake)
pygame.draw.rect(window, red, (fruit_x, fruit_y, cell_size, cell_size))
pygame.display.update()
if snake_x == fruit_x and snake_y == fruit_y:
fruit_x = round(random.randrange(0, window_width - cell_size) / cell_size) * cell_size
fruit_y = round(random.randrange(0, window_height - cell_size) / cell_size) * cell_size
snake_length += 1
snake_speed_tick += 1
if snake_speed_tick > snake_speed:
snake_speed_tick = 0
pygame.time.Clock().tick(snake_speed)
pygame.quit()
# Запуск игры
game_loop()
В данном коде мы используем библиотеку pygame для разработки игры. Мы создаем окно размером 800х600 пикселей и устанавливаем заголовок "Змейка". Затем мы определяем некоторые цвета, размеры ячейки змейки и скорость змейки.
Далее, у нас есть функция `draw_text()`, которая отображает текст на экране. Мы также определяем функцию `draw_snake()`, которая отрисовывает змейку на экране.
Функция `game_loop()` является главной функцией игры. Она содержит основной игровой цикл, в котором мы обрабатываем события пользовательского ввода, отслеживаем столкновения змейки с границами окна и с самой собой, а также определяем моменты поедания фруктов и роста змейки.
Игра начинается со стартового экрана, на котором отображается текст "Игра окончена. Нажмите Q для выхода или С для начала новой игры". Мы также обрабатываем события нажатия клавиш "Q" и "C" для выхода из игры или начала новой игры соответственно.
Затем мы запускаем главный игровой цикл, который выполняется до тех пор, пока игра не будет остановлена. Внутри цикла мы обрабатываем события пользовательского ввода. Если игра не закончена, мы обновляем позицию змейки, проверяем столкновения и отображаем змейку и фрукт на экране. Если змейка съедает фрукт, она увеличивает свою длину и появляется новый фрукт на случайной позиции. Также мы ограничиваем скорость змейки с помощью объекта `pygame.time.Clock()`, чтобы игра не шла слишком быстро.
Когда игра заканчивается, мы прекращаем выполнение основного игрового цикла и завершаем работу pygame.
Запуск игры происходит с помощью вызова функции `game_loop()`, которая запускает главный игровой цикл.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет