Найти тему
Заходи в Ай-Ти

Пошаговая инструкция "Змейки" на пайтон (код). Делаем игры на питоне

Оглавление

Игры «Змейки» на протяжении десятилетий были любимой классикой в ​​мире компьютерных игр. Возможно, вы видели, как ваши родители или даже бабушки и дедушки наслаждались этими простыми, но захватывающими играми на своих старинных мобильных телефонах или компьютерах. Но знаете ли вы, что можно создать свою собственную версию игры «Змейка», используя язык программирования Python?

В этой статье мы рассмотрим, как создать базовую игру-змейку на Python с использованием библиотеки Pygame. Pygame — мощный инструмент, позволяющий создавать увлекательные интерактивные игры с использованием Python. К концу этого урока вы получите четкое представление о процессе разработки игр и сможете создать свою собственную игру о змеях.

Змеиные игры приобрели популярность в конце 1970-х — начале 1980-х годов, когда они были представлены на игровых автоматах. Они быстро стали сенсацией из-за своей простоты и захватывающего характера. Цель проста: управлять змеей и направлять ее к поеданию пищи, избегая при этом столкновения с собственным телом или границами игры. С каждым успешным потреблением змея становится длиннее, что затрудняет маневрирование.

Теперь, благодаря библиотеке Pygame, вы можете воссоздать эту классическую игру, придав ей свой собственный уникальный вид. Pygame предоставляет набор функций и инструментов, специально созданных для разработки игр, что делает его отличным выбором для начинающих разработчиков игр.

Мы начнем с нуля, проведя вас через каждый этап процесса: от настройки среды разработки до добавления интересных функций, таких как звуковые эффекты и системы оценки. К концу у вас будет полнофункциональная игра-змейка, которой вы сможете с гордостью поделиться с друзьями и семьей.

Настройка среды разработки Pygame

Прежде чем мы углубимся в создание нашей игры-змейки на Python, нам нужно убедиться, что у нас установлены необходимые инструменты. Прежде всего, нам нужно установить Python — язык программирования, который мы будем использовать. Вы можете загрузить последнюю версию Python с официального сайта Python (python.org) и следовать инструкциям по установке, специфичным для вашей операционной системы.

После установки Python мы можем перейти к установке Pygame. Pygame — сторонняя библиотека, предоставляющая функциональные возможности для создания игр на Python. Чтобы установить Pygame, откройте командную строку или терминал и введите следующую команду:

-2

Эта команда загрузит и установит библиотеку Pygame в вашу систему. После завершения установки мы готовы перейти к следующему шагу.

Кроме того, вы также можете пропустить весь процесс загрузки и установки, используя Lightly IDE. После входа в свою рабочую область просто создайте проект Python и выберите «Проект Python Pygame» в раскрывающемся списке «Шаблон».

Чтобы наша игра была организована, рекомендуется создать новый проект Python. Это обеспечит хранение всех необходимых файлов и ресурсов в одном месте. Вот пошаговое руководство по настройке нового проекта Python:

  1. Создайте на своем компьютере новую папку с подходящим названием для вашего проекта, например «SnakeGame».
  2. Откройте свой любимый текстовый редактор или интегрированную среду разработки (IDE) и создайте новый файл в папке проекта.
  3. Сохраните файл с расширением файла сценария Python, например «.py». Например, вы можете сохранить его как «snake_game.py».

Импорт библиотек и модулей Pygame в Python

Теперь, когда наш проект настроен, давайте начнем с импорта необходимых библиотек и модулей в наш скрипт Python. В данном случае мы будем использовать библиотеку Pygame для разработки игр. Откройте файл «snake_game.py» в текстовом редакторе или IDE и добавьте в начало следующие строки кода:

-3

Библиотека pygame предоставляет необходимые функции и классы для разработки игр, а модуль sys позволяет нам взаимодействовать с системой и обрабатывать события.

Импортировав библиотеки и модули, мы готовы приступить к созданию нашей игры-змейки. В следующем разделе мы начнем с создания окна игры и обработки ввода пользователя.

Читайте тайже: Клонирую голос Майкла Джексона с помощью Искуственного Интелекта и Python

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

Теперь, когда у нас есть готовая среда разработки, пришло время создать окно игры. Мы будем использовать Pygame для обработки окна и графики. Добавьте следующие строки кода после операторов импорта в файл «snake_game.py»:

-4
-5

Функция pygame.init() инициализирует все модули Pygame, которые мы будем использовать. Важно вызывать эту функцию перед любой другой функцией Pygame. Далее мы определяем размеры игрового окна, используя переменные window_width и window_height. Отрегулируйте эти значения в соответствии с желаемым размером окна. Функция pygame.display.set_mode() создает фактическое окно игры, а pygame.display.set_caption() устанавливает заголовок окна.

