Petit jeu a 3 questions

Moderator: Mod

Petit jeu a 3 questions

Postby feldo » Wed Apr 27, 2011 3:13 pm

Bonjour,je m’entraîne avant d'attaquer la partie 2 du sdz.
[code:1:8e5a44f36d]#include <stdio.h>
#include <stdlib.h>

int main()
{
int choixQuestion=0;
printf("\t\t #### Question pour 3 bombons ####\n\nTaper le chiffre correspondant a votre choix.\n\n");
printf("1.Histoire-Geographique.\n\n");
printf("2.Science.\n\n");
printf("3.Geek.\n\n");
scanf("%d",&choixQuestion);

if (choixQuestion==1)
{
int reponse=0;
printf("Vous avez choisis l'histoire-geographique.\n\n");
printf("En quelle annee,Neil Amstrong a marche sur la lune ?\t\n");
scanf("%d",&reponse);
if(reponse==1969)
printf("Bonne reponse !\n");
else
printf("Mauvaise reponse ...");

}

else if (choixQuestion==2)
{
int reponse=0;
printf("Vous avez choisis la science.\n\n");
printf("Combien de planete ya t-il dans le systeme solaire ?\t\n");
scanf("%d",&reponse);
if (reponse ==8 )
printf("Bonne reponse !\n");
else
printf("Mauvaise reponse ...");
}
else if (choixQuestion ==3)
{
int reponse=0;
printf("Vous avez choisis le theme geek\n\n");
printf("En quelle annee est apparue pour la premiere fois Jumpman plus connus sous le nom de Mario dans le jeu Donkey Kong ?\t\N");
scanf("%d",&reponse);
if (reponse == 1981)
printf("Bonne reponse !\n");
else
printf("Mauvais reponse ...");

}

return 0;
}
[/code:1:8e5a44f36d]

Voila vous pouvez le tester ^^ certain dirons, tout le monde sait faire un truc facile, mais moi je débute, je vais aussi rajouter plusieurs question pour chaque catégorie ou le joueur aura le choix et introduire les boucles mais je pense pas en avoir besoin.
Je cherche une fonction pour permettre de recommencer le jeu quelque chose comme ça,je sais pas si sa existe.
Je vous souhaite une bonne journée !
User avatar
feldo
Projets
 
Posts: 33
Joined: Sun Apr 04, 2010 1:30 pm
Location: 69

Postby GRIMMJOWBO » Wed Apr 27, 2011 4:56 pm

Hello,
Ce topic aurait plus sa place sur devbbs.
[quote:5201cec20a="EMRE"]Je cherche une fonction pour permettre de recommencer le jeu quelque chose comme ça,je sais pas si sa existe. [/quote:5201cec20a]
Bien sûr que si ça existe, tu n'as qu'a par exemple créer une variable continuer que tu initialiseras à 1 et à laquelle tu affecteras une valeur différente si la personne ne veut pas continuer (tu lui pose la question). Après tout le jeu est contenu dans une boucle qui s'exécute tant que continuer vaut une valeur différente de 0.
ça te donnerait quelque chose du genre:
[code:1:5201cec20a]
int main(){
int continuer=1;
while(continuer){
// Tu fous tout le jeu ici
/* A la fin de chaque question tu lui demande si il veut continuer si non tu donnes la valeur 0 à la variable continuer */
}
return 0;
}
[/code:1:5201cec20a]
Enfin ce n'est qu'un exemple tout dépend de ce que tu veux faire (lui demander de finir à chaque question ça peut être lourd) et tu peux faire de plein de manière différentes du moment que tu maitrise les boucles. Tu peux aussi faire un goto.
Après si tu souhaites progresser j'ai quelques 'améliorations à te proposer:
[list:5201cec20a]
[*:5201cec20a]Créer un système des score (dire à la fin du jeu tu as tant de points, quand tu auras fini la partie 2 du tuto du sdz tu pourrais enregistrer le score dans un fichier et faire un classement)
[*:5201cec20a]Compter le nombre de question auquel le joueur a répondu et dire par exemple tu as réussi 2/5 des questions.
[*:5201cec20a]Les question seront choisies aléatoirement
[/list:u:5201cec20a]
Laisser libre cours à ton imagination et have fun :)
++
User avatar
GRIMMJOWBO
 
