Salut, voilà j'ai un problème avec mon projet de DUT, je dois réaliser le jeu SAME : http://obligement.free.fr/articles/samegame.php

Mon problème est pour enlever les boules de la même couleur qui sont collées, il n'y a que celle au dessus, au dessous et des 2 côtés de celleoù je clique qui disparaissent!

Voici mon CODE :

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
 
#include <stdlib.h>
#include <stdio.h>
#include "/export/documents/lib/sources/graph.h"
 
#define black CouleurParNom("black")
#define white CouleurParNom("white")
#define red CouleurParNom("red")
#define blue CouleurParNom("blue")
#define green CouleurParNom("green")
 
/*on crée un tableau avec le cadrillage et on place les 3 sortes de boules aléatoirement avec la même chance pour chaque boule de tomber*/
void tableau() {
  int L,H,tab[15][10];
 
  srand(time(NULL));
 
  for (H=0;H<10;H++) {
    for (L=0;L<15;L++) {
      tab[L][H]=rand()%3;
      if (tab[L][H]==0) {
	RemplirArcC(L*40+3,H*40+3,34,34,360,360,blue);
      }
 
      if (tab[L][H]==1) {
	RemplirArcC(L*40+3,H*40+3,34,34,360,360,red);
      }
 
      if (tab[L][H]==2) {
	RemplirArcC(L*40+3,H*40+3,34,34,360,360,green);
      }
 
      DessinerRectangleC(L*40,H*40,40,40,white);
      EcrireTexteC(10,420,"Score : ",white,1);
    }
  }
}
 
/*on crée une fonction qui élimine toutes les boules de la même couleur et à côté de celle où on clic*/
 
  /********************************************/
 /********Le problème vient de ce qui suis*********/
/*******************************************/
void cliquesouris() {
  int a,b,tab[15][10];
 
  while (1) {
    if (SourisCliquee()) {
      a=_X/40;
      b=_Y/40;
 
      RemplirArcC(a*40+3,b*40+3,34,34,360,360,black);
 
      if (tab[a][b]!=tab[a+1][b] &&
	  tab[a][b]!=tab[a][b+1] &&
	  tab[a][b]!=tab[a-1][b] &&
	  tab[a][b]!=tab[a][b-1])
	RemplirArcC(a*40+3,b*40+3,34,34,360,360,white);
 
      else {
 
/*Je test la boule à droite de celle où je clic, si elle est de la même couleur, je supprime*/
	if (tab[a][b]==tab[a+1][b]) {
	  RemplirArcC(a*40+43,b*40+3,34,34,360,360,black);
	}
 
/*Je test la boule au dessus de celle où je clic, si elle est de la même couleur, je supprime*/
	if (tab[a][b]==tab[a][b+1]) {
	  RemplirArcC(a*40+3,b*40+43,34,34,360,360,black);
	}
 
/*Je test la boule à gauche de celle où je clic, si elle est de la même couleur, je supprime*/
	if (tab[a][b]==tab[a-1][b]) {
	  RemplirArcC(a*40-37,b*40+3,34,34,360,360,black);
	}
 
/*Je test la boule au dessous de celle où je clic, si elle est de la même couleur, je supprime*/
	if (tab[a][b]==tab[a][b-1]) {
	  RemplirArcC(a*40+3,b*40-37,34,34,360,360,black);
 
	}
      }
    }
  }
}
 
/*on crée la fenetre, on l'affiche*/
int main() {
 
  InitialiserGraphique();
  extern char *nf;
  nf="SAME";
  CreerFenetre(Maxx()/2-300,Maxy()/2-300,600,500);
  AfficherFenetre();
  EffacerEcran(black);
 
  tableau();
  selection();
  cliquesouris();
  Touche();
  FermerGraphique();
 
  return EXIT_SUCCESS;
}