예제 #1
0
void Unite::attaquer(Case c) {
    if (getJoueur()->getPtAction()<m_AttaqueParDefaut->getPtAction()) {
        ManquePtAction ex;
        throw ex;
    }
    Case cE = *(getPosition()[0]);
    if ((abs(c.getX() - cE.getX()) + abs(c.getY() - cE.getY())) <= m_AttaqueParDefaut->getPortee()) {
        ManquePortee ex;
        throw ex;
    }
    m_AttaqueParDefaut->lancerAttaque(&c);
}
예제 #2
0
void Unite::attaquer(Case c, Attaque* attaque) {
    if (getJoueur()->getPtAction()<attaque->getPtAction()) {
        ManquePtAction ex;
        throw ex;
    }
    Case cE = *(getPosition()[0]);
    if ((abs(c.getX() - cE.getX()) + abs(c.getY() - cE.getY())) <= attaque->getPortee()) {
        ManquePortee ex;
        throw ex;
    }
    attaque->lancerAttaque(&c);
}
예제 #3
0
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;
}
예제 #4
0
void Unite::deplacer(Case c) {
    Case nouveau = deplacement(c);
    if (c.getX()!=nouveau.getX() && c.getY()!=nouveau.getY() && !nouveau.isOccupee())
    {
        nouveau.setCase(this);
        //Rajout de void setCase(Unite unite); -> Test de si la case n'est pas occup�, puis mettre a jour la case
                                // appel d'une exception si la case est occup� (Pour saut� l'instruction suivante)
                                // ou avec un booleen, je ne sais pas
                                // Nicolas :-D
        c.setCase(NULL);
        // mettre a 0 la case
    }
    else
    {
        cout << "case prise"<<endl;
    }
}