Nell’articolo precedente, illustrando le variabili utilizzate nel gioco, avevo parlato di due di queste, rispettivamente “stato” e “stato_p”. stato è una variabile di tipo GameState. stato_p, invece, è una variabile di tipo StatoPartita. Questi due “tipi” sono delle enumerazioni.

Cos’è un enumerazione, e perchè è così importante? In realtà se state dando un occhiata alla programmazione di giochi dovreste saperlo, però due paroline le spendo volentieri. Stando alla cara MSDN, ecco una dritta:

C# consente di creare il proprio set di costanti denominate utilizzando la parola chiave enum. Questi tipi di dati consentono di dichiarare un set di nomi o di altri valori letterali che definiscono tutti i valori possibili assegnabili a una variabile.

Questo è un ottimo modo per rendere l’idea degli Stati in cui il gioco si trova. Nel mio caso, per esempio, ecco il codice delle enumerazioni, contenute nel file Utils.Cs.

[code]]czoyNzc6XCINCnVzaW5nIFN5c3RlbTsNCnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOw0KdXNpbmcgU3lzdGVtLlRleHR7WyYqJl19Ow0KDQpuYW1lc3BhY2UgQUdBV0YNCnsNCiAgICBwdWJsaWMgZW51bSBHYW1lU3RhdGUNCiAgICB7DQogICAgICAgIEludHJvLA0KIHtbJiomXX0gICAgICAgR2FtZSwNCiAgICAgICAgRXhpdA0KICAgIH0NCg0KICAgIHB1YmxpYyBlbnVtIFN0YXRvUGFydGl0YQ0KICAgIHsNCiAge1smKiZdfSAgICAgIFByaW1hLA0KICAgICAgICBJbkNvcnNvLA0KICAgICAgICBGaW5lDQogICAgfQ0KfQ0KXCI7e1smKiZdfQ==[[/code]

Come potete vedere, ho creato due enumerazioni. Una per lo stato del gioco (il gioco comprende sia la schermata iniziale che la schermata di gioco) ed una per lo stato della partita (che serve a determinare se la partita sta per iniziare, è in corso o è finita).

In questo modo, passando da un valore all'altro di un enumerazione, potremo scegliere cosa disegnare a schermo e cosa no. Per fare un esempio pratico, in GameState.Game non disegneremo mai la schermata di introduzione. Con lo stesso ragionamento, per esempio, non ci sogneremmo mai di disegnare a schermo il testo “Premi Invio per Iniziare” una volta che la partita è in corso.

Un aiuto non indifferente, sempre meglio che utilizzare degli int per indicare gli stati come facevo nei programmi del terzo superiore :D

  • Share/Bookmark