Создайте дань уважения Excitebike с помощью Python

Создайте дань уважения Excitebike с помощью Python

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 и введите:





pip3 install pgzero 

Наконец, вам нужно будет взять копию кода Python из репозитория GitHub журнала Wireframe. Введите следующую команду в терминал:

приложения, которым не нужен интернет
git clone https://github.com/Wireframe-Magazine/Wireframe-66.git

Кроме того, вы можете скачать заархивированный код прямо со страницы Wireframe GitHub.





Разрушение кода

Чтобы понять, что делает код, сначала запустите игру Excitebike. Сделайте это, перейдя к исходному коду и запустив его с помощью Pygame Zero:

cd Wireframe-66/source-code-excitebike/ 
pgzrun exitebike.py

Затем вы можете открыть файл exitebike.py в текстовом редакторе, чтобы просмотреть код.

  Фрагмент кода Python для excitebike

рисовать Функция рисует фон по мере движения изображения велосипеда. А' остаться ' относится к блоку, который рисуется на экране. Слово, ' фон,' относится к фоновому изображению (связывание изображений с фоновым блоком осуществляется благодаря импортированным модулям Pygame Zero).

def draw(): 
screen.blit("background", (0, 0))
drawTrack()
bike.draw()
screen.draw.text("LAP TIME: "+str(int(time.time() - startTime)), (20, 555),color=(255,255,255) , fontsize=50)
screen.draw.text("LAST LAP: "+str(lastLap), topright = (780, 555),color=(255,255,255) , fontsize=50)

Вы также заметите расчеты времени круга и последнего круга (это представлено счетчиком времени в нижней части экрана). Время круга постоянно вычисляет разницу между начальным нажатием клавиши со стрелкой вправо (время начала) и текущим временем.

Последний круг — аналогичный расчет. Вместо времени начала время рассчитывается с момента, когда мотоцикл проезжает предопределенное положение трека (упомянутое как трекПос <-4800 в коде). Следующие элементы в кавычках представляют изображение.

Этот код рисует блоки изображения на экране с определенными интервалами и в определенных позициях на экране. Предоставленное изображение толпы имеет ширину всего 100 пикселей. Тем не менее, приведенный ниже код сообщает компьютеру, когда нужно нарисовать изображение, чтобы оно выглядело так, как будто позади движущегося мотоцикла находится смоделированная толпа.

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

Как только вы создадите резервную копию кода Python, попробуйте изменить приведенные ниже числа, чтобы увидеть, что происходит с камнями на экране!

screen.blit("crowd1", ((t*100)+trackOffset-100, 0)) 
screen.blit("rock1", ((t*100)+trackOffset-100, 270))
screen.blit("rock1", ((t*100)+trackOffset-50, 270))

Вы хотите заменить свой мотоцикл грузовиком Monster, квадроциклом или другим транспортным средством? Может быть, вы хотите промчаться на единороге до финиша?

Все, что вам нужно сделать, это нарисовать изображение размером 50x50 пикселей (с прозрачным фоном). Затем поместите этот файл (picture.png) в папку ' картинки ' папка (внутри исходный код-excitebike папка). Вы захотите создать два изображения (одно с немного увеличенной высотой), чтобы добавить немного реализма. Все, что вам нужно сделать, это изменить ссылку на ' сделай это здесь:

А13F3B2DB1DD0A2ABD0F5BFC28D937B7D988248D   excitebike python игра с грузовиком

Также не забудьте выполнить действие поиска и замены с именем изображения (без расширения изображения).

проверитьBikeRamp() это функция, которая выполняет работу по вычислению оси Y, чтобы ваш мотоцикл (или грузовик) поднимался по рампе (и, если вам повезет, получил серьезный воздух). клавиатура.справа а также клавиатура.слева параметры определены в Обновить() функция.

Эти кодовые биты сообщают компьютеру, что мотоцикл нужно замедлить или ускорить (в зависимости от того, какую клавишу пользователь нажимает на клавиатуре). Перевод: Чем быстрее движется ваш мотоцикл, тем выше номер оси Y (или очень большой прыжок).

Поперек, on_key_down(ключ) функция отправит ваш мотоцикл в пике.

if key.name == "DOWN": 
bike.direction = 1
bike.laneY = limit(bike.laneY + 50, 375, 525)
bike.y += bike.direction

Маклейн Параметр замедлит ваш мотоцикл, используя следующий расчет:

ФБЕ573АБФ02Б4844К561530Е4Е870Е608Д34ДК6Э

Строка 66 кода определяет, когда отображать «грязное» изображение на экране. Теперь, когда компьютер знает, когда ваш мотоцикл проедет по грязи, он снизит скорость вашего мотоцикла вдвое, когда вы будете двигаться по грязи на трассе. Измените значение muckLane с /50 на /25 или /75, чтобы посмотреть, что произойдет дальше.

потоковое видео с ПК на ТВ

Гонщики (гм, программисты Python)! Запустите свои двигатели!

Даже если вам неудобно программировать эту дань уважения Excitebike с нуля, этот код по-прежнему является отличным учебником для начинающих. Настраивая его и осознавая визуальное влияние изменений, вы можете многому научиться. Будете ли вы пытаться добавить в свою игру больше функций или гонщиков с искусственным интеллектом? Действуй!

После небольшой практики Python за плечами еще одна идея, которую вы можете попробовать, — это добавлять разные уровни после того, как вы пройдете финишную черту после 4 или 5 раз. Кроме того, вы можете добавить награды за первое, второе и третье места. Если вы на первом месте, добавьте еще и аудиофайл, подбадривающий публику! Есть так много возможностей.

Когда вы довольны улучшениями Excitebike, почему бы не заняться созданием текстовой приключенческой игры? Есть много разных частей, которые гарантируют, что вы будете изучать что-то захватывающее часами, днями или даже неделями!