Tratto da: Street Racing – Written by Mark Overmars using GameMaker – Images by Martin Bérubé and Sander Steenhuis – Music by Jacob Habgood
Si tratta di un racing game, cioè di una simulazione di guida con un mezzo di trasporto
- guidi l’auto rossa
- utilizza le 4 frecce per andare a destra, sinistra, avanti, indietro
- evita le auto nella tua direzione e quelle di fronte
- per ogni incidente perdi una vita
- per non rimanere a secco raccogli la tanica di benzina che compare di tanto in tanto sulla strada
- stai attento alla macchina della polizia perché cercherà di speronarti!
Il movimento
Realizziamo il controllo della macchina rossa.
Scoprirai che la macchina in realtà rimane ferma mentre è lo sfondo che scorre verso il basso!
Risorse
Crea le risorse di base
TIPO | NOME | FILE | |
---|---|---|---|
Sprite | spr_racing | sprite_racing.png | ![]() |
Sound | snd_music | music.mid | |
snd_horn | horn.wav | ||
Background | back_game | background.png | vedi dopo |
Object | obj_car_racing | spr_racing | |
Room | room_game |
Note
- Per l’auto è sufficiente una sola immagine
- Scegli liberamente la musica di sottofondo (.mid) e il suono per il clacson (.wav)
- L’immagine di sfondo prevede già le due corsie e ha uno spazio a destra per i vari contatori, messaggi, …
Il livello
Nella scheda backgrounds imposta
- Visible when room starts
- back_game (tramite il pulsantino a destra)
- Tile Vert.
- Vert. Speed: 3
Nella scheda objects
- posiziona un’auto al centro della strada.
Nella scheda settings imposta
- Speed: 40
Il risultato finale dovrebbe essere
In questo modo l’immagine dello sfondo scorre continuamente verso il basso (3) e il livello viene tassellato verticalmente (Tile Vert.).
Prova a lanciare l’applicazione!
obj_car_racing
L’auto deve rispondere ai comandi corrispondenti alle 4 frecce e suonare il clacson.
Inserisci gli eventi di seguito con le azioni corrispondenti.
Create


L’auto ha velocità verticale nulla…
Suona per sempre la musica di sottofondo
<Left>




Se la sua posizione non è troppo a sinistra, si sposta di 2 pixel a sinistra.
<Right>




Se la sua posizione non è troppo a destra, si sposta di 2 pixel a destra.
<Up>

Si sposta di 3 pixel verso l’alto.
<Down>

Si sposta di 3 pixel verso il basso.
<Space>




Play sound snd_horn; looping: false
Se il suono snd_horn è già in esecuzione esce dall’evento.
(Altrimenti) suona il suono snd_horn, una volta.
Il risultato finale è
Lancia l’applicazione e osserva
- se non intervieni l’auto percorre apparentemente la strada verso l’alto
- l’auto si sposta in orizzontale rimanendo correttamente in carreggiata
- se va troppo in alto o troppo in basso scompare…
Il traffico
Aggiungiamo del traffico
- macchine nello stesso senso di marcia
- macchine in senso contrario.
Se l’auto rossa subisce un incidente si ricomincia il livello.
Risorse
Aggiungi le risorse
TIPO | NOME | FILE | |
---|---|---|---|
Sprite | spr_racing_dead | sprite_racing_dead.png | ![]() |
spr_car_up | sprite_car_up_strip4.png | ![]() |
|
spr_car_up_dead | sprite_car_up_dead_strip4.png | ![]() |
|
spr_car_down | sprite_car_down_strip4.png | ![]() |
|
spr_car_down_dead | sprite_car_down_dead_strip4.png | ![]() |
|
Sound | snd_collision | collision.wav | |
snd_sirens | sirens.wav | ||
Object | obj_car_up | spr_car_up | |
obj_car_down | spr_car_down | ||
controller |
Note
- Per ogni tipo di auto c’è la versione normale e la versione incidentata
- Le auto sulla strada possono essere di 4 colori diversi (con scelta casuale)
- L’oggetto controller genera le auto sulla strada.
Oggetti auto
Ogni auto possiede una variabile locale dead impostata inizialmente a false.
Indica che non ha ancora subito un incidente.
Se un auto subisce un incidente
- cambia il suo stato, dead diventa true
- cambia la sua immagine nella versione …dead
- si blocca sulla strada.
In particolare l’auto rossa non risponde più ai comandi dell’utente e finisce fuori strada… provocando la fine del livello.
obj_car_up
Create













End of a block
If at relative position (0,0) there is object obj_car_up



L’auto è nuova, ha un colore casuale, si trova sulla prima corsia e si muove piano.
Con una probabilità del 50% si sposta in seconda corsia e aumenta la velocità.
Con una probabilità più bassa si sposta in terza corsia con velocità ancora più alta.
Se la corsia è già occupata scompare.
obj_car_up
obj_car_racing
Outside room




Se è uscita completamente in basso si autodistrugge.
obj_car_down
Create
- (44+120, -80)
- (44+60, -80)
- (44+0, -80)
e velocità: 6, 5, 4
obj_car_down
obj_car_racing
Outside room
controller
L’oggetto non ha una sprite perché non è visibile.
Inserendolo nel livello (meglio nell’angolo in alto a sinistra per non perderlo di vista…) agirà sia alla sua creazione che a ogni passo fornendo al gioco dei comportamenti non legati al singolo oggetto.
Create


Suona per sempre la musica di sottofondo
Step





With a chance of 1 out 200-score/200 perform the next action



