Tux jump 2.0

Description

C'est un "plagia" de doodle jump avec certe peu de fonctionnalités mais qui fonctionne bien dans l?ensemble. J'ai utilise une bibliothèque : la SDL que je trouve simple d'utilisation et une extension : SDL_TTF. Ce programme utilise une fonction carrée, utilisée pour le saut du perso : c'est la seule notion à être un peu complique.

Source / Exemple :


 
int jouer(SDL_Surface *screen) 
{ 
  printf("[JEU]->Entree.\n"); 

  int continuer=1, decision=-1; 
  double tpsPrec=0, tpsAct=0; 
  SDL_Event event={0}; 
  SDL_Rect rect={0,0,0,0}; 
  Uint8 *touches=NULL; 
  Data data={0,0,0,0,{0},0,0,0,{NULL},NULL,{{0,{0,0,0,0}}},{0,0,0,0},{0,0,0,0}, 
            {{NULL,{0,0,0,0}}},{NULL,{0,0,0,0}},{0,0,0,0,0,0,0,0,0,0}, 
            {{NULL,{0,0,0,0},{0},0},{NULL,{0,0,0,0},{0},0},{0,0,0,0},NULL}}; 

  srand(time(NULL)); 
  initialiserJeu(&data); 
  informer(&data.infos, NULL, INIT); 

  modifPos(MAP_X, MAP_Y, MAP_W, MAP_H, &rect); 

  SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 235, 200, 0)); 

  while(continuer) 
  { 
    SDL_PollEvent(&event); 
    touches=SDL_GetKeyState(NULL); 
    tpsAct=SDL_GetTicks(); 

    if(touches[SDLK_UP]) 
    { 

    } 
    else if(touches[SDLK_DOWN]) 
    { 

    } 
    else if(touches[SDLK_RIGHT]) 
    { 
      data.sens[HORIZONTALE]=DROITE; 
      data.tuxSens=DROITE; 
      data.posTuxFutur.x=data.posTux.x+PAS; 
    } 
    else if(touches[SDLK_LEFT]) 
    { 
      data.sens[HORIZONTALE]=GAUCHE; 
      data.tuxSens=GAUCHE; 
      data.posTuxFutur.x=data.posTux.x-PAS; 
    } 
    else if(touches[SDLK_ESCAPE]) 
    { 
      decision=MENU; 
      continuer=0; 
    } 
    else if(touches[SDLK_p]) 
    { 
      decision=pause(&continuer); 
    } 
    if((!touches[SDLK_RIGHT] && !touches[SDLK_LEFT]) || (touches[SDLK_RIGHT] && touches[SDLK_LEFT])) 
    { 
      data.sens[HORIZONTALE]=NEANT; 
    } 

    switch (event.type) 
    { 
      case SDL_QUIT: 
        continuer=0; 
        decision=QUITTER; 
        break; 
    } 

    if(tpsAct-tpsPrec>LAP) 
    { 
      if(data.saut.reInit) 
      { 
        data.saut.reInit=0; 
        data.saut.x=0; 
        data.saut.y=0; 
        data.saut.debutSaut=0; 
      } 
      else 
      data.saut.debutSaut+=(tpsAct-tpsPrec); 

      data.saut.y=sauter(data.saut.debutSaut/1000.0, &data); 
      gererCollisions(&data); 
      SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 235, 200, 0)); 
      SDL_FillRect(screen, &rect, SDL_MapRGB(screen->format, 50, 200, 100)); 
      collerSurfacesJeu(&data, screen); 
      informer(&data.infos, screen, BLIT); 
      tpsPrec=tpsAct; 
    } 

    SDL_Flip(screen); 
  } 

  libererJeu(&data); 
  informer(&data.infos, NULL, CLOSE); 
  printf("[JEU]->Sortie.\n"); 
  return decision; 
} 

Conclusion :


Je pense que c'est un bon début pour recréer une version (libre & open source) de doodle jump digne de ce nom. Mais il reste beaucoup à faire : créer des niveaux de difficultés, des options, un mode aventure, des innovations, des graphismes plus attrayants...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.