Posts: 778
Joined: Fri May 07, 2010 7:14 pm
Location: France

Postby feldo » Wed Apr 27, 2011 6:28 pm

Merci d'avoir répondus,enfaite quand j'essaie d’améliorer je mélange tout,avant j'ai essayer de mettre2 questions pour chaque catégorie,et ça n'a pas marché.
je devais de nouveau faire une condition et ça un peu mélangé ...
Je vais essayer car je dois absolument maîtriser la partit 1 avant d'attaquer la 2 et je vais poster sur devbbs
User avatar
feldo
Projets
 
Posts: 33
Joined: Sun Apr 04, 2010 1:30 pm
Location: 69

Postby Manu404 » Thu Apr 28, 2011 8:35 am

Autre possibilité que la méthode itérative, un peu de récursion que je trouve plus propre.
La fin de ton main devient :

[code:1:5a818abd34]
int r;
printf("Wanna replay ? \n 1 : Yes \n >2 : No \n");
scanf("%d", &r);
if(r==1) main();
return 0;
[/code:1:5a818abd34]

Ceci dit, surveille ta stack quand tu fait de la récursion.
User avatar
Manu404
 
Posts: 2219
Joined: Tue Feb 26, 2008 3:44 pm
Location: ::1:

Postby Manu404 » Thu Apr 28, 2011 8:54 am

Allé, avait rien a fou***

just for fun, une autre manière de faire ton jeux

[code:1:a777cf90ac]
#include <stdlib.h>
#include <stdio.h>

int askquestion(char* question, char* theme, int reponse);
int menu();

int main()
{
int choixQuestion=0, reponse=0, r=0;
char question[255], theme[255];

choixQuestion = menu();

if (choixQuestion == 1)
{
sprintf(question, "En quelle annee,Neil Amstrong a marche sur la lune ?");
sprintf(theme, "histoire-geographique");
reponse = 1969;
}
else if (choixQuestion == 2)
{
sprintf(question, "Combien de planete ya t-il dans le systeme solaire ?");
sprintf(theme, "science");
reponse = 8;
}
else if (choixQuestion == 3)
{
sprintf(question, "En quelle annee est apparue pour la premiere fois Jumpman plus connus sous le nom de Mario dans le jeu Donkey Kong ?");
sprintf(theme, "geek");
reponse = 1981;
}
else
{
sprintf(question, "Tu sais lire ? Un nombre entre 1 et 3 cretin !");
sprintf(theme, "fuzzing");
reponse = 1981;
}

if(askquestion(question, theme, reponse) == 1)
printf("Bonne réponse\n");
else
printf("Loupé ! :D\n");

printf("Wanna replay ? \n 1 : Yes \n >2 : No \n");
scanf("%d", &r);
if(r==1)
main();
return 0;
}

int menu()
{
int choixQuestion=0;
printf("\t\t #### Question pour 3 bombons ####\n\nTaper le chiffre correspondant a votre choix.\n\n");
printf("1.Histoire-Geographique.\n\n");
printf("2.Science.\n\n");
printf("3.Geek.\n\n");
scanf("%d",&choixQuestion);
return choixQuestion;
}

int askquestion(char* question, char* theme, int reponse)
{
int r;
printf("Vous avez choisis le theme %s\n", theme);
printf("%s\n", question);
scanf("%d", &r);
if(r==reponse)
return 1;
return 0;
}
[/code:1:a777cf90ac]
User avatar
Manu404
 
Posts: 2219
Joined: Tue Feb 26, 2008 3:44 pm
Location: ::1:

Postby THE-DEATH » Thu Apr 28, 2011 7:16 pm

Je suis pas du meme avis, recursion ok mais sur le main je trouve pas ca propre.
User avatar
THE-DEATH
 
Posts: 971
Joined: Wed Jul 23, 2008 10:49 am
Location: 127.0.0.1

Postby SPL3EN » Fri Apr 29, 2011 12:25 am

