Koalabr8

KOALABR8Tratto da: GAME LEARNING > RESOURCES – Koalabr8.zip.
Sviluppato ulteriormente nel libro ufficiale.
Autore: Jake Habgood, coautore del libro ufficiale.

Impara a realizzare giochi di labirinto con un rompicapo ispirato (molto alla lontana) da Lemmings (Wikipedia:Lemmings).

Muovi in modo sicuro una squadra di koala attraverso un labirinto pericoloso, controllandoli tutti e otto allo stesso tempo!

Ogni livello è costituito da

  • un labirinto di cespugli di eucalipto
  • più uscite per i koala
  • oggetti pericolosi: esplosivo, seghe circolari
  • un commutatore per aprire dei varchi
  • 8 koala da portare in salvo.

Se un koala tocca l’esplosivo o la sega circolare salta in aria e la missione di salvataggio è fallita.

Per comandare il gioco puoi usare

  • le 4 frecce per muovere i koala
  • il tasto R per ricominciare il livello
  • il tasto F1 per leggere l’help.

La versione del tutorial contiene solo 3 livelli, ma puoi provare a realizzarne innumerevoli altri.

Livello 1

Le risorse utilizzate nel primo livello sono:

  • l’eucalipto, l’uscita, il koala (4 direzioni), il koala morto, l’esplosivo
  • la musica di sottofondo, due effetti audio
  • l’immagine di sfondo.

Realizza le risorse elencate e poi aggiungi gli eventi e le azioni corrispondenti

TIPO NOME FILE
Sprite spr_eucalyptus eucalyptus.png Eucalyptus
spr_tnt tnt.png TNT
spr_exit exit.png Exit
spr_walk_up walk_up_strip8.png Walk up
spr_walk_left walk_left_strip8.png Walk left
spr_walk_down walk_down_strip8.png Walk down
spr_walk_right walk_right_strip8.png Walk right
spr_dead_koala dead_koala.png Dead koala
Sound snd_music music.mid
snd_bonza bonza.wav
snd_explosion explosion.wav
Background back_game background.png
Object obj_wall spr_eucalyptus Eucalyptus
obj_tnt spr_tnt TNT
obj_exit spr_exit Exit
obj_controller <no sprite>
obj_koala spr_walk_up Walk up
obj_dead_koala spr_dead_koala Dead koala
Room room_1

 

Eucalyptusobj_wall

  • Solid

TNT

obj_tnt

 

Exitobj_exit

Sono oggetti inanimati.

obj_controller

Step Event Step

image If lives are equal to 8

Start Block Start of a block
Sleep Action Sleep 1000 milliseconds
Next Room Go to next room with transition effect Interlaced from top
End Block End of a block

 

image Game Start

Play Sound Play sound snd_music; looping: true
image Show the game info

 

image Room Start

image Set the number of lives to 0

 

image Draw

image Draw the lives at (0,0) with sprite spr_walk_up

 

image press R-key

Current Room Restart the current room

 

Walk upobj_koala

  • Solid

Collision Event obj_koala
Collision Event obj_wall

Move Fixed Start moving in direction (000010000) with speed set 0

 

Collision Event obj_exit

Play Sound Play sound snd_bonza; looping: false
image Set the number of lives relative to 1
Destroy Action Destroy the instance

 

Collision Event obj_tnt

Play Sound Play sound snd_explosion; looping: false
image Change into instance obj_dead_koala

 

image <no key>

If Grid If object is aligned with grid with cells of 40 by 40 pixels

Begin Start of block
Move Fixed Start moving in direction (no) with speed set 0
End End of block

 

image <Left>

If Grid For all obj_koala: If object is aligned with grid with cells of 40 by 40 pixels

Begin Start of block
Sprite Action Change sprite into spr_walk_left
If Free If relative position (-4,0) for Only solid objects

Begin Start of block
Move Action 1 Start moving in a direction (sx) with speed set to 4
End End of block

Else Action Else

Begin Start of block
Move Action 1 Start moving in a direction (no) with speed set to 0
End End of block

End End of block

 

image <Right>
image <Up>
image <Down>

Copia l’evento precedente e cambia la sprite (up) (right) (down), la posizione relativa di collisione (0,-4) (+4,0) (0,+4) e la direzione del movimento (su) (dx) (giù)

 

