Matrice Matrice::co() const { Matrice m2(n, m, 0); Matrice ret(n, m, 0); if (n != m) // si pas carré... { Erreur a(Erreur::ncarre); throw(a); } if (n == 1) { ret.lignes[0][0] = 1; } else { for (unsigned int i = 0;i<n;i++) for (unsigned int j = 0;j<n;j++) { m2 = supligne(*this, i, j);// sous_matrice ret.lignes[i][j] = expo(i + j)*m2.det(); } } return ret; }
double Matrice::det(const Matrice &mat) const { Matrice m2(mat.n, mat.n, 0); double x = 0; if (mat.n == 1) //final return mat.lignes[0][0]; for (unsigned int i = 0; i<mat.n; i++) { m2 = supligne(mat, i, 0); //extrait la sous matrice x = x + (expo(i)*mat.lignes[i][0] * det(m2)); } return x; }
void Jouer(SDL_Surface* ecran) { srand(time(NULL)); positionBallonOrig.x=positionBallonOrig.y=0; FSOUND_SAMPLE *pew = NULL; pew = FSOUND_Sample_Load(FSOUND_FREE, "paint.wav", 0, 0, 0); int continuer=1,etat=0; //on charge le jeu ou bien on commence un enouvelle partie //et decide la finitude de la partie int t1=0; // pour saisir l origine et la destination Ballon[EMPTY]=IMG_Load("empty.png"); Ballon[BLUE]=IMG_Load("blue.png"); Ballon[YELLOW]=IMG_Load("yellow.png"); Ballon[RED]=IMG_Load("red.png"); Ballon[GREEN]=IMG_Load("green.png"); Ballon[BLACK]=IMG_Load("black.png"); Ballon[WHITE]=IMG_Load("white.png"); Ballon[LBLUE]=IMG_Load("lblue.png"); Ballon[ATOMIC]=IMG_Load("atomic.png"); //Ballon[BOOM]=IMG_Load("boom.png"); SDL_Surface* bg=NULL; bg=IMG_Load("bg.jpg"); SDL_BlitSurface(bg,NULL,ecran,&positionBallonOrig); SDL_Surface* BallonActuel=NULL; SDL_Rect positionBallon; coefScore=1; SDL_Event event; int i,j; for(i=0;i<Nb_Bloc_Largeur;i++) for(j=0;j<Nb_Bloc_Hauteur;j++) { positionBallonOrig.x=i*Taille_Bloc+cte1; positionBallonOrig.y=j*Taille_Bloc + cte2; SDL_BlitSurface(Ballon[grille[i][j]],NULL,ecran,&positionBallonOrig); if(grille[i][j]!=0) etat=1; } if(etat==0) { Score=0; score(ecran,Score); next(ecran) ; continuer=caissier(ecran); } score(ecran,Score);// s il y a chargement alors bliter le scor et et les next ballons next(ecran); while(continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer=0; break ; case SDL_MOUSEBUTTONUP: if(event.button.x>10 && event.button.x<109 && event.button.y>393 && event.button.y<424 ) {nouveaujeu(); continuer=0; break;} if(event.button.x>10 && event.button.x<109 && event.button.y>439 && event.button.y<472) { continuer=0; break;} if(event.button.x>cte1 && event.button.x<(450+cte1) && event.button.y>cte2 && event.button.y<(cte2+450)) { if(t1==0) { positionBallonOrig.x=event.button.x;//recuperer les coords de l origine positionBallonOrig.y=event.button.y; if(grille[(positionBallonOrig.x - cte1)/Taille_Bloc][(positionBallonOrig.y - cte2)/Taille_Bloc]!=EMPTY) { positionBallonOrig=position(positionBallonOrig); FSOUND_PlaySound(FSOUND_FREE, pew);//jouer le son SDL_BlitSurface(Ballon[ATOMIC],NULL,ecran,&positionBallonOrig); SDL_Flip(ecran); t1=1; break; } break; } if(t1==1) { positionBallonDest.x=event.button.x;//recuperer les coords de la destination positionBallonDest.y=event.button.y; if(grille[(positionBallonDest.x - cte1)/Taille_Bloc][(positionBallonDest.y - cte2)/Taille_Bloc]==EMPTY) { positionBallonDest=position(positionBallonDest); FSOUND_PlaySound(FSOUND_FREE, pew);//jouer le son t1=2; break; } else { SDL_BlitSurface(Ballon[grille[(positionBallonOrig.x-cte1)/Taille_Bloc][(positionBallonOrig.y-cte2)/Taille_Bloc]],NULL,ecran,&positionBallonOrig); FSOUND_PlaySound(FSOUND_FREE, pew);//jouer le son positionBallonOrig=position(positionBallonDest); SDL_BlitSurface(Ballon[ATOMIC],NULL,ecran,&positionBallonOrig); SDL_Flip(ecran); t1=1; break; } } } } if(t1==2) { if(Chemin(positionBallonOrig,positionBallonDest)==1) { BallonActuel=Ballon[PermuterBall(positionBallonOrig,positionBallonDest)]; // SDL_BlitSurface(BallonActuel,NULL,ecran,&positionBallonDest); //SDL_BlitSurface(Ballon[EMPTY],NULL,ecran,&positionBallonOrig); for(i=0; tri9[i].i != -1 ; i++) { positionBallon.x=tri9[i].i * Taille_Bloc + cte1; positionBallon.y=tri9[i].j * Taille_Bloc + cte2; SDL_BlitSurface(BallonActuel,NULL,ecran,&positionBallon); SDL_Flip(ecran); SDL_Delay(40); SDL_BlitSurface(Ballon[EMPTY],NULL,ecran,&positionBallon); } SDL_BlitSurface(BallonActuel,NULL,ecran,&positionBallonDest); SDL_Flip(ecran); //bombe(positionBallonDest,ecran); if(supligne(positionBallonDest,ecran)==0) { coefScore=1; etat=caissier(ecran); if(etat>0) { //SDL_Delay(100); for(i=0; i<3 && i<etat ;i++) { positionBallon.x=PNext[i].i * Taille_Bloc + cte1; positionBallon.y=PNext[i].j * Taille_Bloc + cte2; supligne(positionBallon,ecran); } next(ecran); } else {continuer=0; msgbox_terminer(); nouveaujeu();} } else coefScore++; t1=0; } else t1=1; } } // meilleurS(); SDL_free(Ballon[0]); SDL_free(Ballon[1]); SDL_free(Ballon[2]); SDL_free(Ballon[3]); SDL_free(Ballon[4]); SDL_free(Ballon[5]); SDL_free(Ballon[6]); SDL_free(Ballon[7]); SDL_free(Ballon[8]); return ; }