Aumenta i punti a ogni passo.
Con probabilità legata ai punti attuali crea un’auto nell’altra corsia.
Con probabilità più bassa crea un’auto nella stessa corsia.
obj_car_racing
Create


obj_car_down
obj_car_up




Play sound snd_collision; looping: false
Set the sprite to spr_racing_dead with subimage 0 and speed 1
Set the vertical speed to 3
Set variable dead to true
In caso di collisione, se sei nello stato dead esci dall’evento.
(Altrimenti) Gestisci la collisione
- emetti un suono
- cambia l’immagine dell’auto
- muoviti verso il basso
- dead diventa true
Le stesse azioni vanno inserite nei 2 eventi collisione.
<Left>
<Right>
<Up>
<Down>




Se l’utente agisce con le frecce l’auto si muove, come prima, ma soltanto se non è incidentata.
Modifica le azioni corrispondenti
- <Left> se x >32 && not dead allora va in (-2,0)
- <Right> se x < 360 && not dead allora va in (+2,0)
- <Up> se not dead allora va in (-3,0)
- <Down> se not dead allora va in (+3,0)
Outside room



Quando l’auto esce dallo schermo
- viene emesso il suono della collisione
- il gioco si ferma per un secondo
- riparte il livello.
Gli accessori
Mancano gli accessori che non possono mai mancare…
- la gestione dei punti e delle vite
- un oggetto che permetta di fare rifornimento per prolungare il gioco
- un livello iniziale di presentazione
- …
Risorse
Aggiungi le risorse
TIPO | NOME | FILE | |
---|---|---|---|
Sprite | spr_gas | sprite_gas.png | ![]() |
Sound | snd_gas | gas.wav | |
Font | font_small | ||
font_large | |||
Object | obj_gas | spr_gas | |
controller_start | |||
Room | room_start |
Osserva le novità
- La tanica di benzina
- Un livello iniziale, room_start, con il suo oggetto controllore, controller_start
- Due font per le scritte iniziali e sul lato sinistro
Sarà necessario riorganizzare tutti gli eventi precedenti…
controller_start
Step




With a chance of 1 out of 100 do perform the next action



<any key>

Game Start




Draw







controller
Create





Step





With a chance of 1 out 200-score/200 perform the next action



No more lives


Draw












If expression global.patrol > 700 is true



Draw rectangle with vertices (480,100) and (480+max(0,min(100,global.petrol/10)),100), filled
obj_gas
Create

Outside room




Si muove con la stessa velocità dello sfondo.
Se finisce fuori scompare.
obj_car_racing
Create


Step




If expression global.petrol <= 0 is true



Set variable global.petrol relative to -1
obj_car_down
obj_car_up




Play sound snd_collision; looping: false
Set the sprite to spr_racing_dead with subimage 0 and speed 1
Set the vertical speed to 3
Set variable dead to true
obj_gas




Play sound snd_gas; looping: false
Set variable global.petrol to min(1000,global.petrol+400)
For other object: destroy the instance
<Left>




<Up>




<Right>




<Down>




Outside room




obj_car_up
…
obj_car_down
…
La polizia
Di tanto in tanto appare la macchina della polizia che cerca di speronare la macchina rossa.
Risorse
Aggiungi le risorse
TIPO | NOME | FILE | |
---|---|---|---|
Sprite | spr_police | sprite_police_strip6.png | ![]() |
spr_police_dead | sprite_police_dead_strip6.png | ![]() |
|
Sound | snd_sirens | sirens.wav | |
Object | obj_police | spr_police |
L’auto della polizia ha le luci lampeggianti sul tetto (la sua striscia è un’animazione)
controller
Come prima e in più…
Step






Se i punti sono più di 3000, se non esiste già, con probabilità molto bassa, crea un’auto della polizia.
obj_car_racing
Create


obj_police




Play sound snd_collision; looping: false
Set the sprite to spr_racing_dead with subimage 0 and speed 1
Set the vertical speed to 3
Set variable dead to true
In caso di collisione, se sei nello stato dead esci dall’evento.
(Altrimenti) Gestisci la collisione
- emetti un suono
- cambia l’immagine dell’auto
- muoviti verso il basso
- dead diventa true
Le stesse azioni vanno inserite nei 3 eventi collisione.
<Left>
<Right>
<Up>
<Down>




Se l’utente agisce con le frecce l’auto si muove, come prima, ma soltanto se non è incidentata.
Modifica le azioni corrispondenti
- <Left>: x >32 && not dead, (-2,0)
- <Right>: x < 360 && not dead, (+2,0)
- <Up>: not dead, (-3,0)
- <Down>: not dead, (+3,0)
Outside room




Quando l’auto esce dallo schermo
- si interrompe il suono della sirena (…)
- viene emesso il suono della collisione
- il gioco si ferma per un secondo
- riparte il livello.
obj_car_up
Create













End of a block
If at relative position (0,0) there is object obj_car_up



L’auto è nuova, ha un colore casuale, si trova sulla prima corsia e si muove piano.
Con una probabilità del 50% si sposta in seconda corsia e aumenta la velocità.
Con una probabilità più bassa si sposta in terza corsia con velocità ancora più alta.
Se la corsia è già occupata scompare.
obj_car_up
obj_car_racing
obj_police
Outside room




Se è uscita completamente in basso si autodistrugge.
obj_car_down
Create
- (44+120, -80) e 6
- (44+60, -80) e 5
- (44, -80) e 4
obj_car_down
obj_car_racing
obj_police
Outside room
obj_police
Entra in gioco dal basso, accende la sirena e si dirige verso l’auto rossa speronandola!
Consulta il tutorial originale