Computer_Zone
Vuoi reagire a questo messaggio? Crea un account in pochi click o accedi per continuare.

CREARE IL PROPRIO VIDEOGAME IN C#:SESTA PARTE

Andare in basso

CREARE IL PROPRIO VIDEOGAME IN C#:SESTA PARTE Empty CREARE IL PROPRIO VIDEOGAME IN C#:SESTA PARTE

Messaggio  Admin Dom Mag 10, 2009 9:01 pm

6)TIPI DI DATI

Non esamineremo tutti i tipi di dati esistenti ma solo quelli per noi più importanti, quelli cioè che utilizzeremo in maggior modo con XNA: string, int, float, byte e bool.

Il compilatore ha bisogno di sapere sin da subito che tipo di dati intendiamo gestire per riservare uno spazio di memoria adeguato per quel tipo di dato.

Quando dichiariamo una variabile avremo informato il compilatore che tipo di dato è quello che stiamo usando e verrà riservata una "porzione di memoria" solo per lui.
Per esempio, il tipo di dato int occupa 4 byte mentre il tipo di dato byte occupa un solo byte. Si intuisce che sarebbe spazio di memoria sprecato riservare 4 o più bytes per il tipo di dato byte che ne userà sempre solo uno. Per evitare sprechi di memoria si rende dunque necessario dichiarare il tipo di variabile sin da subito.
Quando dichiareremo una variabile di un tipo, verrà riservato lo spazio necessario per essa, ovvero, verrà "allocato" lo spazio necessario.


string pippo;

Con questa riga avremo fatto la dichiarazione e uno spazio di memoria sarà stato riservato (allocato) per la variabile pippo, di tipo string.
In questo modo la gestione della memoria diventerà migliore e non ci saranno sprechi di memoria.





- Tipo string

