Probleme avec dev c++

Signaler
Messages postés
2
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
20 mars 2007
-
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
-
Bonjour,

Voila j'ai crée un petit programme en C, grâce à la SDL et à dev-c++.
Mais, j'ai un problème dans mon code, j'essaye de mettre mon programme en pause grace à la touche P du clavier mais lorsque j'appuie sur cette touche le programme ne se met point en pause tandisque si je met 2 touches differentes (ex.: touche P pour mettre pause et touche R pour réactiver le programme) cela marche parfaitement bien.

Merci de m'aider.
a++

3 réponses

Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
je ne comprend pas trop ton probleme... visiblement tu veux utilser la touche P pour mettre le jeu en pause, puis si on rappuie sur P, cela enléve la pause. Or si tu met deux touches séparer pour faire les deux action pause et activation, alors la tout se déroule correctement.
il n'y a pas de raison que cela ne marche pas dans un cas, mais dans l'autre oui si tu utilises le meme code. le probleme doit etre comment tu gére la mise en pause puis l'enlevement de cette pause. mais ca va etre difficile de te dire ce qui ne va pas sans voir le code la...
Bob...
"Vaut mieux se taire et passer pour un con, que de l'ouvrir et ne laisser aucun doute sur le sujet..."
Messages postés
2
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
20 mars 2007

voila mon code source, je n'arrive pas a faire marcher la pause grâce à la touche p du clavier:

#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#define TEMPSAFFICHAGEIMG   5

int main(int argc, char *argv[])
{    SDL_Surface *ecran NULL, *zozor NULL;
    SDL_Rect positionZozor;
    SDL_Event event;
    long coul = 0;
    int pause = 1;    int continuer 1, versGauche 0, versHaut = 1;    int tempsPrecedent 0, tempsActuel 0;
   

    SDL_Init(SDL_INIT_VIDEO);

    ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
    SDL_WM_SetCaption("Gestion du temps en SDL", NULL);

    zozor = SDL_LoadBMP("zozor.bmp");
    SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 0, 0, 255));

    positionZozor.x = 0;
    positionZozor.y = 50;

    while (continuer)
    {
        SDL_PollEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                continuer = 0;
                break;
               
            case SDL_KEYDOWN:
                 switch(event.key.keysym.sym)
                 {
                     case SDLK_p:
                         if (pause == 1)
                          pause = 0;
                           else
                             pause = 1;
                                break;
                               
                     case SDLK_ESCAPE:
                         continuer = 0;
                         break;

                 }
                break;
        }

    if (pause)
    {
    tempsActuel = SDL_GetTicks();
   
    if (tempsActuel - tempsPrecedent > TEMPSAFFICHAGEIMG)
    {
      tempsPrecedent = tempsActuel;
     
      if (positionZozor.x <= 0)
      {
        versGauche = 0;
        coul = 1;
      }
       
      if (positionZozor.x >= 556)
      {
        versGauche = 1;
        coul = 2;
      }
       
      if (positionZozor.y <= 0)
      {
        versHaut = 0;
        coul = 3;
      }
       
      if (positionZozor.y >= 385)
      {
        versHaut = 1;
        coul = 4;
      }
       
      if (versHaut)
        positionZozor.y--;
       
      else
        positionZozor.y++;
       
      if (versGauche)
        positionZozor.x--;
       
      else
        positionZozor.x++;

    }
   
    else
    {
    SDL_Delay(TEMPSAFFICHAGEIMG - (tempsActuel - tempsPrecedent));
    }
        if (coul == 0)
        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
       
        else if (coul == 1)
        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 255));
       
        else if (coul == 2)
        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 0, 0));
       
        else if (coul == 3)
        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 255, 0));
       
        else
        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
       
        SDL_BlitSurface(zozor, NULL, ecran, &positionZozor);
        SDL_Flip(ecran);
    }
    }

    SDL_FreeSurface(zozor);
    SDL_Quit();

    return EXIT_SUCCESS;
}

Merci de me repondre a++
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
6
Bonjour,

STP explicite ton titre quand tu pose une question car ton problème de porte pas sur l'IDE Dev-C++ mais sur la SDL ainsi que sur l'interaction clavier/logiciel.

Merci et bonne prog,
@++

Le créateur du site http://victorlogiciels.com