Académique Documents
Professionnel Documents
Culture Documents
Projet Snoopy Niv 1 Fonction
Projet Snoopy Niv 1 Fonction
0XF5 : Snoopy
0XA9: Balle
0XC5 : Oiseau
CODE CP437
Fonction effacer
void effacer() {
// Crée une structure COORD pour représenter les coordonnées du coin
supérieur gauche
COORD topLeft = {0, 0};
Réinitialiser Niveau
void reinitialiserNiveau() {
// Réinitialiser les paramètres du niveau
ySnoopy = 5; // coordonnées initiales de snoopy pour replacer le
personnage
xSnoopy = 10;
vie = 3; // nombre de vie initiale réinitialiser
// Réinitialiser la matrice
for (int i = 0; i < 12; ++i) {
for (int j = 0; j < 22; ++j) {
matrice[i][j] = initialMatrice[i][j]; // redéfinition de la
matrice avec initialmatrice qui est la matrice initial
//On redonne donc à la matrice changé ces entrées du début
}
}
}
Blocs
#define MAX_BLOCS 100 // Le nombre maximal de blocs dans la structure est
défini à 100 on envisage de ne pas avoir plus de 100 blocs poussables.
if (kbhit()){
char key = getch();
effacer();
switch (key) {
case 'z' :
if(ySnoopy> ymin)
{ if(matrice[ySnoopy-1][xSnoopy] == 0 || matrice[ySnoopy-
1][xSnoopy] == 0xC5 || matrice[ySnoopy-1][xSnoopy] == 0xB2 ) // Dans la
fonction déplacement on ajoute des conditions qui font que en plus des
limites le personnage peut se dépalcer en haut par z s'il y a aucun bloc ou
s'il y a un oiseau ou encore s'il y a aucun bloc piégé
ySnoopy--;
if (matrice[ySnoopy-1][xSnoopy] == 0xB9 ) // Ici on décrit
le bloc cassable qui fait que lorsque Snoopy est en-dessous d'un bloc
cassable celui se casse
matrice[ySnoopy-1][xSnoopy] = 0;
if (matrice[ySnoopy][xSnoopy] == 0xC5) //Ici de même
lorsque Snoopy est sur un oiseau celui disparaît
matrice[ySnoopy][xSnoopy] = 0;
if (matrice[ySnoopy][xSnoopy] == 0xB2) // Ici si snoopy est
sur un bloc piège cela fait appel à la fonction vie et baisse celle-ci
vie = vie-1;
for (int i=0 ;i<=3;i++) {
if (ySnoopy-1==blocs[i].y && xSnoopy == blocs[i].x &&
blocs[i].deplace == 0 && blocs[i].y != ymin+1 && 0 == matrice[ySnoopy-
2][xSnoopy]) { // Ici on définit les paramètres du bloc poussable il faut
donc que Snoopy soit juste en dessous du bloc poussable ici pour pouvoir le
déplacé en haut il faut aussi que ce bloc n'est pas été déplacé on verifie
donc cela avec la strucuture. Il faut aussi que ce bloc poussable soit en-
dessous d'une case vide et non pas d'un bloc, de même il faut que le bloc
poussable soit compris dans les limites
matrice[blocs[i].y][blocs[i].x] = 0; // On assigne
donc 0 à sa position initiale et son code hexadécimal à sa nouvelle
position en y-1
matrice[blocs[i].y-1][blocs[i].x] = 0xFE;
blocs[i].y--; //Ici on note les nouvelles
coordonnées du blocs dans la structure.
blocs[i].deplace = 1; //Et on transmet que ce bloc
a été déplacé en notant son numéro dans la boucle de 0 à 3 car il n'y a que
3 blocs poussable.
break;
}
}
}
break;
case 's' :
if(ySnoopy< ymax)
{
if (matrice[ySnoopy+1][xSnoopy] == 0 ||
matrice[ySnoopy+1][xSnoopy] == 0xC5 || matrice[ySnoopy+1][xSnoopy] == 0xB2)
ySnoopy++;
if (matrice[ySnoopy+1][xSnoopy] == 0xB9 )
matrice[ySnoopy+1][xSnoopy] = 0;
if (matrice[ySnoopy][xSnoopy] == 0xC5)
matrice[ySnoopy][xSnoopy] = 0;
if (matrice[ySnoopy][xSnoopy] == 0xB2)
vie = vie-1;
}
break;
case 'q' :
if(xSnoopy> xmin)
{
if (matrice[ySnoopy][xSnoopy-1] == 0 ||
matrice[ySnoopy][xSnoopy-1] == 0xC5 || matrice[ySnoopy][xSnoopy-1]== 0xB2)
xSnoopy--;
if (matrice[ySnoopy][xSnoopy-1] == 0xB9 )
matrice[ySnoopy][xSnoopy-1] = 0;
if (matrice[ySnoopy][xSnoopy] == 0xC5)
matrice[ySnoopy][xSnoopy] = 0;
if (matrice[ySnoopy][xSnoopy] == 0xB2)
vie = vie-1;
}
break;
case 'd' :
if(xSnoopy< xmax)
{
if (matrice[ySnoopy][xSnoopy+1] == 0 ||
matrice[ySnoopy][xSnoopy+1] == 0xC5 || matrice[ySnoopy][xSnoopy+1]==0xB2)
xSnoopy++;
if (matrice[ySnoopy][xSnoopy+1] == 0xB9)
matrice[ySnoopy][xSnoopy+1] = 0;
if (matrice[ySnoopy][xSnoopy] == 0xC5)
matrice[ySnoopy][xSnoopy] = 0;
if (matrice[ySnoopy][xSnoopy] == 0xB2)
vie = vie-1;
}
}