Skip to content

SpriteSpirit/python-pygame-snake-game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

image

#----------------------------------------------------------------------><----------------------------------------------------------------------#

Snake (Питон, Удав, Змейка, Червяк и др.) — компьютерная игра, уходящая корнями в системы 1970-х. Наиболее известна версия от Nokia, впервые появившаяся в кнопочном телефоне Nokia 6110. Разработана финляндским разработчиком Танели Арманто.

>>>GAME PROCESS<<<

Игрок управляет длинным, тонким существом, напоминающим змею, которое ползает по плоскости (как правило, ограниченной стенками), собирая еду (или другие предметы), избегая столкновения с собственным хвостом и краями игрового поля (существуют варианты где при прохождении через край змея выходит из противоположного края поля). Каждый раз, когда змея съедает кусок пищи, она становится длиннее, что постепенно усложняет игру.

>>>GAME CONTROLLER<<<

ArrowsLightSmall

#----------------------------------------------------------------------><----------------------------------------------------------------------#

image

Создание основной конструкции окна в PyGame.
Создание рабочего цикла игры.
Стилизация вида окна игры.

>>>PART_1<<<

  1. Создание основной конструкции окна в PyGame.
  2. Создание рабочего цикла игры.
  3. Стилизация вида окна игры.

>>>PART_2<<<

  1. В цикл игры окна добавляем цикл событий.
  2. Добавляем условие выхода из окна.

>>>PART_3<<<

  1. Создаём описание игрового окна.
  2. Указываем путь загрузки иконки игрового окна.
  3. Устанавливаем иконку игрового окна.
  4. Создаём переменные для размеров экрана вместо аргументов функции set_mode().

>>>RESULT_1<<

image

image

Отрисовка геометрических фигур.
Создание цикла отрисовки.

>>>PART_1<<<

  1. Нарисовали прямоугольник белого цвета с отступом (x=20,y=20) и размером 50x50.

>>>PART_2<<<

  1. Создание переменных с цветами.
  2. Создание базовых геометрических примитивов.

>>>PART_3<<<

  1. Перенос отображения в цикл игры.
  2. Создание рисунка из примитивов с помощью цикла.

>>>RESULT_2<<

image

image

Внедрение FPS в проект.
Управление объектом и его скоростью.

>>>PART_1<<<

  1. Устанавливаем количество кадров в секунду (FPS).
  2. Подключаем библиотеку Time.
  3. Прописываем команду отрисовки объекта.

>>>PART_2<<<

  1. Создаём события управления нажатием клавиатуры.
  2. Добавляем управление объектом вправо.
  3. Добавляем управление объектом влево.

>>>PART_3<<<

  1. Изменяем значение переменной position_x.
  2. Создаём переменные для кнопок управления.
  3. Создаём событие управления кнопки UP.
  4. Создаём событие управления кнопки DOWN.

>>>RESULT_3<<

image SnakeGame_lesson3

image

Коллизия в игре.
Взаимодействие с объектами.
Правильное управление змейкой.

>>>PART_1<<<

  1. Создаём условие позиции объекта по осям координат.
  2. Обрабатываем коллизию левой и верхней границ игрового экрана.

>>>PART_2<<<

  1. Обрабатываем коллизию с нижней и правой границами.
  2. Учим змейку отталкиваться от границ.

>>>PART_3<<<

  1. Настраиваем отображение кубика, используя is_draw.
  2. Проверяем коллизию с кубиком и делаем is_draw = False, если пересеклись с ним.

>>>RESULT_4<<

image SnakeGame_lesson4

image

Создание класса и рефакторинг кода.
Создание класса Snake.

>>>PART_1<<<

  1. Создаём класс Snake, в который переупаковываем весь код управления змеёй.
  2. Создаём методы управления по осям координат.
  3. Переписываем код в цикле игры, заменяя управление именем класса.
  4. Создаём метод отрисовки змейки.

>>>PART_2<<<

  1. Создаём более точную структуру взаимодействия змейки с едой.
  2. Меняем скорость и размер змейки относительно FPS игры.
  3. Поправляем координаты коллизии.

>>>PART_3<<<

  1. Создаём метод проверки еды.
  2. Создаём условия проверки координат змейки и еды.
  3. Создаём рандомное появление еды.

>>>RESULT_5<<

image SnakeGame_lesson5

image

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

>>>PART_1<<<

  1. Программируем появление еды по всему полю игры.
  2. Проверяем область заполнения и увеличиваем скорость.
  3. Создаём условие, при котором еда не выходит за границы игрового окна.
  4. Исправляем, возникшую ошибку в check_walls().

>>>PART_2<<<

  1. Создаём метод управления def_move().
  2. Создаём новые переменные в классе Snake.
  3. Вносим изменения в методы управления.

>>>PART_3<<<

  1. Переименовываем класс Snake в класс Snake_head.
  2. Создаём класс Snake для тела змеи.
  3. Переносим код движения из класса Snake_head в класс Snake.
  4. Создаём переменные количества голов змеи.
  5. Создаём метод def add_head.
  6. Пишем код анимации добавления длины змеи.

>>>RESULT_6<< image SnakeGame_lesson6

image

Добавление в игру текста.
Создание счёта.
Создаём логику проигрыша игрока.

>>>PART_1<<<

  1. Подключаем все библиотеки через команду pygame init().
  2. Создаём и настраиваем шрифт.
  3. Рендерим надпись, которая будет выводиться на экран.
  4. Выводим надпись через метод blit().

>>>PART_2<<<

  1. Создаём переменную и надпись «Game over».
  2. Вносим корректировки в цикл игры.
  3. Создаём условия коллизии стенки, змейки и строки проигрыша.
  4. Импортируем библиотеку Time.
  5. Создаём условие проигрыша.

>>>PART_3<<<

  1. Добавляем переменную счёта score_text.
  2. Добавляем отображение текста счёта.
  3. Переработаем метод def check_food.
  4. Дорабатываем появление еды и пополнение счёта.

>>>RESULT_7<<

image SnakeGame_lesson7

image

Рефакторинг кода:
— коллизия тела змейки.
— логика управления змейки.
— появление еды.

>>>PART_1<<<

  1. Исправить баг — столкновения с правой и нижней стеной.
  2. Создать условие, при котором змея может врезаться в саму себя.

>>>PART_2<<<

  1. Исправить баг — выход змейки за пределы игрового окна, путём добавления логического выражения and.
  2. Исправить логику движения змейки влево, вправо, вверх и вниз, т.к. змейка идёт только в одном направлении.

>>>PART_3<<<

  1. Исправление рандомных координат еды.
  2. Создаём условие, исключающее появление еды на теле змейки.
  3. Создаём цикл while is_repeat для постоянной проверки координат, появляющейся еды.

>>>RESULT_8<<

image SnakeGame_lesson8

image

Создание сцены, титров и кнопки меню.
Кнопки входа и выхода из игры.
Изменение увета змейки и еды.\

>>>PART_1<<<

  1. Создаём метод def main_menu().
  2. Создаём цикл меню и логику отрисовки.
  3. Указываем кнопки «Start» и «Exit».

>>>PART_2<<<

  1. Создаём логику выбора пунктов меню.
  2. Перемещаем и дорабатываем событийную модель.
  3. Прописываем код запуска игры и выхода из игры.

>>>PART_3<<<

  1. Создание метода изменения цвета змейки.
  2. Прописываем условие изменения цвета змейки при соприкосновении с едой.
  3. Изменение цвета еды.

>>>RESULT_9<<

SnakeGame_Final

На этом всё. Остался баг с появлением еды на границах.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages