Opret en hyldest til Excitebike ved hjælp af Python

Opret en hyldest til Excitebike ved hjælp af Python

Excitebike er et side-scroller-spil, hvor du navigerer en motorcykel over hop, manøvrerer rundt om forhindringer og suser mod målstregen.





Nintendo lancerede først dette BMX-racerspil til NES. Derfra moderniserede virksomheden Excitebike og udgav den på N64 og til sidst Wii.





Der findes ikke mange NES-konsoller længere, hvilket gør det svært at finde Excitebike igen. Takket være nogle retro-fans på Wireframe Magazine kan et stykke Python-kode genskabe denne NES-klassiker til timevis af sjov på din Raspberry Pi eller hjemme-pc.





MAKEUSE AF DAGENS VIDEO

Få koden og opsætning

Selvom du kan bruge nano eller vim til at redigere din python-kode, vil du gerne drage fordel af en fuldt udstyret teksteditor eller IDE .

Du skal installere Pygame Zero for at understøtte funktionerne i denne hyldest til Excitebike. Pygame Zero indeholder Python-moduler, som spilskabere kan fokusere på uden at skulle gentage simple fundamenter.



Hvis du ikke har python3 installeret på din pc, kan du download den seneste version direkte fra Python. Det vil du også gerne sørg for at du har PIP installeret også.

Med den seneste version af Python og PIP installeret skal du åbne din PowerShell- eller Linux-terminal og skrive:





pip3 install pgzero 

Til sidst skal du hente en kopi af Python-koden fra Wireframe magazine's GitHub-lager. Indtast følgende kommando i en terminal:

git clone https://github.com/Wireframe-Magazine/Wireframe-66.git

Alternativt kan du download den zippede kode direkte fra Wireframe GitHub-siden.





hvorfor vil min computer ikke oprette forbindelse til internettet

Nedbrydning af koden

For at forstå, hvad koden gør, skal du først køre Excitebike-spillet. Gør det ved at navigere til kildekoden og derefter køre den ved hjælp af Pygame Zero:

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

Du kan derefter åbne filen exitebike.py med en teksteditor for at se koden.

  excitebike python kodestykke

Det tegne funktion tegner baggrunden, mens cykelbilledet bevæger sig. en ' Bliv ' refererer til en blok, der er tegnet på skærmen. Ordet ' baggrund,' henviser til baggrundsbilledet (at linke billederne til baggrundsblokken er takket være de importerede Pygame Zero-moduler).

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)

Du vil også bemærke beregninger for omgangstid og sidste omgang (dette er repræsenteret af tidstælleren nederst på skærmen). Omgangstiden beregner konstant forskellen mellem det første tryk på højre piletast (starttidspunkt) og det aktuelle tidspunkt.

Den sidste omgang er en lignende beregning. I stedet for starttidspunktet beregnes tiden fra, hvornår motorcyklen passerer en foruddefineret sporposition (nævnt som trackPos < -4800 i koden). Nedenstående elementer i anførselstegn repræsenterer et billede.

Denne kode tegner billedblokke på skærmen med bestemte intervaller og bestemte positioner på skærmen. Det medfølgende publikumsbillede er kun 100px bredt. Alligevel fortæller koden nedenfor computeren, hvornår den skal tegne billedet, så det ser ud, som om der er en simuleret menneskemængde bag motorcyklen, mens den bevæger sig.

Stenbillederne vises på skærmen i to dele. Den anden og tredje kodelinje nedenfor arbejder sammen for at simulere landskabet på en ryddelig måde.

hvordan man tømmer nogens bankkonto

Når du har oprettet en sikkerhedskopi af pythonkoden, kan du prøve at ændre tallene nedenfor for at se, hvad der sker med stenene på skærmen!

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

Vil du udskifte din motorcykel med en monsterlastbil, firehjulet motorcykel eller et andet køretøj? Måske vil du køre en enhjørning til målstregen?

Alt du skal gøre er at tegne et 50x50px billede (med en gennemsigtig baggrund). Placer derefter denne fil (picture.png) i ' billeder ' mappe (inden for kildekode-excitebike folder). Du vil gerne oprette to billeder (et med en lidt øget højde) for at tilføje noget realisme. Alt du skal gøre er at ændre referencen til ' gør det her:

internethastigheden går op og ned
bike = Actor('bike0', center=(150, 350), anchor=('center', 'bottom'))
  excitebike python spil med lastbil

Sørg også for at udføre en find og erstat-handling med navnet på billedet (uden billedudvidelsen).

checkBikeRamp() er den funktion, der gør arbejdet med at beregne Y-aksen, så din motorcykel (eller lastbil) kører op ad rampen (og får noget seriøs luft, hvis du er heldig). Det keyboard.right og tastatur.venstre parametre er defineret i update() fungere.

Disse kodebits fortæller computeren at sænke motorcyklen eller sætte farten op (afhængigt af hvilken tast brugeren trykker på på tastaturet). Oversættelse: Jo hurtigere din motorcykel bevæger sig, jo højere er nummeret på Y-aksen (eller meget stort spring).

På tværs er den on_key_down(tast) funktion vil sende din motorcykel ud i et dyk.

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

Det muckLane parameter vil bremse din motorcykel ved hjælp af følgende beregning:

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

Linje 66 i koden bestemmer, hvornår 'muck'-billedet skal vises på skærmen. Nu hvor computeren ved, hvornår din motorcykel vil passere over møget, vil den sænke din motorcykelhastighed til det halve, når du bevæger dig hen over møget på banen. Skift muckLane-værdien fra /50 til /25 eller /75 for at se, hvad der derefter sker.

Racers (ahem, Python-programmører)! Start dine motorer!

Selvom du ikke er tryg ved at programmere denne hyldest til Excitebike fra bunden, er denne kode stadig en fantastisk primer. Ved at justere det og indse ændringernes visuelle effekt, kan du lære meget. Vil du prøve at tilføje flere funktioner eller AI-racere i dit spil? Gå efter det!

Med lidt Python-øvelse under bæltet er en anden idé at prøve at tilføje forskellige niveauer, når du passerer målstregen efter 4 eller 5 gange. Du vil måske også tilføje belønninger for første-, anden- og tredjepladsen. Hvis du er på førstepladsen, så tilføj også en folkejubel lydfil! Der er så mange muligheder.

Når du er tilfreds med dine Excitebike-forbedringer, hvorfor så ikke tage fat på at skabe et teksteventyrspil? Der er en masse forskellige stykker, der vil sikre, at du lærer noget spændende i timer, dage eller endda uger!