Теперь, когда у нас настроено окно игры, нам нужно обрабатывать ввод пользователя и реагировать на события. Мы будем использовать основной игровой цикл для постоянного обновления состояния игры и обработки событий. Добавьте следующий код под настройкой окна:

-6
-7

В этом фрагменте кода мы начинаем с текущей переменной, установленной в значение True, которая управляет основным игровым циклом. Внутри цикла мы используем pygame.event.get() для получения списка всех событий, произошедших с момента последней итерации. Мы перебираем эти события с помощью цикла for и проверяем, является ли тип события pygame.quit(). Это событие происходит, когда пользователь закрывает окно игры, и в этом случае мы устанавливаем значение False для выхода из цикла.

Между разделами обработки событий и рендеринга вы найдете две строки с комментариями: # Update game state and # Render graphics. Это заполнители, куда мы добавим код для обновления состояния игры и отрисовки графики в последующих разделах.

Наконец, мы вызываем pygame.display.update(), чтобы обновить окно игры и отобразить все внесенные изменения. Эта функция вызывается в основном цикле, чтобы гарантировать обновление окна в каждом кадре.

В конце кода у нас есть необходимые строки для выхода из игры и очистки ресурсов при выходе из цикла.

-8

Ни змеи, ни еды пока нет. Но после настройки окна игры и обработки событий мы готовы перейти к созданию змеи. В следующем разделе мы создадим внешний вид змеи и определим ее движение.

Читайте также: Рассказываю как "спарсить" изображения в Telegram с помощью Python

Создание змеи на Python с использованием библиотеки Pygame

Теперь, когда у нас настроено окно игры, давайте перейдем к созданию змеи. Начнем с проектирования его внешнего вида и определения его исходного положения. Добавьте следующий код после строки pygame.display.update() в файл «snake_game.py»:

-9
-10

В приведенном выше коде мы определяем свойства змеи. Переменная Snake_color содержит значения RGB (0, 255, 0) для зеленого цвета. Не стесняйтесь менять цвет по своему усмотрению, изменяя эти значения. Переменная Snake_size представляет ширину и высоту сегментов тела змеи, и вы можете настроить ее по своему желанию.

Мы устанавливаем начальное положение головы змеи, используя Snake_x и Snake_y. Здесь мы разместим его в центре игрового окна, разделив размеры окна на 2.

Наконец, мы создаем прямоугольник змеи с помощью pygame.Rect(), который представляет тело змеи. Этот прямоугольник позволяет нам легко манипулировать змеей и рисовать ее в окне игры.

Определение движения и контроля змеи:

Теперь, когда у нас есть исходное положение змеи, давайте определим ее движение и управление. Добавьте следующий код после строки Snake = pygame.Rect(snake_x, Snake_y, Snake_size, Snake_size):

-11
-12

В приведенном выше фрагменте кода мы вводим две переменные, Snake_dx и Snake_dy, которые представляют направление движения змеи вдоль оси X и Y соответственно. Мы инициализируем обе переменные значением 0, что указывает на то, что змея начинает работу в состоянии покоя.

Далее мы вводим переменную Snake_speed_multiplier для управления скоростью змеи. Вы можете изменить это значение, чтобы настроить скорость по своему вкусу.

Наконец, мы обновляем положение змеи, добавляя соответствующие изменения (snake_dx * Snake_speed * Snake_speed_multiplier и Snake_dy * Snake_speed * Snake_speed_multiplier) к ее координатам x и y. Это позволяет нам плавно перемещать змею по окну игры.

Обработка столкновений с границами игрового окна:

Чтобы гарантировать, что змея останется в пределах игрового окна, нам нужно обработать столкновения с границами. Добавьте следующий код после раздела движения змеи:

-13

В этом коде мы проверяем, является ли координата x змеи меньше 0 или больше ширины игрового окна, или же координата y змеи меньше 0 или больше высоты окна. Если какое-либо из этих условий верно, это означает, что змея достигла границ окна.

В случае столкновения мы можем управлять логикой игры, установив для параметра run значение False, что приведет к выходу из основного игрового цикла и завершению игры.

Реализация еды для змеи

Чтобы сделать игру более интересной, нам нужно добавить змее еду, которую она сможет есть. Давайте придумаем внешний вид еды и случайным образом разместим ее в игровом окне. Добавьте следующий код после раздела змеи в файле «snake_game.py»:

-14
-15

В приведенном выше коде мы вводим свойства еды, такие как food_color (красный цвет) и food_size. Измените эти значения в соответствии со своими предпочтениями.

Затем мы генерируем случайные координаты x и y для еды, используя метод random.randint(). Диапазон случайных значений гарантирует, что еда будет помещена в пределы игрового окна.

