Salut tout le monde,
Etant débutant en prog, j'ai besoin d'aide sur un petit jeu que je me fais, c'est un paintplash : url :
http://www.gameonly.com/fr/jeux/jeux...plash-1940.htm
sauf qu'a la place de forme bizarre, c'est une matrice, chacun ayant une couleur.
Le principe : Le joueur clique sur une case adjacent à la case de départ mise en blanc, celle ci affecte à la case de départ la nouvelle couleur. Le but est de remplir toutes la matrice avec 1 seul couleur avec le minimum de coup.
Je travaille sous la libraire graphics.h de Libgraphics. et j'ai réalisé une génération aléatoire des couleurs et une sauvegarde (abscisse, ordonnée, couleur de chaque case). De plus je fais la demande au début de la taille de la matrice. Tout cela fonctionne.
J'ai fais un tableau de structure comprenant la couleur, l’abscisse, l'ordonne de chaque cases créent.
Maintenant j'ai besoin de comprendre (hé j'ai un peu de mal) a savoir comment je pourrai m'y prendre d'un point de vue algorithmique pour changer la couleur selon la zone de jeu, si je suis bien adjacent à la zone de jeu, au début, c'est la case blanche mais après sa se complique...
Fenetre = 500*500
Chaque case fait h=50 et L=100
J'ai commencé par essayer de cliquer sur une case adjacents à la case blanche (case de départ), sa fonctionne bien mais maintenant je dois essayer de prendre en compte l'évolution de la zone de jeu (J’espère que vous comprenez ce que je dis par évolution de la zone de jeu. Au début c'est la blanche mais elle va s'agrandir et changer de couleur)
J'ai commence a réfléchir comme-ci :
1- D’abord trouver les case adjacents de la zone de départ ou" zone de jeu "- les enregistrer dans un tableau (facile au début pour la case blanche, mais ensuite c'est plus difficile)
2- Trouver la case que le joueur à clique et vérifier si elle appartient au case adjacents
3- Si oui affecter la couleur à la zone de jeu (via une boucle for sur mon tableau qui enregistre les cases adjacents.
La question :
La ou j'ai besoin d'aide c'est sur la numéro 1, comment pourrai je m'y prendre pour déterminé ma zone de jeu.
Au début c'est facile mais après que la case blanche a changer de couleur, c'est complexe. Car plusieurs cases deviendrons la zone de jeu, Pouvez vous m'aider?
J’espère avoir été clair dans ce petit projet.
PS : Si il y a des fautes, compréhensions, veuillez m'en excusez.
Je vous met des bouts de mon code : (c'est dans la fonction jeu que je travaille)
et la fonction" menu" qui demande la taille n'est pas donné ( pas utile) je met le minimum.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133 #define GEOMETRIE " 500x500" #define LARGEUR 500 #define HAUTEUR 500 #define case_h 50 #define case_l 100 #define x_new 50 #define y_new 400 #define x_load 150 #define y_load 400 #define x_enreg 250 #define y_enreg 400 #define x_quit 350 #define y_quit 400 //La structrure typedef struct { int id_case; int color; int abs; int ord; }Matrice; Matrice *tab; int main () { //Ouverture de la fenêtre graphique gr_open_graph(GEOMETRIE); //Menu draw_menu(); menu(); // Etat position de souris gr_wait_event(BUTTON_UP); // On nettoie et on s'en va gr_close_graph(); //Desalocation de la memoire free(tab); printf("\nDesalocation de la mémoire realise"); //printf("%d",tab); return 0; } //On fais le jeu (Dedans que j'aimerai faire le jeu ...) pour l'instant c'est tant que c'est vrai mais c'est version BIG TEST^^ void jeu(int taille) { int x,y=0; while(1) { //atente even 1 gr_wait_event(BUTTON_DOWN); //recup coordonne gr_mouse_pos(&x, &y); //affichage printf("\nCoordonee: x:%d y: %d", x,y); x=0; y=0; } } //Fonction qui dessine la matrice void nouveau (int col, int ligne) { int i,x,y,j; int abs, ord, couleur; int plas=0; abs = 50; ord = 250; gr_moveto(0,0 ); /* Generer un Couleur aletatoire*/ int Tab_color[6]={red,green,blue,yellow,cyan,magenta}; //int Tab[1][1]; /* Rectangle de base*/ srand(time(NULL)); for (i=0; i<ligne; i++) { for (j=0; j<col; j++) { //creation couleur if (abs==50 && ord==250) { gr_set_color(white); tab[0].id_case=plas; tab[0].color=white; tab[0].abs=abs; tab[0].ord=ord; } else { couleur = Tab_color[(rand()%6)]; gr_set_color(couleur); gr_fill_rect(abs, ord ,case_l, case_h); //enregistr dans tab plas=plas+1; tab[plas].id_case=plas; tab[plas].color=couleur; tab[plas].abs=abs; tab[plas].ord=ord; } //creation entourage gr_set_color(black); gr_set_line_width(3); gr_moveto(abs,ord); gr_lineto(abs,ord+50); gr_lineto(abs+100,ord+50); gr_lineto(abs+100,ord); gr_lineto(abs,ord); abs = abs + 100; //Tab[i][j]=couleur; } ord = ord - 50; abs = 50; } printf("\nMatrice dessine"); }
Partager