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 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247
|
//on initialise le tableau des couleurs, on initialise à +1, -1 pour que le tour du tableau soit entouré de -1 après avoir mis les boules, comme ca, pas d'erreur avec les boules adjacentes
void initableaux(int coul[TX+2][TY+2]) {
int l,h;
for (h=-1;h<TY+1;h++) {
for (l=-1;l<TX+1;l++) {
coul[l][h]=-1;
}
}
}
//on l'affiche à la cnsole
void console(int coul[TX+2][TY+2]) {
int l,h,x,y;
for (h=-1;h<TY+1;h++) {
for (l=-1;l<TX+1;l++) {
printf("%d ",coul[l][h]);
}
putchar('\n');
}
putchar('\n');
}
//on créer la grille où il y aura les boules de couleur
void creergrille(int coul[TX+2][TY+2],int nbc) {
int l,h,x,y;
srand (time(NULL));
for(h=0;h<TY;h++) {
for(l=0;l<TX;l++) {
//même chance aléatorie pour placer les boules
coul[l][h]=rand()%nbc;
}
}
}
//on initialise les fonctions inclu dans la bibliothèque graphique graph.h
void initialisergraphique(int tx,int ty) {
int l,h,a=0,b=0;
InitialiserGraphique();
extern char *nf;
nf="Episy Foly Game";
CreerFenetre(Maxx()/2-300,Maxy()/2-300,900,400);
AfficherFenetre();
EffacerEcran(NOIR);
for (h=0;h<=TX;h++) {
DessinerSegmentC(a,0,a,400,BLANC);
a+=CASE;
}
for (l=0;l<=TY;l++) {
DessinerSegmentC(0,b,600,b,BLANC);
b+=CASE;
}
ChargerImageFond("fond.xpm");
EcrireTexteC(740,160,"Score : ",BLANC,1);
}
//on place les boules
void positionnerboules(int coul[TX+2][TY+2]) {
int l,h;
for (l=0;l<TX;l++) {
for (h=0;h<TY;h++) {
if (coul[l][h]==0)
RemplirArcC(l*CASE+2,h*CASE+2,36,36,360,360,BLEU);
if (coul[l][h]==1)
RemplirArcC(l*CASE+2,h*CASE+2,36,36,360,360,ROUGE);
if (coul[l][h]==2)
RemplirArcC(l*CASE+2,h*CASE+2,36,36,360,360,VERT);
if (coul[l][h]==3)
RemplirArcC(l*CASE+2,h*CASE+2,36,36,360,360,NOIR);
}
}
}
//on fait en sorte que les boules tombent quand il n'y en a plus en dessous
void bouge(int coul[TX+2][TY+2]) {
int l,h;
for (h=0;h<TY;h++) {
for (l=TX-1;l>=0;l--) {
if (coul[l][h]==3 && coul[l][h-1]!=-1 && coul[l][h-1]!=3 && coul[l][h]!=0) {
coul[l][h]=coul[l][h-1];
coul[l][h-1]=3;
}
}
}
//on affiche le tableau des couleurs
printf("tableau couleurs!\n");
for (h=0;h<TY;h++) {
for (l=0;l<TX;l++) {
printf("%d ",coul[l][h]);
}
putchar('\n');
}
putchar('\n');
}
//on s'occupe de la selection en subrillance et de la supression
void cliquesouris(int coul[TX+2][TY+2],int virtuel[TX][TY]) {
int a,b,l,h,indice=1,repaire,hh,ll,x=_X,y=_Y,d,e;
//tant qu'on ne clique pas, faire ...
while(!SourisCliquee()) {
//on récupère les coordonnées de la souris dans _X et _Y
SourisPosition();
//ici
a=_X/CASE;
b=_Y/CASE;
//on initialise le tabelau virtuel à -1, il est identique au tableau des couleurs, il est remplie de -1, et quand la souris selectionne les boules, on met des 1 là où les boules sont sélectionnées
for (h=0;h<TY;h++) {
for (l=0;l<TX;l++) {
virtuel[l][h]=-1;
}
}
//on affiche le tabelau virtuel
for (h=0;h<TY;h++) {
for (l=0;l<TX;l++) {
printf("%d ",virtuel[l][h]);
}
putchar('\n');
}
putchar('\n');
//si la boule où il y a la souris est seul, ne pas la selectionner
if (coul[a][b]!=coul[a][b-1] &&
coul[a][b]!=coul[a+1][b] &&
coul[a][b]!=coul[a][b+1] &&
coul[a][b]!=coul[a-1][b] && a>=0 && a<TX && b>=0 && b<TY && coul[l][h]!=3) {
if (coul[a][b]==0)
RemplirArcC(a*CASE+2,b*CASE+2,36,36,360,360,BLEU);
if (coul[a][b]==1)
RemplirArcC(a*CASE+2,b*CASE+2,36,36,360,360,ROUGE);
if (coul[a][b]==2)
RemplirArcC(a*CASE+2,b*CASE+2,36,36,360,360,VERT);
}
//sinon mettre le tableau virtuel à 1 au coordonnées de la souris
else {
if (coul[a][b]!=3)
virtuel[a][b]=1;
}
indice=1;
while(indice==1) {
indice=0;
//on parcour le tableau virtuel
for(h=0;h<TY;h++) {
for(l=0;l<TX;l++) {
//si il trouve un 1 (la où la souris à sélectionnée), et que la couleur est différente de 3 (NOIR : définie dans la fonction positionnerboules)
if(virtuel[l][h]==1 && coul[l][h]!=3) {
//faire le test 4 fois
for(repaire=1;repaire<=4;repaire++) {
//une fois pour la boule du dessus
if(repaire==1) {
hh=h+1;ll=l;
}
//une fois pour la boule de dessous
if(repaire==2) {
hh=h-1;ll=l;
}
//une fois pour la boule de droite
if(repaire==3) {
hh=h;ll=l+1;
}
//une fois pour la boule de gauche
if(repaire==4) {
hh=h;ll=l-1;
}
//si il n'y a pas de 1 au tour, et que l'on reste dans les limites du tableau, mettre à 1 les boules sélectionnées et augmenter l'indice
if(virtuel[ll][hh]!=1 && ll>=0 && hh>=0 && ll<TX && hh<TY && coul[l][h]==coul[ll][hh]) {
virtuel[ll][hh]=1;
indice=1;
}
}
}
}
}
}
//on parcour le tableau virtuel, si il trouve des 1 et que la couleur n'est pas NOIR, ni -1 (extérieur du tableau), mettre une boule noir
for (h=0;h<TY;h++) {
for (l=0;l<TX;l++ ){
if (virtuel[l][h]==1 && coul[l][h]!=3 && coul[l][h]!=-1 && l>=0 && l<TX && h>=0 && h<TY && virtuel[l][h]!=-1) {
RemplirArcC(l*CASE+2,h*CASE+2,36,36,360,360,BLANC);
}
}
}
//on charge la fonction positionnerboules pour remetre la couleur des boules après avoir enlever la souris (au cas ou on ne clique pas, sinon les boules reste sélectionnées même si on enlève la souris)
positionnerboules(coul);
//tant qu'on clic
while (SourisCliquee()) {
//on parcour le tableau virtuel
for (h=0;h<TY;h++) {
for (l=0;l<TX;l++) {
//si on trouve un 1 et que la couleur n'est pas NOIR
if (virtuel[l][h]==1 && coul[a][b]!=3) {
//mettre 3 à la place du numéro de la boule
//0 pour bleu
//1 pour rouge
//2 pour vert
coul[l][h]=3;
//mettre une boule NOIR
RemplirArcC(l*CASE+2,h*CASE+2,36,36,360,360,NOIR);
}
}
}
}
//appeler la fonction boude pour faire descendre les boules
bouge(coul);
}
} |
Partager