Projet ''Le Jeu des Allumettes"
Fermé
jeandchanel
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
-
Modifié par jeandchanel le 15/08/2016 à 09:13
jeandchanel Messages postés 135 Date d'inscription vendredi 10 juin 2016 Statut Membre Dernière intervention 31 mai 2017 - 22 août 2016 à 09:25
jeandchanel Messages postés 135 Date d'inscription vendredi 10 juin 2016 Statut Membre Dernière intervention 31 mai 2017 - 22 août 2016 à 09:25
A voir également:
- Projet ''Le Jeu des Allumettes"
- 94 jeu - Télécharger - Puzzle & Réflexion
- Jeu zuma - Télécharger - Jeux vidéo
- Casse-tête avec des allumettes - Télécharger - Jeux vidéo
- Jeu des logos - Télécharger - Jeux vidéo
- Jeu 94 degrés - Télécharger - Divers Jeux
3 réponses
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
15 août 2016 à 14:55
15 août 2016 à 14:55
Bonjour,
Impossible de t'aider avec ces informations.
Essaie de préciser s'il te plait.
Je tente quand même une réponse, la fonction player1VsPlayer2() retourne-t-elle la 'bonne' valeur?
Impossible de t'aider avec ces informations.
- question non claire
- code fourni ne permet pas de voir un problème
- où est le problème dans l'exemple ?
Essaie de préciser s'il te plait.
Je tente quand même une réponse, la fonction player1VsPlayer2() retourne-t-elle la 'bonne' valeur?
totodunet
Messages postés
1377
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
5 mars 2020
199
Modifié par totodunet le 18/08/2016 à 10:32
Modifié par totodunet le 18/08/2016 à 10:32
salut,
je confirme que c'est pas très clair ton code.
il faudrait que tu mettes tout ton code pour mieux t'aider. Déjà on sait pas où est l'instruction qui affiche "J1, Nombre d'allumettes à enlever :"
ensuite comme ta fonction player1VsPlayer2() retourne 1, ton userChoice vaut 1 quand modeJeu != SOLO
Ce qui dans le printf te fait afficher "HumanVSOrdi"
Qui ne tente rien n'a rien
je confirme que c'est pas très clair ton code.
il faudrait que tu mettes tout ton code pour mieux t'aider. Déjà on sait pas où est l'instruction qui affiche "J1, Nombre d'allumettes à enlever :"
ensuite comme ta fonction player1VsPlayer2() retourne 1, ton userChoice vaut 1 quand modeJeu != SOLO
userChoice = modeJeu == SOLO ? menuSolo() : player1VsPlayer2();
Ce qui dans le printf te fait afficher "HumanVSOrdi"
Qui ne tente rien n'a rien
jeandchanel
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
18 août 2016 à 10:50
18 août 2016 à 10:50
@totodunet
voici le code complet :
voici le code complet :
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define SOLO 1 #define MULTI 2 typedef enum bool bool; enum bool { TRUE, FALSE }; typedef struct NiveauJeu NiveauJeu; struct NiveauJeu { char nomNiveau[100]; int min; int max; }; NiveauJeu niveaux[] = { {"Facile", 13, 100}, {"Moyen", 13, 50}, {"Difficile", 13, 25} }; void viderBuffer() { int c = 0; while(c != '\n' && c != EOF) { c = getchar(); } } int lire(char* chaine, int longueurChaine) { char* positionEntree = NULL; if(fgets(chaine, longueurChaine, stdin) != NULL) { positionEntree = strchr(chaine, '\n'); if(positionEntree != NULL) { *positionEntree = '\0'; }return 1; }else { viderBuffer(); return 0; } } long lireLong() { char nombreTexte[100] = {0}; if(lire(nombreTexte, 100)) { return strtol(nombreTexte, NULL, 10); }else { viderBuffer(); return 0; } } double lireDouble() { char nombreTexte[100] = {0}; char *positionVirgule = NULL; if(lire(nombreTexte, 100)) { positionVirgule = strchr(nombreTexte, ','); if(positionVirgule != NULL) { *positionVirgule = '.'; }return strtod(nombreTexte, NULL); }else { viderBuffer(); return 0; } } void debutPartie() { printf("\n" "**************************************\n" "********LE JEU DES ALLUMETTES*********\n" "********Code par Jean Dechanel********\n" "**************************************\n\n"); } int demanderMenu() { long modeMenu = 0; printf("\n" "MENU\n" "Bien vouloir choisir !\n" "1. Nombre Predefini(21)\n2. Nombre Aleatoire\n3. Fixer un Nombre\n"); do { printf("\n" "Votre choix ? "); modeMenu = lireLong(); }while(modeMenu < 1 || modeMenu > 2); return modeMenu; } int demanderModeJeu() { long modeJeu = 0; printf("\n" "MODE DE JEU\n" "Bien vouloir choisir un mode de jeu !\n" "1. Mode Solo\n2. Mode Multi\n"); do { printf("\n" "Votre choix ? "); modeJeu = lireLong(); }while(modeJeu < 1 || modeJeu > 2); return modeJeu; } NiveauJeu demanderNiveauJeu() { long choixNiveau = 0; printf("\n" "NIVEAU DE JEU\n" "Bien vouloir choisir un niveau de jeu !\n" "1. Facile\n2. Moyen\n3. Difficile\n"); do { printf("\n" "Votre choix ? "); choixNiveau = lireLong(); }while(choixNiveau < 1 || choixNiveau > 3); return niveaux[choixNiveau - 1]; } bool rejouerPartie(long choice) { printf("\n" "Voulez-vous rejouer une autre Partie ?\n" "1. Oui\n2. Non\n"); do { printf("\n" "Votre choix ? "); choice = lireLong(); }while(choice < 1 || choice > 2); return choice == 1; } int menuSolo() { long userChoice = 0; printf("\n" "Que voulez-vous faire ?\n" "1. Affronter l'Ordinateur ?\n2. Affronter l'Ordi. avec un nombre Predefini(20) ?\n"); do { printf("\n" "Votre choix ? "); userChoice = lireLong(); }while(userChoice < 1 || userChoice > 2); return userChoice; } int ordiVsPlayer() { int J1, nbAEnlever, nbDepart = rand() % 30; printf("\nJ1, Nombre d'allumettes a enlever : "); scanf("%d", &nbAEnlever); if(nbAEnlever == 3) { J1 = nbDepart - 3; } printf("Il reste %d\n", J1); return 1; } int nbPredefini() { printf("\nTest fonction nbPredefini !"); return 1; } int player1VsPlayer2() { printf("\nSalut, je suis la fonction player1VsPlayer2 et je suis en construction !"); return 1; } int main(int argc, char *argv[]) { int modeJeu = 0, modeMenu = 0, userChoice = 0, choice; NiveauJeu niveauJeu = {"", 0, 0}; debutPartie(); do { modeJeu = demanderModeJeu(); printf("Bienvenu au mode %s !\n", modeJeu == SOLO ? "Solo" : "Multi"); niveauJeu = demanderNiveauJeu(); printf("Bienvenu au niveau %s !\n", niveauJeu.nomNiveau); userChoice = modeJeu == SOLO ? menuSolo() : player1VsPlayer2(); printf("\nVous avez choisi %s !\n", userChoice == 1 ? "HumanVSOrdi" : "Predefini(20)"); userChoice == 1 ? ordiVsPlayer() : nbPredefini() ; }while(rejouerPartie(choice)); return EXIT_SUCCESS; }
totodunet
Messages postés
1377
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
5 mars 2020
199
18 août 2016 à 11:02
18 août 2016 à 11:02
ok merci, ça permet de confirmer
donc comme j'ai dit plus haut, comme ta fonction player1VSPlayer2() renvoie pour l'instant 1, quand tu choisis le mode multi, tu appelles bien cette fonction et userChoice vaut obligatoirement 1
ce qui dans le printf qui suit dans le main fait afficher "Vous avez choisi HumanVSOrdi" et dans l'instruction qui suit encore appelle bien la fonction ordiVsPlayer()
donc comme j'ai dit plus haut, comme ta fonction player1VSPlayer2() renvoie pour l'instant 1, quand tu choisis le mode multi, tu appelles bien cette fonction et userChoice vaut obligatoirement 1
ce qui dans le printf qui suit dans le main fait afficher "Vous avez choisi HumanVSOrdi" et dans l'instruction qui suit encore appelle bien la fonction ordiVsPlayer()
// modeJeu != SOLO donc userChoice = playerVsPlayer2() (userChoice = 1) userChoice = modeJeu == SOLO ? menuSolo() : player1VsPlayer2(); // affiche Vous avez chosis HumanVSOrdi printf("\nVous avez choisi %s !\n", userChoice == 1 ? "HumanVSOrdi" : "Predefini(20)"); // appel de ordiVSPlayer userChoice == 1 ? ordiVsPlayer() : nbPredefini() ;
jeandchanel
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
Modifié par jeandchanel le 18/08/2016 à 12:23
Modifié par jeandchanel le 18/08/2016 à 12:23
@totodunet
Que dois je donc faire pour corriger tout ça ?
Voici ce qui se passe quand toutes les fonctions ne renvoient rien.
Que dois je donc faire pour corriger tout ça ?
Voici ce qui se passe quand toutes les fonctions ne renvoient rien.
MODE DE JEU Bien vouloir choisir un mode de jeu ! 1. Mode Solo 2. Mode Multi Votre choix ? 2 Bienvenu au mode Multi ! NIVEAU DE JEU Bien vouloir choisir un niveau de jeu ! 1. Facile 2. Moyen 3. Difficile Votre choix ? 1 Bienvenu au niveau Facile ! Salut, je suis la fonction player1VsPlayer2 et je suis en construction ! Vous avez choisi Predefini(20) ! Test fonction nbPredefini ! Voulez-vous rejouer une autre Partie ? 1. Oui 2. Non Votre choix ?
totodunet
Messages postés
1377
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
5 mars 2020
199
18 août 2016 à 12:31
18 août 2016 à 12:31
tu veux corriger quoi ?
jeandchanel
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
18 août 2016 à 12:48
18 août 2016 à 12:48
@totodunet
Que faut il faire pour que ca marche normalement ?
Que faut il faire pour que ca marche normalement ?
paly2
Messages postés
254
Date d'inscription
vendredi 29 août 2014
Statut
Membre
Dernière intervention
15 février 2018
25
20 août 2016 à 13:10
20 août 2016 à 13:10
userChoice = modeJeu == SOLO ? menuSolo() : player1VsPlayer2(); printf("\nVous avez choisi %s !\n", userChoice == 1 ? "HumanVSOrdi" : "Predefini(20)"); userChoice == 1 ? ordiVsPlayer() : nbPredefini() ;
Selon le mode du jeu, tu appelles ou la fonction menuSolo(), ou la fonction player1VsPlayer2(). La première retourne soit 1, soit 2 et la deuxième retourne toujours 1.
Je n'ai pas du tout compris la signification de ces retours (surtout dans la fonction player1VsPlayer2), mais pour lui donner une signification différente selon la fonction qui a été appelée (menuSolo() ou player1VsPlayer2()), il faut faire une condition qui englobe aussi le printf().
if (modeJeu == SOLO) { userChoice = menuSolo(); printf("\nVous avez choisi %s !\n", userChoice == 1 ? "HumanVSOrdi" : "Predefini(20)"); userChoice == 1 ? ordiVsPlayer() : nbPredefini(); /* Suite du code en solo */ } else { // modeJeu == MULTI userChoice = player1VsPlayer2(); printf("\nTexte à afficher après avoir appeler la fonction player1VsPlayer2(), supprimer ce printf s'il n'y a rien à afficher\n"); /* Suite du code en multi */ }
jeandchanel
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
22 août 2016 à 09:25
22 août 2016 à 09:25
Bonjour Paly2, ca marche, merci beaucoup !
17 août 2016 à 09:12
la fonction est une fonction en construction! elle retourne un 1 provisoirement ! Le jeu lui même est encore en construction, je suis encore au niveau des menus mais l'affichage me déçois confère
18 août 2016 à 08:34
la ligne Vous avez choisi HumanVSOrdi ! et la ligne J1, Nombre d'allumettes a enlever : appartiennent au Mode Solo et n'ont rien a faire la !!!