Рубрики
Без рубрики

Простая игра Python Snake, используя проклятия

Snake – это игра, где игрока маневрирует линию, которая растет в длину, с самой линией является основным препятствием. Вот быстрый учебник о том, как построить змею игру с Python.

Автор оригинала: Murzal Arsya Pandji.

Вступление

Вот хорошее описание игры змеи из Википедия Отказ Snake – это игра, где игрока маневрирует линию, которая растет в длину, с самой линией является основным препятствием. Там нет стандартной версии игры. Концепция возникла в блокаде аркадной игры в 1976 году, и его простота привела к многим реализациям (некоторые из которых имеют слово змея или червя в заголовке). После того, как вариант был предварительно загружен на мобильные телефоны Nokia в 1998 году, произошло возрождение интереса к концепции змеи, поскольку она нашла большую аудиторию.

Подход к решению проблем

Давайте начнем с элементов игры змеи. Во-первых, сама змея – главный герой. Во-вторых, он должен быть в состоянии перемещаться в четырех направлениях (вверх, вниз, слева, справа). Каждый раз, когда он ест еду, его тело растянулось бы. В-третьих, еда появится в случайных местах. В-четвертых, змея не должна еть себе. Пятая игра сделать игру быстрее, мы должны отслеживать счет.

Для того, чтобы код легче поддерживать, я использовал OOP и создал три класса, которые змеи, тело и еда.

Снейк класс

class Snake(object):

    def __init__(self, x, y, window):
        # initialize snake:
        # - create head
        # - create body
        # - set starting x, y position

    def eat_food(self, food):
        # remove food
        # stretch body
        # add score
        # make the game faster

    def update(self):
        # update snake location (move the snake)

    def render(self):
        # draw the snake in the console using curses

    def move(self):
        # move up down left right

Класс тела

class Body(object):

    def __init__(self, x, y, char='#'):
        self.x = x
        self.y = y
        self.char = char

    @property
    def coor(self):
        return self.x, self.y

Класс пищевых продуктов

class Food(object):
    def __init__(self, window, char='*'):
        # set random x, y position

    def render(self):
        # draw food to console

    def randomize(self):
        # randomize x, y position

Главная петля

while True:
    # clear screen
    # display the snake
    # display the food
    # display the score
    # listen to keypress event
    # respond to keypress event
    # stop the game if the head hits the body (eat itself)

Я сделал репозиторий GitHub, поэтому не стесняйтесь использовать этот ссылка Для просмотра исходного кода.

Плюсы и минусы

Хорошая вещь в этой игре и нашем решении состоит в том, что она очень проста. Подход довольно прост и легко понять даже для начинающих. Эта игра может работать на многих платформах.

Плохая вещь в том, что «внешний вид» игры является довольно древним (стиль DOS), так что это не так привлекательна. Когда пользователь нажимает и удерживает ключ навигации, змея перемещается быстрее, это связано с тем, как я использовал тайм-аут для задержки рендеринга в основном цикле.

Улучшения

Поскольку я создал эту игру просто для развлечения и научить новичков, как комировать игру змеи, я знаю, что есть много вещей, которые могут быть улучшены. Сам код может быть более оптимизирован. Возможно, используя curses.napms Чтобы задержать рендеринг вместо использования Window.Timeout Отказ Добавление звуковых эффектов и тематическая песня должна быть легкой и веселой. В настоящее время этот код работает только на Linux и Mac OSX. Чтобы сделать его работать с платформой Windows, Unicurses следует использовать вместо проклейки.