Probleme avec dev c++

val13190 Messages postés 2 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 20 mars 2007 - 19 mars 2007 à 21:46
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 - 22 mars 2007 à 18:34
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

cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
19 mars 2007 à 23:02
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..."
0
val13190 Messages postés 2 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 20 mars 2007
20 mars 2007 à 18:17
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++
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
22 mars 2007 à 18:34
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
0
Rejoignez-nous