Nella versione originale i koala si bloccano se il giocatore inverte bruscamente la direzione.
Ho eliminato il problema modificando gli eventi corrispondenti.
Adesso un koala si muove soltanto se tutti i koala sono allineati alla griglia.

 

Dead koalaobj_dead_koala

image Create

Set the gravity Set the gravity to 2 in direction 270
Move Free Set speed to 15 and direction to 80

 

Other Event Outside Room

Destroy Action Destroy the instance

Il koala salta in aria e scompare in basso.

Il primo livello

Inserisci l’immagine dello sfondo.

Background

Imposta

  • Snap X: 40
  • Snap Y: 40

Posiziona un’istanza di obj_controller in un punto qualsiasi e poi tutte le altre istanze…

KOALABR8 1

Livello 2

Nel secondo livello compare una sega circolare che si muove in verticale.
Se il koala la tocca fa una brutta fine…

Realizza le risorse in elenco e poi aggiungi gli eventi e le azioni corrispondenti
TIPO NOME FILE
Sprite spr_vertical_saw vertical_saw_strip2.png Vertical saw
Sound snd_saw saw.wav
Object obj_vertical_saw spr_vertical_saw Vertical saw
Room room_2

 

Vertical sawobj_vertical_saw

image Create

Vertical Speed Action Set the vertical speed to 4

 

Collision Event obj_koala

Play Sound Play sound snd_saw; looping: false
image Change into instance into obj_dead_koala

 

Collision Event obj_wall

image Reverse vertical direction

La sega si muove verticalmente (quando tocca la siepe inverte la direzione).
Se tocca il koala si comporta come l’esplosivo.

Ecco il secondo livello
KOALABR8 2

 

Livello 3

Nel terzo livello compaiono

  • la sega circolare con movimento orizzontale
  • i passaggi bloccati e l’interruttore.

Se l’interruttore viene toccato da un koala

  • passa da spento ad acceso
  • e le siepi, segnalate da un lucchetto chiuso, scompaiono aprendo dei passaggi.
 Realizza le risorse in elenco e poi aggiungi gli eventi e le azioni corrispondenti
TIPO NOME FILE
Sprite spr_locked locked.png Locked area
spr_switch_off switch_off.png Interruttore spento
spr_switch_on switch_on.png Interruttore acceso
spr_horizontal_saw horizontal_saw_strip2.png Horizontal saw
Object obj_locked spr_locked Locked area
obj_lever spr_switch_off Interruttore spento
obj_horizontal_saw spr_horizontal_saw Horizontal saw
Room room_3

 

Interruttore spentoobj_lever

Oggetto inanimato

Walk upobj_koala

Collision Event obj_locked_area

Move Fixed Start moving in direction (000010000) with speed set 0

 

Collision Event obj_lever

Sprite Action For other object: set the sprite to spr_switch_on
Destroy Action For all obj_locked_area: destroy the instance

L’area bloccata è invalicabile.
L’interruttore cambia stato e distrugge tutte le aree bloccate.

 

Horizontal sawobj_horizontal_saw

image Create

Horizontal Speed Action Set the horizontal speed to 4

 

Collision Event obj_koala

Play Sound Play sound snd_saw; looping: false
image Change into instance into obj_dead_koala

 

Collision Event obj_wall
Collision Event obj_locked_area
Collision Event obj_lever

image Reverse horizontal direction

Si comporta come la sega verticale tranne che per il movimento orizzontale.

Ecco il terzo livello
KOALABR8 3

 

Riepilogo

personaggi del gioco sono: l’eucalipto, l’uscita, il koala, l’esplosivo, le due seghe, il passaggio bloccato, l’interruttore.

