Case * AngeAleatoire::choisirUneCase() { int x = 0; int y = 0; int t = maPartie->monDamier->taille; int i, j, n, r; Case * c; // le programme choisit un coup n = 0; // on compte le nombre de coups possibles. for (i=0; i<t; i++) { for (j=0; j<t; j++) { c = maPartie->monDamier->mesCases[i][j]; if ((c->distance(maCase)<=puissance) && !(c->estBouchee()) && (!c->estAnge())) n++; } } r = Alea::engendrer(n); n = 0; // on selectionne un coup aleatoire dans les coups possibles. for (i=0; i<t; i++) { for (j=0; j<t; j++) { c = maPartie->monDamier->mesCases[i][j]; if ((c->distance(maCase)<=puissance) && !(c->estBouchee()) && (!c->estAnge())) if (++n == r) { x = c->getX() + 1; y = c->getY() + 1; } } } return c; }
bool DiableHumain::verifier(int x,int y){ bool ok=true; Case * c; if ((x>0) && (y>0) && (x<=maPartie->monDamier->taille)&& (y<=maPartie->monDamier->taille)) { ok = true; c = maPartie->monDamier->mesCases[x-1][y-1]; if (c->estBouchee()){ cout << "Erreur: case bouchee." << endl; ok = false; } if (c->estAnge()) { cout << "Erreur: case occupee par l'ange." << endl; ok = false; } } else ok = false; return ok; }