Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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 ;
}