импортировать pygame

импортировать случайный

# Инициализировать Pygame

pygame.init()

# Определяем цвета

ЧЕРНЫЙ = (0, 0, 0)

ЗЕЛЕНЫЙ = (0, 255, 0)

КРАСНЫЙ = (255, 0, 0)

СИНИЙ = (0, 0, 255)

# Установить ширину и высоту каждого сегмента змейки

ширина_сегмента = 15

высота_сегмента = 15

сегмент_маржа = 3

# Установить размер игрового окна

ширина_дисплея = 800

display_height = 600

# Установить начальную скорость змейки

змея_скорость = 15

# Создаем окно игры

game_display = pygame.display.set_mode((display_width, display_height))

pygame.display.set_caption("Змеиная игра")

# Определяем игровые часы

часы = pygame.time.Clock()

# Функция для отображения змеи в окне игры

защита draw_snake (snake_segments):

для сегмента в змее_сегменты:

pygame.draw.rect(game_display, ЗЕЛЕНЫЙ, [сегмент[0], сегмент[1], ширина_сегмента, высота_сегмента])

# Функция для генерации случайных позиций для еды

определение generate_food_position():

x = округлый (random.randrange (0, display_width — segment_width) / 15,0) * 15,0

y = round(random.randrange(0, display_height — segment_height) / 15,0) * 15,0

вернуть х, у

# Функция для отображения еды в окне игры

def draw_food (food_position, цвет):

pygame.draw.rect(game_display, color, [food_position[0], food_position[1], segment_width, segment_height])

# Основной игровой цикл

определение game_loop():

game_over = Ложь

game_quit = Ложь

# Инициализировать начальную позицию и направление змеи

х = ширина_экрана / 2

у = высота_отображения / 2

х_изменить = 0

у_изменение = 0

# Создать пустой список для представления змеи

змея_сегменты = []

# Инициализировать длину змеи и оценку

длина змеи = 1

оценка = 0

# Генерируем начальные позиции для еды

food_position1 = generate_food_position()

food_position2 = generate_food_position()

пока не game_quit:

пока игра_овер:

# Игра окончена

game_display.fill(ЧЕРНЫЙ)

шрифт = pygame.font.Font (нет, 36)

text = font.render("Игра окончена! Нажмите Q, чтобы выйти, или C, чтобы играть снова", True, RED)

game_display.blit(текст, [display_width / 2 — text.get_width() / 2, display_height / 2 — text.get_height() / 2])

pygame.display.update()

для события в pygame.event.get():

если event.type == pygame.ВЫЙТИ:

game_quit = Истина

game_over = Ложь

Элиф event.type == pygame.KEYDOWN:

если event.key == pygame.K_q:

game_quit = Истина

game_over = Ложь

Элиф event.key == pygame.K_c:

game_loop()

для события в pygame.event.get():

если event.type == pygame.ВЫЙТИ:

game_quit = Истина

Элиф event.type == pygame.KEYDOWN:

если event.key == pygame.K_LEFT:

x_change = -segment_width — поле_сегмента

у_изменение = 0

elif event.key == pygame.K_RIGHT:

x_change = ширина_сегмента + поле_сегмента

у_изменение = 0

Элиф event.key == pygame.K_UP:

y_change = -segment_height — поле_сегмента

х_изменить = 0

Элиф event.key == pygame.K_DOWN:

y_change = высота_сегмента + поле_сегмента

х_изменить = 0

# Обновить положение змеи

х += х_изменить

y += y_change

# Проверяем, не задевает ли змея границу

если x ›= display_width или x ‹ 0 или y ›= display_height или y ‹ 0:

game_over = Истина

# Обновить отображение игры

game_display.fill(ЧЕРНЫЙ)

# Рисуем еду

draw_food (food_position1, КРАСНЫЙ)

draw_food (food_position2, СИНИЙ)

# Нарисуйте и обновите змею

змея_голова = []

змея_голова.append(х)

змея_голова.append(y)

змея_сегменты.добавление(snake_head)

если len(snake_segments) › длина змеи:

сегменты_змей[0]

# Проверяем, бьет ли змея саму себя

для сегмента в змее_сегменты[:-1]:

если сегмент == змея_голова:

game_over = Истина

draw_snake (snake_segments)

# Проверяем, ест ли змея еду

если x == food_position1[0] и y == food_position1[1]:

food_position1 = generate_food_position()

длина змеи += 1

оценка += 1

elif x == food_position2[0] и y == food_position2[1]:

food_position2 = generate_food_position()

длина змеи += 1

оценка += 1

pygame.display.update()

часы.тик (snake_speed)

pygame.выйти()

# Начало игры

game_loop()

Первоначально опубликовано на https://electronicsforlearning.blogspot.com.