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()); }
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()); }
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 ; }