Наконец, мы создаем прямоугольник еды с помощью pygame.Rect() и передаем сгенерированные координаты и размер еды.

Обнаружение столкновений змеи и еды

Теперь, когда у нас есть еда, помещенная в игровое окно, нам нужно определить, когда змея сталкивается с ней. Добавьте следующий код внутри основного игрового цикла перед разделом рендеринга:

-16
-17

Приведенный выше код проверяет, сталкивается ли змея с едой, используя метод colliderect(). Если произошло столкновение, это означает, что змея съела пищу.

При обнаружении столкновения мы обновляем длину змеи, увеличивая Snake_size и увеличивая оценку на 1.

Чтобы обеспечить постоянные испытания, мы также размещаем еду в новой случайной позиции, генерируя новые координаты для прямоугольника еды.

Обновление длины и очков змеи после поедания еды:

Теперь, когда мы обнаружили столкновение змеи с едой, нам нужно обновить длину и оценку змеи. Добавьте следующий код перед разделом рендеринга:

-18

В этом коде мы вводим список Snake_body для отслеживания сегментов тела змеи. Когда змея съедает еду, мы добавляем в список Snake_body новый прямоугольник, представляющий сегмент тела змеи.

Если длина Snake_body превышает Snake_size (желаемая длина змеи), мы удаляем самый старый сегмент из списка с помощью del, чтобы гарантировать, что змейка сохранит свою длину.

Не забудьте инициализировать список Snake_body перед основным игровым циклом:

-19

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

Читайте также: Учу камеру определять цвета различных предметов с помощью Python и библиотеки OpenCV

Игра окончена и перезапущена для игры Snake с Pygame

Чтобы гарантировать, что игра закончится, когда змея столкнется с собственным телом, нам нужно проверить наличие столкновений между головой змеи и сегментами ее тела. Добавьте следующий код внутри основного игрового цикла перед разделом рендеринга:

-20

В этом коде мы проверяем, превышает ли длина Snake_body 1 (чтобы убедиться, что существует хотя бы один сегмент тела) и сталкивается ли голова змеи с каким-либо из сегментов ее тела. Если происходит столкновение, это означает, что змея столкнулась сама с собой, и мы устанавливаем значение False, чтобы завершить игру.

Когда игра закончится, мы хотим отобразить сообщение об окончании игры вместе с окончательным счетом. Добавьте следующий код после основного игрового цикла:

-21
-22

В этом коде мы определяем два объекта шрифта: game_over_font и Score_font, чтобы настроить шрифт и размер текста. Вы можете изменить эти шрифты по своему усмотрению.

Затем мы используем render() для создания текстовых поверхностей для сообщения об окончании игры и окончательного результата. Сообщение отображается белым цветом как «Игра окончена», а счет отображается как «Окончательный счет:», за которым следует значение переменной счета.

Функция blit() используется для копирования (рисования) текстовых поверхностей в окне игры. Мы позиционируем игру поверх сообщения и размещаем текст в центре окна.

Реализация опции перезапуска игры Snake с помощью Pygame

Чтобы позволить игроку перезапустить игру после ее окончания, мы можем добавить опцию перезапуска. Добавьте следующий код после отображения сообщения об окончании игры и окончательного результата:

-23
-24

В этом коде мы отображаем сообщение о перезапуске «Нажмите R, чтобы перезапустить» под сообщением об окончании игры и окончательным счетом. После отображения сообщения о перезапуске мы входим в новый цикл while, чтобы постоянно проверять, нужно ли нажимать клавишу «R». Если игрок нажимает клавишу «R», мы перезагружаем игру, устанавливая для параметра run значение True, очищая список Snake_body, сбрасывая положение змеи и сбрасывая счет на 0.

Управление скоростью и сложностью игры Python Snake

Чтобы сделать игру более увлекательной, мы можем добавить контроль над скоростью и сложностью. Мы можем ввести множитель скорости, который увеличивается по мере того, как змея съедает больше еды. Добавьте следующий код в основной игровой цикл после обновления положения змеи

-25

В этом коде мы проверяем, больше ли балл 0 и делится ли он на 5 без остатка. Если оба условия соблюдены, мы увеличиваем Snake_speed_multiplier на 0,1. Это увеличивает скорость змеи, постепенно усложняя игру по мере увеличения счета.

Не стесняйтесь регулировать значение приращения по своему усмотрению, чтобы контролировать скорость увеличения скорости.

Реализация системы подсчета очков в коде игры Python Snake

Чтобы обеспечить ощущение прогресса, мы можем реализовать систему подсчета очков, которая отслеживает счет игрока. Добавьте следующий код внутри основного игрового цикла перед рендерингом графики:

-26

В этом коде игры Python Snake мы определяем объект шрифта Score_font для настройки шрифта и размера текста счета. Затем мы используем render() для создания текстовой поверхности со значением оценки. Оценка отображается как «Score:», за которой следует значение переменной оценки.

