E’ la funzione più utilizza ed anche la più complessa, sto parlando della funzione che gerera in maniera pseudo causale dei numeri, la funzione random().
Ogni linguaggio ne ha una e per cocos2d la definizione è CCRANDOM_0_1() oppure CCRANDOM_MINUS1_1(), la prima genera un numero casuale tra 0 e 1 mentre l’altra tra -1 e 1.
Ci sono tanti metodi per inizializzare la funzione random(), il più popolare è chiamare:
srandom(time(NULL));
Personalmente però preferisco utilizzare arc4random(), perchè ha il doppio della portata di rand() che viene utilizzada da CCRANDOM.
RAND_MAX è 0x7fffffff (2147483647), mentre arc4random() tornerà un valore massimo pari a 0x100000000 (4294967296), quindi una maggiore precisione.
Per generare un intero tra 0 e x-1 con arc4random() si può scrivere:
int value = arc4random() % x;
Per generare un valore tra 1 e x invece si scrive:
int value = (arc4random() % x) + 1;
E’ possibile generare anche un valore tra 0 e 100 comprendendo i decimali semplicemente scrivendo:
#define ARC4RANDOM_MAX 0x100000000 double val = floorf(((double)arc4random() / ARC4RANDOM_MAX) * 100.0f);
In generale per avere una funzione random tra un min e un max è sufficiente scrivere la seguente funzione:
static int randomBetween(int min, int max) { return (arc4random() % (max - min)) + min; }
Buon lavoro.
Ultimi Commenti