Excitebike è un gioco a scorrimento laterale in cui guidi una motocicletta sui salti, manovri attorno agli ostacoli e sfreccia verso il traguardo.
Nintendo ha lanciato per la prima volta questo gioco di corse BMX per NES. Da lì, la società ha modernizzato Excitebike e l'ha rilasciata su N64 e, infine, su Wii.
Non esistono più molte console NES, il che rende ancora difficile giocare a Excitebike. Grazie ad alcuni fan retrò di Wireframe Magazine, un frammento di codice Python può ricreare questo classico NES per ore di divertimento sul tuo Raspberry Pi o sul PC di casa.
Ottenere il codice e configurare
Sebbene tu possa usare nano o vim per modificare il tuo codice Python, ti consigliamo di sfruttare una funzionalità completa editor di testo o IDE.
Dovrai installare Pygame Zero per supportare le funzionalità integrate in questo omaggio a Excitebike. Pygame Zero contiene moduli Python che consentono ai creatori di giochi di concentrarsi senza dover ripetere semplici basi.
Se non hai python3 installato sul tuo PC, puoi farlo
scarica l'ultima versione direttamente da Python. Avrai anche voglia di assicurati di aver installato PIP pure.Con l'ultima versione di Python e PIP installata, apri il tuo terminale PowerShell o Linux e digita:
pip3 installare pgzero
Infine, dovrai prendere una copia del codice Python dal repository GitHub della rivista Wireframe. Digita il seguente comando in un terminale:
idiota clone https://github.com/Wireframe-Magazine/Wireframe-66.git
In alternativa, puoi scarica il codice compresso direttamente dalla pagina Wireframe GitHub.
Abbattere il codice
Per capire cosa fa il codice, prima esegui il gioco Excitebike. Fallo accedendo al codice sorgente e quindi eseguendolo utilizzando Pygame Zero:
CD Wireframe-66/fonte-codice-excitebike/
pgzrunoutebike.py
È quindi possibile aprire il file exitebike.py con un editor di testo per visualizzare il codice.
IL disegno La funzione disegna lo sfondo mentre l'immagine della bicicletta si sposta. UN "blit" si riferisce a un blocco disegnato sullo schermo. La parola, "sfondo," si riferisce all'immagine di sfondo (il collegamento delle immagini al blocco di sfondo è grazie ai moduli Pygame Zero importati).
defdisegno():
schermo.blit("sfondo", (0, 0))
drawTrack()
bicicletta.disegno()
screen.draw.text("TEMPO DEL GIRO: "+str (int (time.time() - startTime)), (20, 555),color=(255,255,255), fontsize=50)
screen.draw.text("ULTIMO GIRO: "+str (ultimo giro), in alto a destra = (780, 555), color=(255,255,255), fontsize=50)
Noterai anche i calcoli per il tempo sul giro e l'ultimo giro (questo è rappresentato dal contatore del tempo nella parte inferiore dello schermo). Il tempo sul giro calcola costantemente la differenza tra la pressione iniziale del tasto freccia destra (ora di inizio) e l'ora corrente.
L'ultimo giro è un calcolo simile. Invece dell'ora di inizio, viene calcolato il tempo dal momento in cui la moto supera una posizione di pista predefinita (menzionata come trackPos < -4800 nel codice). Gli elementi seguenti tra virgolette rappresentano un'immagine.
Questo codice disegna blocchi di immagini sullo schermo a determinati intervalli e posizioni particolari sullo schermo. L'immagine della folla fornita è larga solo 100 px. Eppure, il codice, sotto, dice al computer quando disegnare l'immagine in modo che appaia come se ci fosse una folla simulata dietro la motocicletta mentre si muove.
Le immagini della roccia vengono visualizzate sullo schermo in due parti. La seconda e la terza riga di codice, di seguito, lavorano insieme per simulare lo scenario in modo ordinato.
Dopo aver creato una copia di backup del codice Python, prova a modificare i numeri sottostanti per vedere cosa succede alle rocce sullo schermo!
schermo.blit("folla1", ((t*100)+trackOffset-100, 0))
schermo.blit("roccia1", ((t*100)+trackOffset-100, 270))
schermo.blit("roccia1", ((t*100)+trackOffset-50, 270))
Vuoi sostituire la tua moto con un Monster truck, un fuoristrada o un altro veicolo? Forse vuoi correre un unicorno fino al traguardo?
Tutto quello che devi fare è disegnare un'immagine 50x50px (con uno sfondo trasparente). Quindi, posiziona questo file (picture.png) nel 'immagini' cartella (all'interno del file codice-sorgente-excitebike cartella). Ti consigliamo di creare due immagini (una con un'altezza leggermente aumentata) per aggiungere un po' di realismo. Tutto quello che devi fare è cambiare il riferimento a 'bici0' Qui:
bicicletta = Attore('bici0', centro=(150, 350), ancora=('centro', 'metter il fondo a'))
Assicurati inoltre di eseguire un'azione di ricerca e sostituzione con il nome dell'immagine (senza l'estensione dell'immagine).
checkBikeRamp() è la funzione che fa il lavoro per calcolare l'asse Y in modo che la tua moto (o camion) salga la rampa (e prenda un po' d'aria se sei fortunato). IL tastiera.destra E tastiera.sinistra i parametri sono definiti nel aggiornamento() funzione.
Questi bit di codice dicono al computer di rallentare o accelerare la moto (a seconda del tasto premuto dall'utente sulla tastiera). Traduzione: più velocemente si muove la tua moto, maggiore è il numero dell'asse Y (o salto molto grande).
Trasversalmente, il on_key_down (chiave) funzione manderà la tua moto in picchiata.
se chiave.nome == "GIÙ":
bici.direzione = 1
bike.laneY = limite(bike.laneY + 50, 375, 525)
bici.y += bici.direzione
IL muckLane parametro rallenterà la tua moto utilizzando il seguente calcolo:
muckLane = int((bike.laneY-375)/50)+1
La riga 66 del codice determina quando visualizzare l'immagine 'muck' sullo schermo. Ora che il computer sa quando la tua moto passerà sul fango, dimezzerà la velocità della tua moto mentre ti muovi sul fango in pista. Cambia il valore muckLane da /50 a /25 o /75 per vedere cosa succede dopo.
Corridori (ehm, programmatori Python)! Accendi i motori!
Anche se non ti senti a tuo agio nel programmare questo omaggio a Excitebike da zero, questo codice è comunque un ottimo primer. Modificandolo e realizzando l'impatto visivo dei cambiamenti, puoi imparare molto. Proverai ad aggiungere più funzionalità o piloti IA nel tuo gioco? Fallo!
Con un po' di pratica di Python sotto la cintura, un'altra idea da provare è aggiungere diversi livelli una volta superato il traguardo dopo 4 o 5 volte. Inoltre, potresti voler aggiungere premi per il primo, secondo e terzo posto. Se sei al primo posto, aggiungi anche un file audio di incoraggiamento! Ci sono tante possibilità.
Quando sei soddisfatto dei miglioramenti apportati a Excitebike, perché non affrontare la creazione di un gioco di avventura testuale? Ci sono molti pezzi diversi che ti assicureranno di imparare qualcosa di eccitante per ore, giorni o addirittura settimane!