Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/01/2014, à 23:12

kinezana

[Résolu] Comportement imprévisible avec rand() et un switch

Bonjour à tous !

Je ne sais pas vraiment si rand() et/ou le switch sont en cause, mais quand je fais tourner ce code :

for(i = 0;i<64;i++)
	{
		position.x = 100+i/8*75;
		position.y = i%8*75;
		r = rand()%5;
		switch(r)
		{
			case 0:
				SDL_BlitSurface(blue, NULL, ecran, &position);
				printf("%d : bleue [%d;%d]\n",i, position.x, position.y);
				grille[i] = 0;
				break;
			case 1:
				SDL_BlitSurface(yellow, NULL, ecran, &position);
				printf("%d : jaune [%d;%d]\n",i, position.x, position.y);
				grille[i] = 1;
				break;
			case 2:
				SDL_BlitSurface(purple, NULL, ecran, &position);
				printf("%d : violette [%d;%d]\n",i, position.x, position.y);
				grille[i] = 2;
				break;
			case 3:
				SDL_BlitSurface(green, NULL, ecran, &position);
				printf("%d : verte [%d;%d]\n",i, position.x, position.y);
				grille[i] = 3;
				break;
			case 4:
				SDL_BlitSurface(red, NULL, ecran, &position);
				printf("%d : rouge [%d;%d]\n",i, position.x, position.y);
				grille[i] = 4;
				break;
		}
		if((i+1)%8 == 0)
			printf("\n");
	}

Ça fait une grille de 8*8 avec une génération aléatoire d'une couleur sur 5 possible dans chacune des cases. Comme je dois faire des opérations, je voudrai stocker un chiffre associé à une couleur dans un tableau int[64]. Normal quoi.
Sauf que j'ai l'impression que les "case" se mélangent entre eux.
Lorsque l'output est "rouge" (donc implique un case à 4), la case du tableau est bien 4, mais l'image affiché n'est pas celle associé à "red" etc...
L'allocation de la case du tableau et le printf sont toujours raccords, mais pas les images affichés. Et c'est irrégulier en plus.

Exemple d'output et d'affichage (oui c'est un Cnadycrush-like, je m'occupe !) :

1390857015-capture-d-ecran-27012014-22-06-10.png

0 : rouge [100;0]
1 : bleue [100;75]
2 : verte [100;150]
3 : verte [100;225]
4 : bleue [100;300]
5 : rouge [100;375]
6 : rouge [100;450]
7 : jaune [100;525]

8 : violette [175;0]
9 : jaune [175;75]
10 : rouge [175;150]
11 : verte [175;225]
12 : violette [175;300]
13 : rouge [175;375]
14 : violette [175;450]
15 : verte [175;525]

16 : bleue [250;0]
17 : violette [250;75]
18 : violette [250;150]
19 : verte [250;225]
20 : violette [250;300]
21 : verte [250;375]
22 : violette [250;450]
23 : rouge [250;525]

24 : verte [325;0]
25 : violette [325;75]
26 : jaune [325;150]
27 : rouge [325;225]
28 : verte [325;300]
29 : jaune [325;375]
30 : violette [325;450]
31 : rouge [325;525]

32 : verte [400;0]
33 : bleue [400;75]
34 : violette [400;150]
35 : verte [400;225]
36 : rouge [400;300]
37 : verte [400;375]
38 : bleue [400;450]
39 : verte [400;525]

40 : rouge [475;0]
41 : jaune [475;75]
42 : jaune [475;150]
43 : violette [475;225]
44 : bleue [475;300]
45 : verte [475;375]
46 : violette [475;450]
47 : bleue [475;525]

48 : verte [550;0]
49 : rouge [550;75]
50 : bleue [550;150]
51 : violette [550;225]
52 : rouge [550;300]
53 : violette [550;375]
54 : violette [550;450]
55 : violette [550;525]

56 : bleue [625;0]
57 : bleue [625;75]
58 : verte [625;150]
59 : bleue [625;225]
60 : jaune [625;300]
61 : bleue [625;375]
62 : rouge [625;450]
63 : jaune [625;525]

N'hésitez pas à demander des précisions et merci beaucoup d'avance !

Dernière modification par kinezana (Le 28/01/2014, à 04:09)

Hors ligne

#2 Le 28/01/2014, à 04:08

kinezana

Re : [Résolu] Comportement imprévisible avec rand() et un switch

Wooookaaaay, donc à la ligne 3 et 4, ce n'est pas

position.x = 100+i/8*75;
position.y = i%8*75;

mais

position.x = 100+i%8*75;
position.y = i/8*75;

cool Je vais me pendre, au revoir.

Hors ligne