Personnellement, si tu es débutant, je t'encouragerai fortement vers une programmation respectant le modèle [url=http://fr.wikipedia.org/wiki/Mod%C3%A8le-Vue-Contr%C3%B4leur]MVC[/url]. (c'est ce genre de choses ultra importantes qui n'est pas du tout abordé qui me fait peur sur le SDZ!)
C'est une façon de coder intelligente, et qui te permet de modifier à tout moment <par exemple> d'interface graphique, sans pour autant changer tout ton code.
Donc par exemple, passer de la console à une GUI de façon simple.

Aussi, j'ai préféré regrouper les informations dans des tableaux afin de modéliser tes données.
La meilleure solution (même si je ne pense pas que tu les aies encore vues) aurait été de faire une structure, du genre :

[code:1:525d1352cb]typedef struct _Question
{
char *question;
char *theme;
int reponse;

} Question;
[/code:1:525d1352cb]

Ce qui pourrait te donner la possibilité de créer des nouvelles questions, les ajouter à une liste chaînées par exemple, implémenter des méthodes pour les stocker/charger dans un fichier, etc etc.


[code:1:525d1352cb]#include <stdio.h>
#include <stdlib.h>

#define THEME_HISTOIRE 0
#define THEME_SCIENCE 1
#define THEME_GEEK 2

/**
* Vue
*/
void effacer_ecran() {
system("cls");
}

void afficher_menu()
{
printf (
"\t\t #### Question pour 3 bonbons ####\n\n"
"Taper le chiffre correspondant a votre choix.\n\n"
"[1] Histoire-Geographique.\n\n"
"[2] Science.\n\n"
"[3] Geek.\n\n"
);
}

void
afficher_erreur() {
printf("Desole, une erreur s'est produite.\n\n");
}

void afficher_choix(char *choix) {
printf("Vous avez choisis : %s\n\n", choix);
}

void afficher_reponse(char *reponse) {
printf("Votre reponse est %s !\n", reponse);
}

void afficher_question (char *question) {
printf("Votre question : \n%s\n-> ", question);
}

void afficher_quitter () {
printf("Voulez vous quitter ? (0 = Non, 1 = Oui)\n-> ");
}

/**
* Modèle
*/
void check_reponse(int reponse_user, int bonne_reponse)
{
if (reponse_user == bonne_reponse)
afficher_reponse("correcte");
else
afficher_reponse("fausse");
}

void demander_entier(int *entier)
{
fflush(stdin);
scanf("%d", entier);
}


/**
* Contrôleur
*/
int main()
{
/* Nos "base" de données */
char *themes[3];
char *questions[3];
int reponses[3];

int choixQuestion;
int reponse;
int quit = 0;

themes[THEME_HISTOIRE] = "Histoire-geographie";
themes[THEME_SCIENCE] = "Science";
themes[THEME_GEEK] = "Geek";

questions[THEME_HISTOIRE] = "En quelle annee,Neil Amstrong a marche sur la lune ?";
questions[THEME_SCIENCE] = "Combien de planete ya t-il dans le systeme solaire ?";
questions[THEME_GEEK] = "En quelle annee est apparue pour la premiere fois Jumpman plus connus sous le nom de Mario dans le jeu Donkey Kong ?";

reponses[THEME_HISTOIRE] = 1969;
reponses[THEME_SCIENCE] = 8;
reponses[THEME_GEEK] = 1981;

/* Le début de notre programme */
while (!quit)
{
effacer_ecran();
afficher_menu();
demander_entier(&choixQuestion);
choixQuestion = choixQuestion - 1;

switch (choixQuestion)
{
case THEME_HISTOIRE:
case THEME_SCIENCE:
case THEME_GEEK:
afficher_choix(themes[choixQuestion]);
afficher_question(questions[choixQuestion]);
demander_entier(&reponse);
check_reponse(reponse, reponses[choixQuestion]);
break;

default:
afficher_erreur();
break;
}

afficher_quitter();
demander_entier(&quit);
}

return 0;
}
[/code:1:525d1352cb]
User avatar
SPL3EN
Projets
 
Posts: 31
Joined: Mon Jun 21, 2010 5:21 pm

