Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2385 connectés 

  FORUM HardWare.fr
  Programmation
  C

  afficher un message qui disparait au bout de 10 seconde

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

afficher un message qui disparait au bout de 10 seconde

n°1842214
max1395
Posté le 23-01-2009 à 17:26:53  profilanswer
 

Bonjour,  
je suis en train de créer mon petit jeux video en 2d sdl et je voudrais que si le personnage et sur la même case qu'un objetif sa affiche un message et au bout de 10 secondes sa change de niveau . j'ai essayé et sa ne m'affiche pas de message et sa ne change pas de niveau au bout de 10 secondes :  
ce sont ces lignes les plus importantes:  

Code :
  1. if(carte[positionJoueur.x][positionJoueur.y] == OBJECTIF)
  2.   {
  3.   positiontexte.x = 60;
  4.             positiontexte.y = 370;
  5.   police = TTF_OpenFont("angelina.ttf", 65);
  6.   texte = TTF_RenderText_Blended(police, "Salut les Zér0s !", couleurNoire);
  7.             SDL_BlitSurface(texte, NULL, ecran, &positiontexte); /* Blit du texte par-dessus */
  8.             tempsPrecedent = tempsActuel;
  9.             tempsActuel = SDL_GetTicks();
  10.             if (tempsActuel - tempsPrecedent > 10000) /* Si 30 ms se sont écoulées depuis le dernier tour de boucle */
  11.             {
  12.             modesimple(ecran);
  13.             }   
  14.   }


voila mon code en entiers:  

