Автор оригинала: 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 следует использовать вместо проклейки.