Отрегулируйте положение (10, 10), чтобы изменить расположение отображения счета в окне игры.

Чтобы сделать игру более конкурентоспособной, мы можем отслеживать и отображать высокий результат, достигнутый игроком. Добавьте следующий код после инициализации переменных игровой логики:

-27
-28

В этом коде мы вводим переменную high_score для хранения наивысшего результата, полученного игроком. Мы пытаемся загрузить рекорд из файла (например, «high_score.txt»), и если файл не найден или не может быть прочитан, мы продолжаем использовать значение по умолчанию 0 для рекорда.

Затем мы создаем текстовую поверхность high_score_text для отображения рекорда. Высокий балл отображается как «High Score:», за которым следует значение переменной high_score.

Опять же, вы можете отрегулировать позицию (10, 40), чтобы изменить расположение отображения рекордов в окне игры.

Добавление звуковых эффектов и музыки в код игры Python Snake

Чтобы сделать игру более захватывающей, мы можем добавить звуковые эффекты для различных событий, таких как поедание еды, столкновение и окончание игры. Кроме того, во время игры может воспроизводиться фоновая музыка. Вот как вы можете включить в игру звуковые эффекты и музыку:

Загрузить звуковые файлы:

-29
-30

Обязательно замените имена файлов реальными звуковыми и музыкальными файлами, которые вы хотите использовать. Поместите эти строки кода после инициализации Pygame.

Воспроизведение звуковых эффектов и музыки на соответствующих мероприятиях:

-31
-32

Настройка окна игры и графики

Чтобы сделать игру визуально привлекательной, вы можете настроить окно игры и графику. Вот несколько идей:

Установите фоновое изображение:

Загрузите и измените размер фонового изображения

background_image = pygame.image.load("background_image.png") background_image = pygame.transform.scale(background_image, (window_width, window_height))

Рендеринг графики

game_window.blit(background_image, (0, 0))
# Нарисуйте фоновое изображение.

Замените «background_image.png» путем к желаемому фоновому изображению. Поместите эти строки кода перед рендерингом другой графики в окне игры.

Настройте внешний вид змеи и еды:

Настройка внешнего вида змеи

Snake_color = (0, 255, 0) # Зелёный цвет
Snake_head_image = pygame.image.load(“snake_head.png”)
Snake_head_image = pygame.transform.scale(snake_head_image, (snake_size, Snake_size))

Настройка внешнего вида еды

food_color = (255, 0, 0) # Красный цвет
food_image = pygame.image.load(“food.png”)
food_image = pygame.transform.scale(food_image, (food_size, food_size))

Рендеринг графики

pygame.draw.rect(game_window, Snake_color, Snake_head_image.get_rect(topleft=(snake.x, Snake.y)))
# Рисуем голову змеи
pygame.draw.rect(game_window, food_color, food_image.get_rect(topleft=(food) .x, food.y)))

# Нарисуйте еду Замените «snake_head.png» и «food.png» путями к нужным изображениям головы змеи и еды. Настройте цвета или размеры изображения в соответствии с вашими предпочтениями. Поместите эти строки кода вместо предыдущих вызовов pygame.draw.rect().

Реализация игрового меню и опций для игрового кода Python Snake

Чтобы обеспечить лучший пользовательский опыт, вы можете реализовать игровое меню с такими опциями, как запуск новой игры, настройка сложности или доступ к рекордам. Вот базовая схема реализации игрового меню:

Создайте функцию для управления меню игры:

-33
-34

Эта функция game_menu() отображает параметры меню и ждет, пока игрок нажмет клавишу Enter, чтобы начать игру. Вы можете настроить внешний вид меню и при необходимости добавить дополнительные параметры.

Добавьте вызов функции game_menu() перед основным игровым циклом:

-35
-36

Поместите этот вызов game_menu() перед игровым циклом, чтобы отобразить параметры меню, и подождите, пока игрок начнет игру.

Добавляя звуковые эффекты, настраивая графику и реализуя игровое меню, вы можете значительно улучшить взаимодействие с пользователем в вашей игре «Змейка» на Python. Не стесняйтесь изучать дальнейшие улучшения и функции, которые сделают игру еще более увлекательной и приятной!

❤️ Если вам понравилась статья, ставьте лайк и подписывайтесь на мой канал "Заходи в Ай-Ти".

👍 Если у вас остались вопросы или есть интересные темы, которые вы хотите, чтобы я разобрал, то пишите в комментариях. Ваше мнение очень важно для меня!

#змейка на пайтон #змейка на пайтон код #игра змейка на пайтоне #игры на python #создание игры на python #код игры на python #2d игра на питоне #игры на питоне #игры на пайтон

Наука
7 млн интересуются