IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Programme qui se ferme tout seul lorsqu'il n'est pas lancé à partir de l'IDE


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 7
    Points
    7
    Par défaut Programme qui se ferme tout seul lorsqu'il n'est pas lancé à partir de l'IDE
    Salut a tous, je viens de créer un programme qui permet de déplacer un petit vaisseaux sur un fond ressemblant de près ou de loin a l'espace , donc quand je le lance a partir de l'IDE (Code :: Blocks) il marche très bien, mais dès que j'essaye de le lancer depuis le .exe la fenêtre s'ouvre et se referme a la vitesse de la lumière et je comprend pas pourquoi , merci a ceux qui voudront bien m'aider.

    ps: voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
     
    void pause();
     
    int main(int argc, char *argv[])
    {
        SDL_Surface *ecran = NULL, *zozor = NULL;
        SDL_Rect positionZozor;
        SDL_Event event;
        int continuer = 1;
     
        SDL_Init(SDL_INIT_VIDEO);
     
        ecran = SDL_SetVideoMode(550, 350, 32, SDL_HWSURFACE | SDL_DOUBLEBUF); /* Double Buffering */
        SDL_WM_SetCaption("petit jeux dans l'espace", NULL);
     
        zozor = SDL_LoadBMP("vaisseau.bmp");
        SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 255, 255, 255));
     
        positionZozor.x = ecran->w / 2 - zozor->w / 2;
        positionZozor.y = ecran->h / 2 - zozor->h / 2;
     
        SDL_EnableKeyRepeat(10, 10); /* Activation de la répétition des touches */
     
        while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
                    break;
                case SDL_KEYDOWN:
                    switch(event.key.keysym.sym)
                    {
                        case SDLK_UP:
                            positionZozor.y--;
                            break;
                        case SDLK_DOWN:
                            positionZozor.y++;
                            break;
                        case SDLK_RIGHT:
                            positionZozor.x++;
                            break;
                        case SDLK_LEFT:
                            positionZozor.x--;
                            break;
                    }
                    break;
            }
     
            SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 5, 45));
            SDL_BlitSurface(zozor, NULL, ecran, &positionZozor);
            SDL_Flip(ecran);
        }
     
        SDL_FreeSurface(zozor);
        SDL_Quit();
     
        return EXIT_SUCCESS;
    }
    void pause()
    {
        int continuer = 1;
        SDL_Event event;
     
        while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
            }
        }
    }
    Oui je sais c'est pas bien de faire des copier collé du tuto quand on apprend et qu'ont a du mal...

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Dans ce genre de comportement, le plus fréquent est que c'est l'IDE qui empêche la fenêtre de se fermer à la fin de l'exécution du programme de façon à ce que l'utilisateur puisse la voir (et souvent rajoute à la fin un message pour avertir l'utilisateur de la fin de l'exécution).
    En exécutant sans l'IDE, la fenêtre se ferme normalement lorsque le programme se termine et si l'exécution est rapide, alors l'utilisateur ne voie qu'un bref clignotement de la fenêtre.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Et pour qu'il ne se referme pas lorsque je le lance extérieurement a l'IDE je fait comment?

    Le but est a la fin de faire un jeux qui marche alors pour moi sa pose pas de problème mais je comptais (plus tard, dans très longtemps a mon avis ) inclure un mode multijoueur pour y jouer avec mes amis...( qui ne codent pas encore et ne coderont probablement jamais...)

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 919
    Points : 220 492
    Points
    220 492
    Billets dans le blog
    127
    Par défaut
    Bonjour,

    Je pense que le problème est lié au chargement de fichiers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zozor = SDL_LoadBMP("vaisseau.bmp");
    Cela nécessite d'avoir le fichier .bmp a coté du .exe. Etes vous dans ce cas là ?
    En plus, vous ne vérifiez pas les erreurs, donc si le fichier est manquant, vous allez crasher.

    Le truc avec l'IDE, c'est que lorsqu'il lance le programme, il le lance à partir d'un répertoire précis (souvent le répertoire du projet). Donc si les images sont dans ce répertoire, alors oui, ça passait sans problème.

    Pour avoir un feedback d'une application console, vous pouvez essayer de lancer cette application dans une ligne de commande. Cela permettra de ne pas avoir la fermeture de la console, lorsque le programme écrit des messages (bon ok, ce n'est pas votre cas).

Discussions similaires

  1. Windows 7 fenête de jeu qui se ferme toute seule
    Par Hyoga dans le forum Windows 7
    Réponses: 2
    Dernier message: 07/03/2013, 12h08
  2. [SWING] Fenetre qui se ferme toute seule
    Par womannosky dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 29/04/2009, 16h53
  3. Form qui se ferme toute seule
    Par Papy214 dans le forum Visual Studio
    Réponses: 2
    Dernier message: 11/12/2008, 15h12
  4. Outllok 2003 - Fenetre qui se ferme toute seule
    Par joky1209 dans le forum Outlook
    Réponses: 2
    Dernier message: 18/03/2008, 15h00
  5. Réponses: 6
    Dernier message: 16/08/2006, 16h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo