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 :

probléme et questions sur mon premier jeu.


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 probléme et questions sur mon premier jeu.
    Bon , j'ai commencé le jeu (Oui j'ai pas encore beaucoup bossé dessus mais c'est justement pour sa que j'écris)

    j'ai deux question et un problème.

    Questions:Est-il possible de faire un menu en console pour mon jeu (histoire de gagner un peu de temp vu que ce serait du coup plus simple a faire) et si oui comment faire ma boucle qui me permetrait de rester sur le menu tant que je ne choisisse pas le sous menu qui fait quitter le jeu (que j'ai intéligement nommé "Fin du jeu" )

    problème:Vu que pour l'instant je suis partit dans une idée de menu en console, j'ai décidé que la fenêtre SDL ne s'ouvrirait que lorsque on en aurait finit avec les menus mais le problème c'est que cela me marque le message d'erreur :" undefined reference to 'SDL_Main' " alors qu'est ce que je doit faire, sachant qu'avec un programme de test de la fenetre SDL sa marche?

    Voici le code source (au cas ou ^^):
    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    #include <stdio.h>
    #include <stdlib.h>
    #include <SDL/SDL.h>
     
    void pause();
     
    int main()
    {
        printf("Bienvenue sur le jeux : One Piece , Luffy contre les zombies !\n\n");
        printf("Quel mode de jeux choisi tu, pirate ?\n\n");
        printf("1. Aventure\n");
        printf("2. Multijoueur\n");
        printf("3. Regles\n");
        printf("4. Option\n");
        printf("5. Fin du jeu\n");
        int ChoixModeMenu;
        scanf("%d", &ChoixModeMenu);
        if(ChoixModeMenu == 1)
        {
            printf("WOUAH, tu veux donc jouer en mode Aventure, c'est cool !\n\n");
            printf("Bon, il me faut ton nom, sa ferait bizarre un avis de recherche avec aucun nom !\n\n");
            char* nomPersonnage[100];
            scanf("%s", &nomPersonnage);
            printf("Ah, tu t'apelle donc %s, bien j'envoie a la Marine !\n\n", nomPersonnage);
            printf("Et oui, tu es deja rechercher pour le vol d'un fruit du demon, ta tete est mise a prix a 10 000 berry !\n\n");
            printf("Bon, allez je vais te laisser, %s . Bonne chance pour ton aventure !", nomPersonnage);
            SDL_Init(SDL_INIT_VIDEO);
            SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
            SDL_WM_SetCaption("One piece : Luffy conter les zombies", NULL);
            pause();
            SDL_Quit();
        }
        else if(ChoixModeMenu == 2)
        {
            printf("Hein, tu fais partie d'un equipage, en-est tu le capitaine ?\n\n");
            printf("1. Oui\n");
            printf("2. Non\n");
            int ChoixSiTuEsLeCapitaine;
            scanf("%d", &ChoixSiTuEsLeCapitaine);
            if (ChoixSiTuEsLeCapitaine == 1)
            {
                printf("\nAh ben en plus !\n\n");
            }
            else if (ChoixSiTuEsLeCapitaine == 2)
            {
                printf("\nOhhh....Dommages que tu ne sois pas le capitaine, on aurrait pu combattre!\n\n");
            }
            else
            {
                printf("\nQUOI? TU NE SAIS PAS SI TU ES LE CAPITAINE DE TON EQUIPAGE, MAIS TU EN FAIT EXPRES ?\n\n");
            }
            printf("Bon, je vais lancer le jeux et tu pourras choisir la partie que tu souhaite rejoindre et commencer a jouer avec tes amis .\n\n");
     
        }
        else if(ChoixModeMenu == 3)
        {
            printf("Bienvenue dans le menu des regles !\n\n\n");
            printf("Pour jouer a ce jeu il te faut un ordinateur, un clavier et une souris, si t'as pas ca, tu peux commencer a t'inquieter !\n");
            printf("Bon, le but de ce jeux est de tuer un max de zombies pour que toi et les autres membres de ton equipage puisse survivre .\n");
            printf("Pour les controls, utilise le pave numerique pour te deplacer et les differentestouches qui te servent au attaques .\n\n");
            printf("---FIN DU MENU DES OPTIONS---\n\n\n\n");
        }
        else if(ChoixModeMenu == 4)
        {
            printf("---MENU DES OPTIONS---\n\n");
            printf("Bienvenue dans le menu des options !");
        }
        else if(ChoixModeMenu == 5)
        {
            printf("Aurevoir et merci d'avoir joue.\nA bientot !\n\n\n");
            printf("Appuyer sur n'importe quelle touche et faite enter pour terminer le jeux .");
            int findujeu;
            scanf("%d", &findujeu);
        }
     
        return 0;
    }
     
     
    void pause()
    {
        int continuer = 1;
        SDL_Event event;
     
        while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
            }
        }
    }
    (par pitié pas de commentaire sur le titre du jeu et sur les menus j'était pas tres inspiré alors je l'ai fait a la "One Piece".)
    c'est possible qu'il y est quelques fautes d'orthographes ^^

    Ps:j'utilise quelle commande pour faire une pause en attendant d'appuez sur entrer pour quitter le programme ( je sai qu'il y aura un événement mais je l'utilise avec quoi?)

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par LittleBitOne Voir le message
    Bon , j'ai commencé le jeu (Oui j'ai pas encore beaucoup bossé dessus mais c'est justement pour sa que j'écris)

    j'ai deux question et un problème.

    Questions:Est-il possible de faire un menu en console pour mon jeu (histoire de gagner un peu de temp vu que ce serait du coup plus simple a faire) et si oui comment faire ma boucle qui me permetrait de rester sur le menu tant que je ne choisisse pas le sous menu qui fait quitter le jeu (que j'ai intéligement nommé "Fin du jeu" )
    Tu fais une boucle while (1) dans laquelle tu insères ton menu. Si l'utilisateur choisi de quitter tu fais break;. Tu sors ainsi de la boucle et fin de programme.

  3. #3
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Autre remarque pendant qu'on y est. ChoixModeMenu est un int. Donc plutôt que de faire if (ChoixModeMenu==...) utilises switch (ChoixModeMenu);. C'est plus propre et beaucoup plus lisible.

  4. #4
    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
    ok, mais comme je suis pas spécialement doué avec les boucles, tu peux m'indiquer ou la placer ainsi que le break.


  5. #5
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Ca pourrait donner ce genre de chose
    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
    79
    80
    81
    82
    83
    84
    85
     
    int main()
    {
      int ChoixModeMenu;
     
      while (1)
        {
          printf("Bienvenue sur le jeux : One Piece , Luffy contre les zombies !\n\n");
          printf("Quel mode de jeux choisi tu, pirate ?\n\n");
          printf("1. Aventure\n");
          printf("2. Multijoueur\n");
          printf("3. Regles\n");
          printf("4. Option\n");
          printf("5. Fin du jeu\n");
     
          scanf("%d", &ChoixModeMenu);
     
          switch (ChoixModeMenu)
    	{
    	case 1 :
    	  {
    	    printf("WOUAH, tu veux donc jouer en mode Aventure, c'est cool !\n\n");
    	    printf("Bon, il me faut ton nom, sa ferait bizarre un avis de recherche avec aucun nom !\n\n");
    	    char* nomPersonnage[100];
    	    scanf("%s", &nomPersonnage);
    	    printf("Ah, tu t'apelle donc %s, bien j'envoie a la Marine !\n\n", nomPersonnage);
    	    printf("Et oui, tu es deja rechercher pour le vol d'un fruit du demon, ta tete est mise a prix a 10 000 berry !\n\n");
    	    printf("Bon, allez je vais te laisser, %s . Bonne chance pour ton aventure !", nomPersonnage);
    	    SDL_Init(SDL_INIT_VIDEO);
    	    SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
    	    SDL_WM_SetCaption("One piece : Luffy conter les zombies", NULL);
    	    pause();
    	    SDL_Quit();
    	    break;
    	  }
    	case 2 :
    	  {
    	    printf("Hein, tu fais partie d'un equipage, en-est tu le capitaine ?\n\n");
    	    printf("1. Oui\n");
    	    printf("2. Non\n");
    	    int ChoixSiTuEsLeCapitaine;
    	    scanf("%d", &ChoixSiTuEsLeCapitaine);
    	    if (ChoixSiTuEsLeCapitaine == 1)
    	      {
    		printf("\nAh ben en plus !\n\n");
    	      }
    	    else if (ChoixSiTuEsLeCapitaine == 2)
    	      {
    		printf("\nOhhh....Dommages que tu ne sois pas le capitaine, on aurrait pu combattre!\n\n");
    	      }
    	    else
    	      {
    		printf("\nQUOI? TU NE SAIS PAS SI TU ES LE CAPITAINE DE TON EQUIPAGE, MAIS TU EN FAIT EXPRES ?\n\n");
    	      }
    	    printf("Bon, je vais lancer le jeux et tu pourras choisir la partie que tu souhaite rejoindre et commencer a jouer avec tes amis .\n\n");
    	    break;
    	  }
    	case 3 :
    	  {
    	    printf("Bienvenue dans le menu des regles !\n\n\n");
    	    printf("Pour jouer a ce jeu il te faut un ordinateur, un clavier et une souris, si t'as pas ca, tu peux commencer a t'inquieter !\n");
    	    printf("Bon, le but de ce jeux est de tuer un max de zombies pour que toi et les autres membres de ton equipage puisse survivre .\n");
    	    printf("Pour les controls, utilise le pave numerique pour te deplacer et les differentestouches qui te servent au attaques .\n\n");
    	    printf("---FIN DU MENU DES OPTIONS---\n\n\n\n");
    	    break;
    	  }
    	case 4 :
    	  {
    	    printf("---MENU DES OPTIONS---\n\n");
    	    printf("Bienvenue dans le menu des options !");
    	    break;
    	  }
    	default :
    	  {
    	    printf("Aurevoir et merci d'avoir joue.\nA bientot !\n\n\n");
    	    printf("Appuyer sur n'importe quelle touche et faite enter pour terminer le jeux .");
    	    int findujeu;
    	    scanf("%d", &findujeu);
                break;
    	  }
    	}
        }
     
      return 0;
    }

  6. #6
    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
    merchi, je vais bosser avec ca et puis je verais si il y a d'autre bug que le "undefined reference to sdl_main"

    edit:Nan sa marche toujour pas, y'a toujour le "undefined reference to SDL_MAIN"

  7. #7
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Ha mais je ne cherchais pas à résoudre ce problème précis

  8. #8
    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
    Ohhh c'est pas grave , je suis sure qu'il marche tres bien avec cette erreur ^^, c'est juste qui veut pas démarrer.

  9. #9
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Bon je suis loin d'être un spécialiste de la SDL mais je ne vois nul part dans ton code la fonction sdl_main();. Est-ce normal?

  10. #10
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Je ne trouve nul part cette fonction dans la documentation officielle. Maintenant j'ai peut être mal cherché...

  11. #11
    Membre expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Points : 3 352
    Points
    3 352
    Par défaut
    Salut,

    apparemment il faut protyper main avec argc et argv pour que ça fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int main(int argc, char* argv)
    Ref: http://old.nabble.com/Undefined-refe...d14936929.html

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    il faut effectivement modifier le main comme indiqué, et il faut correctement linker SDLmain.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  13. #13
    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
    Salut, Merci pour vos réponse, sa règle le probléme d'avant , mais en créer un autre, en mofifiant la fonction main de:
    a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    main(int argc, char*argv[])
    La page console s'ouvre,Mais reste entierement noire et aucune autre fenetre ne s'ouvre.(Je crois que ce jeu m'en veux.)
    Je commence a me edmander si sa serait pas plus simple de faire le menu directement en SDL?

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Disons qu'il est maintenant temps de lire la doc pour utiliser la SDL correctement.
    SDL_SetVideoMode retourne un SDL_Suface* qui représente l'écran. Il peut être intéressant de récupérer cette surface pour l'utiliser..

    Ensuite, il faut faire un SDL_Flip(SDL_Surface* screen) pour afficher l'écran, ça n’apparaît nulle part, donc ça me choque pas que tu ne voies rien.

    Enfin, l'idée d'un menu console au préalable, pourquoi pas, mais la SDL redirige en général le flux standard vers stderr.txt et stdout.txt.
    Si console tu souhaites utiliser, il faudrait faire ça mieux de cette manière amha
    - afficher menu
    - vérifier éventuellement code retour menu
    - passer à l'application fenêtre graphique
    Là tu crées la fenêtre graphique dans ton menu avant d'appeler une fonction pause qui réalise la boucle d'évènements... bref ça part dans tous les sens, et ça va pas aider à avancer, voir les erreurs et encore moins t'aider.

    edit: faire le menu en SDL, donc en graphique, ne sera pas forcément plus simple (il faut savoir utiliser la SDL et ça peut vite se compliquer). Après tout dépend de ce que tu souhaites.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  15. #15
    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
    Je crois que je vais directement le faire en SDL, comme de toute façon je l'aurai fait après et puis comme sa il n'y aura pas un fouilli indescriptible dans mon code.

Discussions similaires

  1. [Android] Paddles: Mon premier jeu gratuit sur Android
    Par zsalloum dans le forum Mon application mobile
    Réponses: 11
    Dernier message: 22/09/2014, 17h10
  2. Problème sur mon premier exemple SSIS
    Par mouradsi dans le forum SSIS
    Réponses: 7
    Dernier message: 23/12/2010, 13h49
  3. Question sur mon formulaire de contact
    Par Analfabete dans le forum Langage
    Réponses: 3
    Dernier message: 24/04/2006, 18h12
  4. question sur mon futur processeur
    Par loveflower dans le forum Composants
    Réponses: 13
    Dernier message: 12/01/2006, 00h10
  5. [Language] Aide sur mon premier programme Java?
    Par hash2zo dans le forum Langage
    Réponses: 15
    Dernier message: 27/09/2005, 19h26

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