void BlocAliens::deplacer() { effacer(); for (int ligne = 0; ligne < hauteur; ligne++) { for (int colonne = ecartGauche; colonne < ecartGauche + largeur; colonne++) { if (getAlien(ligne, colonne) != NULL) { getAlien(ligne, colonne)->deplacerPosition(direction); } } } dessiner(); switch (direction) { case DEPL_BAS: positionLigne++; break; case DEPL_HAUT: positionLigne--; break; case DEPL_DROITE: positionColonne++; break; case DEPL_GAUCHE: positionColonne--; break; } }
void BlocAliens::effacer() { for (int ligne = 0; ligne < hauteur; ligne++) { for (int colonne = ecartGauche; colonne < ecartGauche + largeur; colonne++) { if (getAlien(ligne, colonne) != NULL) { getAlien(ligne, colonne)->effacer(); } } } }
void BlocAliens::ajusterVitesse() { for (int i = 2; i <= 4; i *= 2) { if (nombreAliensInitial != 1) { if (nombreAliens <= nombreAliensInitial / i) timer->setTimerDeplacementAliens(vitesseBlocInitiale / (i)); } else { if (getAlien(0, 0)->getPointsDeVie() <= getAlien(0, 0)->getPointsDeVieInitiaux() / i) timer->setTimerDeplacementAliens(vitesseBlocInitiale / (i)); } } }
void BlocAliens::tirerMissile() { int posC = 0; int posL = 0; int compteur = 0; if (largeur == hauteur == 1) { if (nombreAliensInitial == 1) posC = positionColonne + 4; else posC = positionColonne + 2; posL = positionLigne + 3; } else { bool alienPresent = false; int numCol = 0; do { numCol = random.nextInt(largeur) + ecartGauche; for (int i = 0; i < hauteur; i++) { if (getAlien(i, numCol) != NULL) { alienPresent = true; posL = getPositionLigne() + (i + 1) * (ALIGN_VERT) - 1; } } compteur++; } while (!alienPresent && compteur < 10); posC = (numCol - 1) * ALIGN_HORI + 1 + getPositionColonne(); } MissileAlien::lancerNouveauMissile(posL, posC); }
void checkGunnerWin() { int x, y; for(x = 0; x < ALIEN_COLS; x++) { for(y = 0; y < ALIEN_ROWS; y++) { struct Alien a = getAlien(pSramAliens, y, x); if(a.alive) { return; } } } gameOver = 2; }
int BlocAliens::calculerNombreAliensRestants() { int sommeAliens = 0; for (int ligne = 0; ligne < hauteur; ligne++) { for (int colonne = ecartGauche; colonne < ecartGauche + largeur; colonne++) { if (getAlien(ligne, colonne) != NULL) sommeAliens++; } } nombreAliens = sommeAliens; return nombreAliens; }
void checkCollideAliens(int pSramAliens, int x) { int y; for(y = ALIEN_ROWS - 1; y >= 0; y--) { struct Alien a = getAlien(pSramAliens, y, (x + (7-alienShift)) % ALIEN_COLS); if(a.alive) { //printf("KILL (%i, %i)\n", (x + (7-alienShift)) % ALIEN_COLS, y); a.alive = 0; setAlien(pSramAliens, y, (x + (7-alienShift)) % ALIEN_COLS, a); break; } } //checkGunnerWin(); }
void BlocAliens::ajusterDimensionEnBas() { if (hauteur == 0) return; int somme = 0; for (int i = ecartGauche; i < ecartGauche + largeur; i++) { if (getAlien(hauteur - 1, i) != NULL) somme++; } if (somme == 0) { hauteur--; ajusterDimensionEnBas(); } }
void BlocAliens::ajusterDimensionADroite() { if (largeur == 0) return; int somme = 0; for (int i = 0; i < hauteur; i++) { if (getAlien(i, largeur + ecartGauche - 1) != NULL) somme++; } if (somme == 0) { largeur--; ajusterDimensionADroite(); } }