示例#1
0
void TJerFile::GetRelativePath(const char *BeginDir,const char *Path,char **TheRelativePath)
{
	BPath BeginPath(BeginDir);
	BPath PathPath(Path);
	string Begin(BeginPath.Path());
	string Chemin(PathPath.Path());
	string RelativePathBuffer("");
	string RelativePath("");
	int indSav;
	for (uint32 ind=Begin.length();ind<Chemin.length();ind++)
	{
		RelativePathBuffer = RelativePathBuffer + Chemin[ind];
	}
	for (int ind=RelativePathBuffer.length()-1;ind>=0;ind--)
	{
		if (RelativePathBuffer[ind]=='/')
		{
			indSav = ind;
			break;
		}
	}
	for (int ind=0;ind<indSav;ind++)
	{
		RelativePath = RelativePath + RelativePathBuffer[ind];
	}
	*TheRelativePath = (char *)malloc(sizeof(char)*(RelativePath.length()+1));
	strcpy(*TheRelativePath,RelativePath.c_str());
}
示例#2
0
void TJerFile::GetRelativePathAndName(const char *BeginDir,const char *Path,char **TheRelativePathAndName)
{
	BPath BeginPath(BeginDir);
	BPath PathPath(Path);
	string Begin(BeginPath.Path());
	string Chemin(PathPath.Path());
	string RelativePathBuffer("");
	string RelativePath("");
	for (uint32 ind=Begin.length();ind<Chemin.length();ind++)
	{
		RelativePathBuffer = RelativePathBuffer + Chemin[ind];
	}
	*TheRelativePathAndName = (char *)malloc(sizeof(char)*(RelativePathBuffer.length()+1));
	strcpy(*TheRelativePathAndName,RelativePathBuffer.c_str());
}
示例#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 ;
}