Abbiamo già avuto modo di conoscere il tipo di dati string ma facciamo un esperimento.
Proviamo a "sommare" più stringhe.
Come con ogni tipo di variabile è possibile fare una marea di operazioni e le stringhe non fanno eccezione.
Potremo confrontare due variabili string , concatenarle, dividerle in punto specifico, fare ricerche di specifiche parole o caratteri in un testo e fare tutte quelle operazioni che ci vengono in mente su un testo. Nell'esecuzione di un gioco anche i testi sono importanti.
Non pensiate che le stringhe servano solo per visualizzare del testo nella nostra finestra dos.
Tutti i testi possibili in un videogioco (conversazioni tra personaggi, punteggi, livelli e quant'altro) saranno gestibili grazie a tutti i metodi che la classe string ci mette a disposizione.

Dicevamo, volevamo unire due testi, due stringhe.
Creiamo due stringhe, una con scritto "Buona lettura " ed una con scritto "con la mia guida " (ovviamente voi potete scrivere ciò che volete Smile)
Poi creiamo una nuova stringa che chiameremo "unione" (o come meglio credete).
Grazie al metodo Concat presente nella classe string, potremo concatenare le due stringhe in una sola che andrà a definire la variabile unione.
Con il solito metodo WriteLine stamperemo la nostra variabile.


using System;

class Evviva
{
static void Main()
{
string pippo="Buona lettura "; // Creo e imposto la variabile "pippo".

string paperino="con la mia guida "; // Creo e imposto la variabile "paperino".

string unione= string.Concat(pippo+paperino); // Unisco le due stringhe e la salvo nella variabile "unione".


Console.WriteLine(unione); //Chiamo la classe Console e utilizzo il metodo WriteLine stampando il contenuto di "unione"
}
}


Proviamo poi ad unire un'altra parte di stringa ma questa volta senza metterla in una variabile, cambiamo il contenuto di WriteLine così:

string unione= string.Concat(pippo+paperino+ "di XNA!");

Come potrete notare si possono fare un sacco di operazioni con tante diverse metodologie, sta a voi decidere quale sia la migliore a seconda delle esigenze. Avremmo potuto scrivere anche così:

string unione= string.Concat(pippo,paperino, "di XNA!");

Cioè usando le virgole tra una variabile e l'altra, questo perché Concat concatena tutte le string che trova all'interno delle parentesi, anche se divise da una virgola. Personalmente preferisco usare il segno + perché rende meglio l'idea di concatenazione, di somma delle stringhe.

Avremmo potuto addirittura scrivere così:

string unione= pippo+"paperino"+ "di XNA!"

Senza usare cioè il metodo Concat.

Avrete già notato che, appena scriverete il punto dopo la parola string, si aprirà un bel menù che ci darà la possibilità di scegliere uno dei tanti metodi che ci mette a disposizione string:



Ma per ora non ci servono, a voi fare i voluti esperimenti con le stringhe.




-Tipo int

Il tipo di dati int rappresenta un semplice numero intero che può essere anche negativo.
Mentre, se volessimo usare solo numeri positivi dovremo dichiarare la variabile con la parola uint che sta a significare "numero intero senza segno" (unsigned int).

Tutti i tipi di dati numerici hanno dei limiti, per esempio:
un numero uint ha il limite di 4.294.967.295 cifre (cioè da 0 a 4.294.967.295) e l'int da -2.147.483.648 a 2.147.483.647. Ovviamente non dovrete ricordare questi numeri, vi basti sapere che, se volete utilizzare un numero che andrà oltre i 4 miliardi e rotti dovrete usare un altro tipo di numeri interi come per esempio long che potrà superare i 18.000.000.000.000.000.000, un bel numerone! Smile
Tutto questo sempre per la questione di allocazione di memoria di cui abbiamo parlato all'inizio. Se prevediamo che dovremo usare un numero minore di 4 miliardi, sarà un inutile spreco di memoria utilizzare un tipo di dato long, ci basterebbe un int.

-Tipo float

Questo tipo di dato numerico è assai importante, è il primo tipo di dato che viene utilizzato per la memorizzazione di numeri con la virgola. Anche esso ha dei limiti ma per ora non preoccupiamocene onde evitare di confonderci le idee con tanti numeri.

La cosa più importante da ricordare dei numeri float è che per utilizzarlo, bisogna farlo seguire dalla lettera f in questo modo:

float numero = 3.5f oppure float numero = 3.5F

In questo caso avremo creato la variabile numero di tipo float che vale 3.5 .




-Tipo byte

Questo è un tipo di dato molto piccolo che utilizza un solo byte di memoria. Da questo deriva il suo nome. E' un tipo di dato numerico senza virgola.
Nel nostro caso, con XNA, ci tornerà molto utile per impostare i colori utilizzando meno memoria possibile, essendo i colori una classe specifica di XNA (Color) che definisce un tono cromatico in base alle varianti dei tre colori principali, rosso, verde e blu.
Come avrete notato, se usate Photoshop o qualunque altro programma di grafica, questa tecnica viene chiamata RGB che sta appunto per Red, Green, Blue.
Un tipo di dati byte (senza segno) può essere compreso tra 0 e 255 e dunque, possiamo già anticipare che, per creare un colore non potremo mai superare il numero 255. Si intuisce che, per esempio, il colore bianco sarà rappresentato da 255 parti di rosso, 255 parti di verde e 255 parti di blu. mentre il nero sarà rappresentato da 0 parti di rosso, 0 parti di verde e 0 parti di blu.
Della classe Color ne parleremo più approfonditamente nella lezione 13.

Anche i numeri di tipo byte possono essere utilizzati con il segno utilizzando il tipo sbyte (da -128 e 127) ma noi non li useremo mai.




-Tipo bool

Questo tipo di dato non è ne numerico ne testuale ed è molto importante quanto semplice da capire. Un tipo di dati bool ha solo due valori, vero o valso (true o false). Tutto qui. Mettiamo per esempio di voler verificare se c'è una collisione tra due modelli, un'auto da corsa e il muro che delimita la pista.

if (auto.Intersects(muro))
{
bool collisione= true;
}

In pratica, se la collisione risulterà true, cioè vera, faremo fare alla macchina quello che vogliamo (decelera, sbanda, esplodi, fuoco e fiamme, morti e feriti ecc..Smile) In seguito vedremo meglio come e dove utilizzare i tipi di dato bool.








string è un tipo di dati testuale .
int è un tipo di dati numerico intero.
float è un tipo di dati numerico con virgola.
bool è un tipo di dati boleano (true o false).
byte è un tipo di dati numerico che va da 0 a 255 .
Admin
Admin
Admin

Messaggi : 17
Data di iscrizione : 14.02.09
Età : 32
Località : Vicenza

https://computerzone.elencoforum.com

Torna in alto Andare in basso

Torna in alto

- Argomenti simili

 
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.