martedì 17 luglio 2012

Videogames e programmazione (parte 3)

In questa terza parte, proporremo un vero e proprio programma in blitzbasic 3d.
Questo post non prevede di insegnare le basi della programmazione ma piu che altro di introdurre coloro che gia hanno qualche cognizione (meglio se piu di una!) relativamente alla programmazione strutturata like basic/pascal.
Prima di tutto bisogna scaricare e installare il Blitz3d che si trova a questo link.
Scaricate la versione di prova per Windows e installatela, un consiglio che vi posso dare e se avete Windows Vista di installarlo sul desktop (o in cartella equivalente) ma non in Programmi. Con Windows vista la questione della cartella programmi e diventata una vera e propria barzelletta a causa della localizzazione, per cui potreste avere problemi con i nomi della cartella...con Windows XP tutto ok, con Windows  7 pure (non ho verificato se si comporta come Vista ma dovrebbe essere diverso).
Una volta installato il Blitz3d avete a disposizione la cartella Tutorials e Games con moltissimi esempi gia pronti e anche complicati nel senso che con poche righe vi stupirete di quello che si puo fare!
Aprite ora un nuovo documento..e copiate il seguente codice (per niente strutturato...ma buono lo stesso):

;******************************************************************
Print "********************** Numeri a caso ***************************"
SeedRnd(MilliSecs())                                    ; CON QUESTA ISTRUZIONE INIZIALIZZATE IL GENERATORE DI NUMERI CASUALI


f=Rnd(20)                                ; VIENE SCELTO UN NUMERO CASUALE TRA 0 E 20

For g=1 To 5                          ; MAX 5 TENTATIVI  PER INDOVINARE IL NUMERO
 guess% = Input ("Indovina il numero? (0 - 20) ")     ; RICHIESTA DA TASTIERA DI INPUT INTERO
If guess=f Then Goto goat                                      ; HAI INDOVINATO SALTA ALLA RIGA .goat
If guess<f Then Gosub cow                                   ; SE PIU PICCOLO SALTA ALLA RIGA .cow
If guess>f Then Gosub head                                  ; SE PIU GRANDE SALTA ALLA RIGA  .head
.g
Next

; NELLA RIGA SUCCESSIVA SI COMUNICA DI AVER PERS0
Print"Numero di tentativi di prova finito! Il numero da indovinare era: ": Print f
; SI ATTENDE LA PRESSIONE DEL TASTO DEL MOUSE
MouseWait
; SI CHIUDE IL PROGRAMMA
End

; STESSA COSA DELLE RIGHE PRECEDENTI MA L' ISTRUZIONE RETURN FA RITORNARE
;ALLA RIGA SUCCESSIVA DEL GOSUB CHE LA INVOCATA
.cow Print "Troppo basso. Riprova!":Return
.goat Print "Ben fatto! hai indovinato il numero. Bravo!"
MouseWait
End
.head Print"Tropo alto. riprova":Return
MouseWait
End
;*************************** FINE DEL CODICE DEL PROGRAMMA

Non vi nego che anchio spesso uso l' istruzione Goto, ormai dichiaratamente etichettata come "illegale" nella maggior parte dei linguaggi sopratutto se sono a scopo didattico. La realtà è pero diversa in quanto spesso e volentieri l' istruzione goto si rivela davvero utile. E comunque una buona regola cercare di evitarla o al max usarla solo in casi dove e chiaro che non arreca mai variazioni al flusso di esecuzione del programma.
Trasformare questo programma in un programma ben strutturato è una operazione semplicissima.
Al  momento vi bastera cercare il comando run (nell' interfaccia grafica viene rappresentato con un missile/razzo di colore rosso) ed eseguirlo. Provate a modificare il valore finale della variabile nella istruzione for per avere piu tentativi e magari postate la versione strutturata come commento. Alla prossima.


Nessun commento:

Posta un commento