«

»

dic 12

Print this Articolo

LUA – Un menu per i vostri giochi

Ben tornati ragazzi, con questa guida vi spieghrò come implementare un menu nel vostro gioco, in modo tale che un giocatore, possa mettere il gioco in pausa, eseguire il restart del livello che sta giocando, oppure uscire dal gioco e tornare alla schermata principale.

Ovviamente vi fornirò una versione di menu che ho fatto io, ma nulla vieta che voi andiate a modificarla secondo le vostre esigenze, aggiungendo o togliendo link dal suddetto menu di gioco

Cominciamo :

come prima cosa vi posto il codice del menu, poi andremo nel dettaglio.

1 function menu()
-- -------------------
2 i=i+1
-- -------------------
3 if pad:up() then timer1 = timer1 + 1 end
4 if not pad:up() then timer1 = 0 end
5 if timer1 == 1 then Selected = Selected - 10 end
-- -------------------
6 if pad:down() then timer2 = timer2 + 1 end
7 if not pad:down() then timer2 = 0 end
8 if timer2 == 1 then Selected = Selected + 10 end
-- -------------------
9 screen:fillRect(150,90,150,100,bianco)
-- -------------------
10 screen:print(160,120,"PAUSE MENU :",rosso)
11 screen:print(160,130,"Resume Game",nero)
12 screen:print(160,140,"Restart Game",nero)
13 screen:print(160,150,"Go To Main Menu",nero)
14 screen:print(160,160,"Quit",nero)
-- -------------------
15 if Selected==0 then screen:print(160,130,"Resume Game",rosso) end
16 if Selected==0 and pad:cross() and i>15 then [specicate quello che deve fare] end
-- -------------------
17 if Selected==10 then screen:print(160,140,"Restart Game",rosso) end
18 if Selected==10 and pad:cross() and i>15 then [specicate quello che deve fare] end
-- -------------------
19 if Selected==20 then screen:print(160,150,"Go To Main Menu",rosso) end
20 if Selected==20 and pad:cross() and i>15 then [specicate quello che deve fare] end
-- -------------------
21 if Selected==30 then screen:print(160,160,"Quit",rosso) end
22 if Selected==30 and pad:cross() and i>15 then System.Quit() end
-- -------------------
23 if pad:circle() then mode=0 end
-- -------------------
24 if Selected==40 then Selected=30 end
25 if Selected==-10 then Selected=0 end
-- -------------------
26 end

Alla riga 2, trovate un contatore che comincia ad incrementare non appena si apre il menu, questo serve perchè altrimenti appena voi schiacciate il pulsante di apertura, se nello stesso istante state premendo anche il tasto croce, questo selezionarebbe la prima opzione nel menu; mentre con il timer che attende qualche secondo, non rischiate di selezionare una opzione indesiderata.

Dalla riga 3 alla 8, vi è il codice che serve per selezioanre le opzioni presenti nel menu, infatti se premi il tasto giù la selezione si sposta di un riga in basso selezionando l’opzione sottostante a quella che era selezionata prima.

Il comando alla riga 9, serve per creare un rettangolo colorato che sarà lo sfondo del vostro menu.

Dalla riga 10 alla 14, vi sono le scritte che saranno visualizzate nel menu

Le righe 15, 17, 19 e 21, servono per evidenziare la scelta selezionata, sovrascrivendo alla scitta originale dell’opzione, la stessa scritta ma di colore rosso, in questo modo vedete quello che state selezioando.

Le righe 16, 18, 20 e 22, invecie servono per specificare ciò che il programma deve fare al momento della selezione e della conferma dell’opzione.

Il codice alla riga 22, è una parte fondamentale della funzione, infatti, serve per chiudere il menu. Per fare ciò, è stato inizializzato un flag (ovviamente fuori della funzione) che se messo a 1 apre il menu, viceversa se messo a 0 lo chiude. In questo modo, voi implementate il menu nel vostro gioco/programma, inizalizzando il flag “mode” a 0, e poi, quando vi serve aprire il menu, mettete il suddetto flag a 1.

Infine il codice delle ricghe 24 e 25, serve per fare in modo che la selezione delle opzioni nel menu, non vada oltre all’ultima riga o prima della prima riga, perche altrimenti si selezionerebbe un opzione nulla.

Bene, questo era l’ultimo passaggio, se avete dubbi o perplessità non esitate a commentare questo post, e sarò felice di rispondervi, a presto.

_____________________________________________________________________________________________ Ti è piaciuto questo articolo ? Condividilo !

Permanent link to this article: http://taketheball.altervista.org/?p=220

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>