TIPO NOME FILE
Sprite spr_walk_up walk_up_strip8.png Walk up
spr_walk_left walk_left_strip8.png Walk left
spr_walk_down walk_down_strip8.png Walk down
spr_walk_right walk_right_strip8.png Walk right
spr_dead_koala dead_koala.png Dead koala
spr_eucalyptus eucalyptus.png Eucalyptus
spr_exit exit.png Exit
spr_locked locked.png Locked area
spr_switch_off switch_off.png Interruttore spento
spr_switch_on switch_on.png Interruttore acceso
spr_tnt tnt.png TNT
spr_vertical_saw vertical_saw_strip2.png Vertical saw
spr_horizontal_saw horizontal_saw_strip2.png Horizontal saw
Sound snd_music music.mid
snd_bonza bonza.wav
snd_explosion explosion.wav
snd_saw saw.wav
Background back_game background.png
Object obj_koala spr_walk_up Walk up
obj_dead_koala spr_dead_koala Dead koala
obj_wall spr_eucalyptus Eucalyptus
obj_exit spr_exit Exit
obj_locked spr_locked Locked area
obj_lever spr_switch_off Interruttore spento
obj_tnt spr_tnt TNT
obj_vertical_saw spr_vertical_saw Vertical saw
obj_horizontal_saw spr_horizontal_saw Horizontal saw
obj_controller <no sprite>
Room room_1

 

Eucalyptusobj_wall

  • Solid

 

TNTobj_tnt

 

Exit

obj_exit

 

Interruttore spentoobj_lever

 

obj_controller

Step Event Step

image If lives are equal to 8
Start Block Start of a block
Sleep Action Sleep 1000 milliseconds
Next Room Go to next room with transition effect Interlaced from top
End Block End of a block

 

image Game Start

Play Sound Play sound snd_music; looping: true
image Show the game info

 

image Room Start

image Set the number of lives to 0

 

image Draw

image Draw the lives at (0,0) with sprite spr_walk_up

 

image press R-key

Current Room Restart the current room

 

Walk upobj_koala

  • Solid

 

Collision Event obj_koala
Collision Event obj_wall
Collision Event obj_locked_area

Move Fixed Start moving in direction (000010000) with speed set 0

 

Collision Event obj_exit

Play Sound Play sound snd_bonza; looping: false
image Set the number of lives relative to 1
Destroy Action Destroy the instance

 

Collision Event obj_tnt

Play Sound Play sound snd_explosion; looping: false
image Change into instance obj_dead_koala

 

Collision Event obj_lever

Sprite Action For other object: set the sprite to spr_switch_on
Destroy Action For all obj_locked_area: destroy the instance

 

image <no key>

If Grid If object is aligned with grid with cells of 40 by 40 pixels

Begin Start of block
Move Fixed Start moving in direction (no) with speed set 0
End End of block

 

image <Left>

If Grid For all obj_koala: If object is aligned with grid with cells of 40 by 40 pixels

Begin Start of block
Sprite Action Change sprite into spr_walk_left
If Free If relative position (-4,0) for Only solid objects

Begin Start of block
Move Action 1 Start moving in a direction (sx) with speed set to 4
End End of block

Else Action Else

Begin Start of block
Move Action 1 Start moving in a direction (no) with speed set to 0
End End of block

End End of block

 

image <Right>
image <Up>
image <Down>

Copia l’evento precedente e cambia la sprite (up) (right) (down), la posizione relativa di collisione (0,-4) (+4,0) (0,+4) e la direzione del movimento (su) (dx) (giù)

 

Dead koalaobj_dead_koala

image Create

Set the gravity Set the gravity to 2 in direction 270
Move Free Set speed to 15 and direction to 80

 

Other Event Outside Room

Destroy Action Destroy the instance

 

Vertical sawobj_vertical_saw

image Create

Vertical Speed Action Set the vertical speed to 4

 

Collision Event obj_koala

Play Sound Play sound snd_saw; looping: false
image Change into instance into obj_dead_koala

 

Collision Event obj_wall
Collision Event obj_locked_area
Collision Event obj_lever

image Reverse vertical direction

 

Horizontal sawobj_horizontal_saw

image Create

Horizontal Speed Action Set the horizontal speed to 4

 

Collision Event obj_koala

Play Sound Play sound snd_saw; looping: false
image Change into instance into obj_dead_koala

 

Collision Event obj_wall
Collision Event obj_locked_area
Collision Event obj_lever

image Reverse horizontal direction

 

I livelli

Inserisci l’immagine dello sfondo

Background

e poi continua
  • imposta
    • Snap X: 40
    • Snap Y: 40
  • posiziona un’istanza di obj_controller nell’angolo in alto a destra
  • posiziona tutte le altre istanze
  • lascia la prima riga libera per l’indicatore dei koala salvati.