Създайте почит към Excitebike с помощта на Python

Създайте почит към Excitebike с помощта на Python

Excitebike е игра със страничен скролер, в която навигирате мотоциклет през скокове, маневрирате около препятствия и се движите бързо към финалната линия.





Nintendo за първи път стартира тази BMX състезателна игра за NES. Оттам нататък компанията модернизира Excitebike и го пусна на N64 и в крайна сметка на Wii.





Вече не съществуват много конзоли на NES, което прави играта на Excitebike отново трудно достъпна. Благодарение на някои ретро фенове в Wireframe Magazine, фрагмент от код на Python може да пресъздаде тази NES класика за часове забавление на вашия Raspberry Pi или домашен компютър.





MAKEUSEOF ВИДЕО НА ДЕНЯ

Получаване на кода и настройка

Въпреки че можете да използвате 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 с текстов редактор, за да видите кода.

как да почистите компютъра си windows 10
  excitebike python кодов фрагмент

The рисувам функция рисува фона, докато изображението на велосипеда се движи. а ' престой ' се отнася до блок, който е изчертан на екрана. Думата, ' заден план,' се отнася за фоновото изображение (свързването на изображенията към фоновия блок е благодарение на импортираните модули 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)

Ще забележите и изчисления за времето за обиколка и последната обиколка (това е представено от брояча на времето в долната част на екрана). Времето за обиколка постоянно изчислява разликата между първоначалното натискане на клавиша със стрелка надясно (начално време) и текущото време.

Последната обиколка е подобно изчисление. Вместо началното време, времето се изчислява от момента, в който мотоциклетът премине предварително определена позиция на пистата (споменато като trackPos < -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, четириколка или друго превозно средство? Може би искате да се състезавате с еднорог до финала?

Всичко, което трябва да направите, е да нарисувате изображение с размери 50x50px (с прозрачен фон). След това поставете този файл (picture.png) в ' изображения ' папка (в рамките на изходен код-excitebike папка). Ще искате да създадете две изображения (едното с леко увеличена височина), за да добавите малко реализъм. Всичко, което трябва да направите, е да промените препратката към „ направи го тук:

bike = Actor('bike0', center=(150, 350), anchor=('center', 'bottom'))
  excitebike python игра с камион

Също така не забравяйте да извършите действие за намиране и замяна с името на картината (без разширението на изображението).

checkBikeRamp() е функцията, която върши работата, за да изчисли оста Y, така че вашият мотоциклет (или камион) да се изкачи по рампата (и да получи малко въздух, ако имате късмет). The клавиатура.дясно и клавиатура.ляво параметрите са определени в актуализация() функция.

как да потърсите в гугъл някой, без той да знае

Тези кодови битове казват на компютъра да забави или да ускори мотоциклета (в зависимост от това кой клавиш потребителят натиска на клавиатурата). Превод: Колкото по-бързо се движи вашият мотоциклет, толкова по-голям е номерът на оста Y (или много голям скок).

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

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

The muckLane параметърът ще забави вашия мотоциклет, като използвате следното изчисление:

muckLane = int((bike.laneY-375)/50)+1

Ред 66 от кода определя кога да се покаже изображението 'muck' на екрана. Сега, след като компютърът знае кога мотоциклетът ви ще премине през мръсотията, той ще намали скоростта на мотоциклета ви наполовина, докато се движите над калта на пистата. Променете стойността на muckLane от /50 на /25 или /75, за да видите какво ще се случи след това.

Състезатели (хм, Python програмисти)! Стартирайте двигателите си!

Дори и да не ви е удобно да програмирате тази почит към Excitebike от нулата, този код все още е страхотен пример. Като го променяте и осъзнавате визуалното въздействие на промените, можете да научите много. Ще се опитате ли да добавите повече функции или AI състезатели в играта си? Направи го!

С малко практика на Python под колана си, друга идея, която да опитате, е да добавите различни нива, след като преминете финалната линия след 4 или 5 пъти. Освен това може да искате да добавите награди за първо, второ и трето място. Ако сте на първо място, добавете и аудио файл, който аплодира публиката! Има толкова много възможности.

Когато сте доволни от подобренията на Excitebike, защо не се заемете със създаването на текстова приключенска игра? Има много различни парчета, които ще гарантират, че ще научите нещо вълнуващо с часове, дни или дори седмици!