Postby feldo » Fri Apr 29, 2011 8:06 am

Merci,toute ces nouvelles choses je les connais pas.J'essaie de faire avec ce que j'ai appris mais merci quand même j'essaie
User avatar
feldo
Projets
 
Posts: 33
Joined: Sun Apr 04, 2010 1:30 pm
Location: 69

Postby Manu404 » Fri Apr 29, 2011 9:13 am

SPL3EN : Ton code mélange controller et model '--

[EDIT Manu404] : Après relecture de ton code en fait tu n'as aucun model, juste des views et des controllers
User avatar
Manu404
 
Posts: 2219
Joined: Tue Feb 26, 2008 3:44 pm
Location: ::1:

Postby feldo » Fri Apr 29, 2011 11:39 am

Svp si je peux me permettre cette question.
Est une obligation d'apprendre le langage C ou on peut s'en passer pour le hacking ?
Ce n'est juste qu'une question et pas une formalité !
User avatar
feldo
Projets
 
Posts: 33
Joined: Sun Apr 04, 2010 1:30 pm
Location: 69

Postby EKO » Fri Apr 29, 2011 7:57 pm

Tout dépend ce que tu as envie de faire. C'est vaste le hacking ...
Le C c'est juste un route vers le Système d'exploitation et les concepts mis en place par celui-ci.
EKO
Projets
 
Posts: 34
Joined: Sun Jan 04, 2009 1:58 am

Postby SPL3EN » Fri Apr 29, 2011 11:34 pm

[quote:79f8b043fd]SPL3EN : Ton code mélange controller et model '--[/quote:79f8b043fd]
Il y a des manières plus aimable de me le faire remarquer, ça donne franchement envie d'aider sur ce forum cette réaction.
Mais bon, ta réaction est normale puisque tu as parfaitement raison, merci de l'avoir fait remarquer, mais je vais vivre avec -mais je ne pense pas que ça va éclaircir Emre-.
User avatar
SPL3EN
Projets
 
Posts: 31
Joined: Mon Jun 21, 2010 5:21 pm

Postby feldo » Sat Apr 30, 2011 10:59 am

[quote:a6447d7972="EKO"]Tout dépend ce que tu as envie de faire. C'est vaste le hacking ...
Le C c'est juste un route vers le Système d'exploitation et les concepts mis en place par celui-ci.[/quote:a6447d7972]
Pour te répondre précisément,si j'apprends le c c'est parsque on m'a dit de l'apprendre car c'est la base d'un hacker
User avatar
feldo
Projets
 
Posts: 33
Joined: Sun Apr 04, 2010 1:30 pm
Location: 69

Postby THE-DEATH » Sat Apr 30, 2011 11:14 am

SPL3EN : faut pas tout prendre au 1e degres juste un conseil du coup si on te dis tiens bla bla, essaies de voir si oui on non tu fais comme ca et si en faisant bla bla sce serait peut etre pas mieux, fin, toutes les remarques aussi bien bonnes que mauvaises sont bonnes a prendre.

EMRE : je pense que tu te trompes, le C va te permettre d'avoir des connaissances en architecture systeme, en programmation mais, mis a part que la programmation dans un langage X est la base, le C n'ouvre pas toutes les portes, d'un autre cote il y a des langages web etc... qui en ouvrent d'autres. Donc renseignes toi plus. Si par la suite tu comptes faire du reversing / exploit applicatif, alors t'es bien parti, si ce n'est pas ce que tu veux, alors c'est pas le bon langage pour toi, meme s'il est toujours bon de le connaitre culturellement pour tout ce qui est archi system / os.
User avatar
THE-DEATH
 
Posts: 971
Joined: Wed Jul 23, 2008 10:49 am
Location: 127.0.0.1

Postby feldo » Sat Apr 30, 2011 12:56 pm

Je sais pas ce que je veux,vu que je sais rien faire :/
User avatar
feldo
Projets
 
Posts: 33
Joined: Sun Apr 04, 2010 1:30 pm
Location: 69

Next

Return to C/C++

Who is online

Users browsing this forum: No registered users and 3 guests

cron