Code :
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <SDL.h>
  4. #include <SDL_image.h>
  5. #include <SDL_ttf.h>
  6. #include "fichier.h"
  7. #include "jonnysolojouer.h"
  8. #include "fichiers.h"
  9. void jonnysolojouer(SDL_Surface* ecran)
  10. {
  11.     SDL_Surface *mario[4] = {NULL} , *texte = NULL ;// 4 surfaces pour chacune des directions de mario
  12.     SDL_Surface *mur = NULL, *objectif = NULL, *marioActuel = NULL;
  13.     SDL_Rect position, positionJoueur , objectifatteind , positiontexte ;
  14.     SDL_Event event;
  15.    TTF_Font *police = NULL;
  16.     SDL_Color couleurNoire = {0, 0, 0};
  17.     int tempsPrecedent = 0, tempsActuel = 0;
  18.     int continuer = 1, objectifsRestants = 0, i = 0, j = 0;
  19.     int carte[NB_BLOCS_LARGEUR][NB_BLOCS_HAUTEUR] = {0};
  20.     // Chargement des sprites (décors, personnage...)
  21.     mur = IMG_Load("image/objet/mur.jpg" );
  22.     objectif = IMG_Load("image/objet/objectif.gif" );
  23.     mario[BAS] = IMG_Load("image/hero/DarkKnight-Front.gif" );
  24.     mario[GAUCHE] = IMG_Load("image/hero/DarkKnight-Left.gif" );
  25.     mario[HAUT] = IMG_Load("image/hero/DarkKnight-Back.gif" );
  26.     mario[DROITE] = IMG_Load("image/hero/darkknight gauche.GIF" );
  27.     marioActuel = mario[BAS]; // Mario sera dirigé vers le bas au départ
  28.     // Chargement du niveau
  29.     if (!chargerNiveau(carte))
  30.         exit(EXIT_FAILURE); // On arrête le jeu si on n'a pas pu charger le niveau
  31.     // Recherche de la position de Mario au départ
  32.     for (i = 0 ; i < NB_BLOCS_LARGEUR ; i++)
  33.     {
  34.         for (j = 0 ; j < NB_BLOCS_HAUTEUR ; j++)
  35.         {
  36.             if (carte[i][j] == MARIO) // Si Mario se trouve à cette position sur la carte
  37.             {
  38.                 positionJoueur.x = i;
  39.                 positionJoueur.y = j;
  40.                 carte[i][j] = VIDE;
  41.             }
  42.         }
  43.     }
  44.     // Activation de la répétition des touches
  45.     SDL_EnableKeyRepeat(100, 100);
  46.     while (continuer)
  47.     {
  48.         SDL_WaitEvent(&event);
  49. switch(event.type)
  50. {
  51.     case SDL_QUIT:
  52.         continuer = 0;
  53.         break;
  54.     case SDL_KEYDOWN:
  55.         switch(event.key.keysym.sym)
  56.         {
  57.             case SDLK_UP:
  58.                 marioActuel = mario[HAUT];
  59.                 deplacerJoueur(carte, &positionJoueur, HAUT);
  60.                 break;
  61.             case SDLK_DOWN:
  62.                 marioActuel = mario[BAS];
  63.                 deplacerJoueur(carte, &positionJoueur, BAS);
  64.                 break;
  65.             case SDLK_RIGHT:
  66.                 marioActuel = mario[DROITE];
  67.                 deplacerJoueur(carte, &positionJoueur, DROITE);
  68.                 break;
  69.      case SDLK_r:
  70.                jonnysolojouer(ecran);
  71.                 break;
  72.             case SDLK_LEFT:
  73.                 marioActuel = mario[GAUCHE];
  74.                 deplacerJoueur(carte, &positionJoueur, GAUCHE);
  75.                 break;
  76.         }
  77.         break;
  78. }
  79.         // Effacement de l'écran
  80.         SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
  81.         // Placement des objets à l'écran
  82.         objectifsRestants = 0;
  83.         for (i = 0 ; i < NB_BLOCS_LARGEUR ; i++)
  84.         {
  85.             for (j = 0 ; j < NB_BLOCS_HAUTEUR ; j++)
  86.             {
  87.                 position.x = i * TAILLE_BLOC;
  88.                 position.y = j * TAILLE_BLOC;
  89.                 switch(carte[i][j])
  90.                 {
  91.                     case MUR:
  92.                         SDL_BlitSurface(mur, NULL, ecran, &position);
  93.                         break;
  94.                    case OBJECTIF:
  95.                   SDL_BlitSurface(objectif, NULL, ecran, &position);
  96.                  objectifsRestants = 1;
  97.                  objectifatteind.x = position.x;
  98.                  objectifatteind.y = position.y;
  99.                         break;
  100.                 }
  101.             }
  102.         }
  103.         // Si on n'a trouvé aucun objectif sur la carte, c'est qu'on a gagné
  104.          if(carte[positionJoueur.x][positionJoueur.y] == OBJECTIF)
  105.   {
  106.   positiontexte.x = 60;
  107.             positiontexte.y = 370;
  108.   police = TTF_OpenFont("angelina.ttf", 65);
  109.   texte = TTF_RenderText_Blended(police, "Salut les Zér0s !", couleurNoire);
  110.             SDL_BlitSurface(texte, NULL, ecran, &positiontexte); /* Blit du texte par-dessus */
  111.             tempsPrecedent = tempsActuel;
  112.             tempsActuel = SDL_GetTicks();
  113.             if (tempsActuel - tempsPrecedent > 10000) /* Si 30 ms se sont écoulées depuis le dernier tour de boucle */
  114.             {
  115.             modesimple(ecran);
  116.             }   
  117.   }
  118.         // On place le joueur à la bonne position
  119.         position.x = positionJoueur.x * TAILLE_BLOC;
  120.         position.y = positionJoueur.y * TAILLE_BLOC;
  121.         SDL_BlitSurface(marioActuel, NULL, ecran, &position);
  122.      
  123.         SDL_Flip(ecran);
  124.     }
  125.     // Désactivation de la répétition des touches (remise à 0)
  126.     SDL_EnableKeyRepeat(0, 0);
  127.     SDL_FreeSurface(texte);
  128.     SDL_FreeSurface(mur);
  129.     SDL_FreeSurface(objectif);
  130.     for (i = 0 ; i < 4 ; i++)
  131.         SDL_FreeSurface(mario[i]);
  132.  
  133. }
  134. void deplacerJoueur(int carte[][NB_BLOCS_HAUTEUR], SDL_Rect *pos, int direction)
  135. {
  136.     switch(direction)
  137.     {
  138.         case HAUT:
  139.             if (pos->y - 1 < 0) // Si le joueur dépasse l'écran, on arrête
  140.                 break;
  141.             if (carte[pos->x][pos->y - 1] == MUR) // S'il y a un mur, on arrête
  142.                 break;
  143.             // Si on veut pousser une caisse, il faut vérifier qu'il n'y a pas de mur derrière (ou une autre caisse, ou la limite du monde)
  144.             if ((carte[pos->x][pos->y - 1] == CAISSE || carte[pos->x][pos->y - 1] == CAISSE_OK) &&
  145.                 (pos->y - 2 < 0 || carte[pos->x][pos->y - 2] == MUR ||
  146.                 carte[pos->x][pos->y - 2] == CAISSE || carte[pos->x][pos->y - 2] == CAISSE_OK))
  147.                 break;
  148.             // Si on arrive là, c'est qu'on peut déplacer le joueur !
  149.             // On vérifie d'abord s'il y a une caisse à déplacer
  150.            
  151.             pos->y--; // On peut enfin faire monter le joueur (oufff !)
  152.             break;
  153.         case BAS:
  154.             if (pos->y + 1 >= NB_BLOCS_HAUTEUR)
  155.                 break;
  156.             if (carte[pos->x][pos->y + 1] == MUR)
  157.                 break;
  158.             if ((carte[pos->x][pos->y + 1] == CAISSE || carte[pos->x][pos->y + 1] == CAISSE_OK) &&
  159.                 (pos->y + 2 >= NB_BLOCS_HAUTEUR || carte[pos->x][pos->y + 2] == MUR ||
  160.                 carte[pos->x][pos->y + 2] == CAISSE || carte[pos->x][pos->y + 2] == CAISSE_OK))
  161.                 break;
  162.            
  163.             pos->y++;
  164.             break;
  165.         case GAUCHE:
  166.             if (pos->x - 1 < 0)
  167.                 break;
  168.             if (carte[pos->x - 1][pos->y] == MUR)
  169.                 break;
  170.             if ((carte[pos->x - 1][pos->y] == CAISSE || carte[pos->x - 1][pos->y] == CAISSE_OK) &&
  171.                 (pos->x - 2 < 0 || carte[pos->x - 2][pos->y] == MUR ||
  172.                 carte[pos->x - 2][pos->y] == CAISSE || carte[pos->x - 2][pos->y] == CAISSE_OK))
  173.                 break;
  174.            
  175.             pos->x--;
  176.             break;
  177.         case DROITE:
  178.             if (pos->x + 1 >= NB_BLOCS_LARGEUR)
  179.                 break;
  180.             if (carte[pos->x + 1][pos->y] == MUR)
  181.                 break;
  182.             if ((carte[pos->x + 1][pos->y] == CAISSE || carte[pos->x + 1][pos->y] == CAISSE_OK) &&
  183.                 (pos->x + 2 >= NB_BLOCS_LARGEUR || carte[pos->x + 2][pos->y] == MUR ||
  184.                 carte[pos->x + 2][pos->y] == CAISSE || carte[pos->x + 2][pos->y] == CAISSE_OK))
  185.                 break;
  186.          
  187.             pos->x++;
  188.             break;
  189.     }
  190. }


merci

mood
Publicité
Posté le 23-01-2009 à 17:26:53  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  afficher un message qui disparait au bout de 10 seconde

 

Sujets relatifs
afficher un mesage si un joueur est sur un objectifAidez-moi à décrypter ce bout de code
afficher une image problemeAfficher certaines balises xml en fonction de leurs attributs
Afficher Résultat sur plusieurs pagesprobleme afficher image
SQL / PHP Afficher toutes les colonnes d'une tablehelp seconde appli ror
Afficher/cacher une div : ne fonctionne pas sur IE 8[Résolue] afficher une video sur ma page
Plus de sujets relatifs à : afficher un message qui disparait au bout de 10 seconde


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR