Найти в Дзене

Игра "змейка" на языке Python. Первые шаги...

Для любого новичка, в любом деле, чтоб что-то действительно понять, нужно попробовать сделать самому.Для себя я решил, освоить язык через написание данной игры.
Скажу сразу, что я самоучка и мне интересна ваша критика) Для визуализации выбрал библиотеку PyGame. Первое, что я сделал, так это задумался об иерархии. Не нужно писать весь код в одном файле. Его будет сложно читать и поддерживать.
Пока что разбил на несколько файлов и без директорий (далее подредактирую). Как вообще это работает? 1) Мы должны инициализировать саму библиотеку pygame и предопределить некоторые свойства, которые понадобятся в дальнейшем:
import pygame # Подключаем библиотеку
WIDTH = 400
HEIGHT = 600
# Запускаем pygame.
pygame.init() # Создаем игровую область с разрешением.
screen = pygame.display.set_mode((WIDTH, HEIGHT)) # Заголовок окна игры.
pygame.display.set_caption('Змейка')
# Инициализируем время, отсчет идет от init()
clock = pygame.time.Clock() 2) Нам необходим цикл, в котором будет
Оглавление

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

Для визуализации выбрал библиотеку PyGame.

Первое, что я сделал, так это задумался об иерархии. Не нужно писать весь код в одном файле. Его будет сложно читать и поддерживать.
Пока что разбил на несколько файлов и без директорий (далее подредактирую).

main - запускает pygame и реализует общую логику для обновления кадров игры
GameBoard - хранит в себе классы (игрового поля, змейки, еды)
menu - будет содержать классы самого МЕНЮ и его логику
main - запускает pygame и реализует общую логику для обновления кадров игры GameBoard - хранит в себе классы (игрового поля, змейки, еды) menu - будет содержать классы самого МЕНЮ и его логику

Как вообще это работает?

1) Мы должны инициализировать саму библиотеку pygame и предопределить некоторые свойства, которые понадобятся в дальнейшем:

import pygame # Подключаем библиотеку

WIDTH = 400
HEIGHT = 600

# Запускаем pygame.
pygame.init()
# Создаем игровую область с разрешением.
screen = pygame.display.set_mode((WIDTH, HEIGHT))
# Заголовок окна игры.
pygame.display.set_caption('Змейка')

# Инициализируем время, отсчет идет от init()
clock = pygame.time.Clock()

2) Нам необходим цикл, в котором будет воспроизводиться наша игра

running = True
while running:
clock.tick(20)
# число кадров в секунду

# Ввод события. Все события, которые произошли после предыдущего кадра, хранятся в списке, который мы получаем методом pygame.event.get() . (Любые нажатия, перемещения.)
for event in pygame.event.get():
if event.type == pygame.QUIT: # Если закрываем окно крестиком
running =
False


# Обновление. (изменение объектов и их свойств)
(пример):
# Если змейка имеет координаты (у неё еще есть жизни)
if len(snake.coordinate):
# Мы вызываем метод, который осуществит движение змеи
snake.stepping(eat)
else:
running =
False # Змейка мертва, значит игре конец, нужно выйти из цикла



# Визуализация. (отрисовка измененных объектов)
screen.fill(GameBoard.color['BLACK']) # Очистка экрана. Заливка черным цветом.

pygame.display.flip()
# Показываем кадр.

3) Закрытие самого окна

pygame.quit()

Так выглядит класс змейки:

Есть её свойства.
Есть метод, который отрисовывает змейку на поле.
Есть метод, который отвечает за движение и  учитывает еду.
Есть метод, который убивает змейку.
Есть её свойства. Есть метод, который отрисовывает змейку на поле. Есть метод, который отвечает за движение и учитывает еду. Есть метод, который убивает змейку.

Весь код можно скачать или посмотреть на GitHub

-4


Планирую сделать в рамках этой игры:

  • Реализовать меню игры.
  • Подключить базу данных, для хранения очков.
  • Использовать спрайты для игровых элементов.
  • Есть идея сделать совместную игру с 2х устройств. Пока не расскажу про неё) Увидите потом, когда реализую.