Excitebike — это игра с боковой прокруткой, в которой вы управляете мотоциклом по прыжкам, маневрируете вокруг препятствий и мчитесь к финишу.
Nintendo впервые запустила эту гоночную игру BMX для NES. Оттуда компания модернизировала Excitebike и выпустила его на N64 и, в конечном итоге, на Wii.
Консолей NES больше не существует, поэтому играть в Excitebike снова сложно. Благодаря некоторым поклонникам ретро из журнала Wireframe Magazine фрагмент кода Python может воссоздать эту классическую игру для NES и часами веселиться на вашем Raspberry Pi или домашнем ПК.
Получение кода и настройка
Хотя вы можете использовать nano или vim для редактирования кода Python, вы захотите воспользоваться преимуществами полнофункционального текстовый редактор или IDE.
Вам нужно будет установить Pygame Zero, чтобы поддерживать функции, встроенные в эту дань уважения Excitebike. Pygame Zero содержит модули Python, чтобы создатели игр могли сосредоточиться, не повторяя простые основы.
Если на вашем компьютере не установлен python3, вы можете
скачать последнюю версию напрямую из Python. Вы также захотите убедитесь, что у вас установлен PIP слишком.Установив последнюю версию Python и PIP, откройте терминал PowerShell или Linux и введите:
пункт3 установить pgzero
Наконец, вам нужно будет взять копию кода Python из репозитория GitHub журнала Wireframe. Введите следующую команду в терминал:
мерзавец клон https://github.com/Wireframe-Magazine/Wireframe-66.git
Кроме того, вы можете скачать заархивированный код прямо со страницы Wireframe GitHub.
Разрушение кода
Чтобы понять, что делает код, сначала запустите игру Excitebike. Сделайте это, перейдя к исходному коду и запустив его с помощью Pygame Zero:
CD Каркас-66/источник-код-excitebike/
pgzrunвыездбайк.py
Затем вы можете открыть файл exitebike.py в текстовом редакторе, чтобы просмотреть код.
рисовать Функция рисует фон по мере движения изображения велосипеда. А"блит" относится к блоку, который рисуется на экране. Слово, "фон," относится к фоновому изображению (связывание изображений с фоновым блоком осуществляется благодаря импортированным модулям Pygame Zero).
дефрисовать():
скрин.блит("фон", (0, 0))
DrawTrack()
велосипед.рисовать()
экран.рисовать.текст("ВРЕМЯ КРУГА: "+str (int (time.time() - startTime)), (20, 555), color=(255,255,255), fontsize=50)
экран.рисовать.текст("ПОСЛЕДНИЙ КРУГ: "+str (последний круг), topright = (780, 555), color=(255 255 255), fontsize=50)
Вы также заметите расчеты времени круга и последнего круга (это представлено счетчиком времени в нижней части экрана). Время круга постоянно вычисляет разницу между начальным нажатием клавиши со стрелкой вправо (время начала) и текущим временем.
Последний круг — аналогичный расчет. Вместо времени начала время рассчитывается с момента, когда мотоцикл проезжает предопределенное положение трека (упомянутое как трекПос
Этот код рисует блоки изображения на экране с определенными интервалами и в определенных позициях на экране. Предоставленное изображение толпы имеет ширину всего 100 пикселей. Тем не менее, приведенный ниже код сообщает компьютеру, когда нужно нарисовать изображение, чтобы оно выглядело так, как будто позади движущегося мотоцикла находится смоделированная толпа.
Изображения горных пород отображаются на экране в двух частях. Вторая и третья строки кода, приведенные ниже, работают вместе для аккуратного моделирования пейзажа.
Как только вы создадите резервную копию кода Python, попробуйте изменить приведенные ниже числа, чтобы увидеть, что происходит с камнями на экране!
скрин.блит("толпа1", ((t*100)+trackOffset-100, 0))
скрин.блит("рок1", ((t*100)+trackOffset-100, 270))
скрин.блит("рок1", ((t*100)+trackOffset-50, 270))
Вы хотите заменить свой мотоцикл грузовиком Monster, квадроциклом или другим транспортным средством? Может быть, вы хотите промчаться на единороге до финиша?
Все, что вам нужно сделать, это нарисовать изображение размером 50x50 пикселей (с прозрачным фоном). Затем поместите этот файл (picture.png) в папку 'изображений' папка (внутри исходный код-excitebike папка). Вы захотите создать два изображения (одно с немного увеличенной высотой), чтобы добавить немного реализма. Все, что вам нужно сделать, это изменить ссылку на 'велосипед0' здесь:
велосипед = Актер('велосипед0', центр = (150, 350), якорь = ('центр', 'нижний'))
Также не забудьте выполнить действие поиска и замены с именем изображения (без расширения изображения).
проверитьBikeRamp() это функция, которая выполняет работу по вычислению оси Y, чтобы ваш мотоцикл (или грузовик) поднимался по рампе (и, если вам повезет, получил серьезный воздух). клавиатура.справа и клавиатура.слева параметры определены в обновлять() функция.
Эти кодовые биты сообщают компьютеру, что мотоцикл нужно замедлить или ускорить (в зависимости от того, какую клавишу пользователь нажимает на клавиатуре). Перевод: Чем быстрее движется ваш мотоцикл, тем выше номер оси Y (или очень большой прыжок).
Поперек, on_key_down (ключ) функция отправит ваш мотоцикл в пике.
если ключ.имя == "ВНИЗ":
велосипед.направление = 1
bike.laneY = ограничение(bike.laneY + 50, 375, 525)
bike.y += bike.direction
Маклейн Параметр замедлит ваш мотоцикл, используя следующий расчет:
МакЛейн = инт((bike.laneY-375)/50)+1
Строка 66 кода определяет, когда отображать «грязное» изображение на экране. Теперь, когда компьютер знает, когда ваш мотоцикл проедет по грязи, он снизит скорость вашего мотоцикла вдвое, когда вы будете двигаться по грязи на трассе. Измените значение muckLane с /50 на /25 или /75, чтобы посмотреть, что произойдет дальше.
Гонщики (гм, программисты Python)! Запустите свои двигатели!
Даже если вам неудобно программировать эту дань уважения Excitebike с нуля, этот код по-прежнему является отличным учебником для начинающих. Настраивая его и осознавая визуальное влияние изменений, вы можете многому научиться. Будете ли вы пытаться добавить в свою игру больше функций или гонщиков с искусственным интеллектом? Действуй!
После небольшой практики Python за плечами еще одна идея, которую вы можете попробовать, — это добавлять разные уровни после того, как вы пройдете финишную черту после 4 или 5 раз. Кроме того, вы можете добавить награды за первое, второе и третье места. Если вы на первом месте, добавьте еще и аудиофайл, подбадривающий публику! Есть так много возможностей.
Когда вы довольны улучшениями Excitebike, почему бы не заняться созданием текстовой приключенческой игры? Есть много разных частей, которые гарантируют, что вы будете изучать что-то захватывающее часами, днями или даже неделями!