[déplacé DEPHI -> C] Fonction pourcentage pour le jeu " qui veut gagner des mill

Signaler
Messages postés
2
Date d'inscription
jeudi 31 décembre 2009
Statut
Membre
Dernière intervention
6 janvier 2010
-
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
-
Bonjour,

Je réalise actuellement un programme en C reproduisant le jeu "Qui veut gagner des millions", mais une version simple, sans interface graphique etc..
J'ai un problème: je voudrais créer un fonction qui permet simuler le vote du public: la fonction doit donc fournir 4 pourcentages pour les réponses et bien sur le pourcentage de la bonne réponse doit être plus élevé.
Mais ce pourcentage de la bonne réponse doit également diminuer plus la difficulté de la question augmente...
J'ai cherché des heures... mais je n'ai pas du tout d'idée pour créer cette fonction.
Auriez-vous des propositions ?

Merci d'avance
-----------------------------------------------------------------------------
Je vous fourni le programme entier (sans la fonction du vote du public )


/fonction qui tire un nombre au hazard (utilisée pour le 50/50)

int rnd(long mi,long ma)
{
long a;
a=rand()%(ma-mi+1)+mi;
return a;
}
int main()
{
long rep, vrai_rep;
long gain[12]={500,800,1500,6000,12000,24000,48000,72000,150000,300000,1000000};
long jocker_switch=1, jocker_5050=1, jocker_public=1;
long question=1, fin=0;
long i=1,r=0,j=0;
long P[4];
long tab[4];
srand(time(NULL));
printf("Bienvenue dans Qui veut gagner des Millions\n Emission presente par J-P Foucault\n");
printf("\n");
printf("vous allez devoir repondre a une serie de 12 questions a choix multiples.\n");
printf("vous disposez de 3 jockers:\n 1)le switch.\n 2)le 50/50.\n 3)le vote du public.\n");
printf("\n");
printf("Voici la pyramide des gains:\n\n");
printf(" 500E \n 800E \n 1.500E(palier) \n 3.000E \n 6.000E \n 12.000E\n 24000E \n 48.000E(palier) \n 72.000E \n 150.000E \n 300.000E \n 1.000.000E\n");
do
{
printf("voici la question %ld a %ld euros\n", &question, &gain[i]);
printf("switch=%ld 50/50=%ld public=%ld",&jocker_switch,&jocker_5050,&jocker_public);
printf("\n");
printf("instructions :\n arreter->taper 0 || reponse 1->taper 1 || reponse 2->taper 2 || reponse 3->taper 3 || reponse 4->taper 4 || switch->taper 5 || 50/50->taper 6 || public->taper 7\n");
// affichage de la question qui a été préalablement pioché dans le fichier de questions
scanf("%ld",&rep);
if (rep==vrai_rep)
{
printf("Bravo! c'est la bonne reponse, vous venez de remporter la somme de %ld \n",&gain[i]);
gain[i]=gain[i]+1;
question==question+1;
}
if (rep==5 && jocker_switch==1)
{
jocker_switch=0;
printf("Vous avez choisi le switch, une autre question va s'afficher \n");
// le programme choisi alors au hazard une autre question de la même catégorie
}
if (rep==6 && jocker_5050==1)
{
jocker_5050=0;
//l'ordinateur enlève au hazard 2 mauvaises réponses, donc choisit 2 réponses sur 3 a supprimer qui ne sont pas égal à vrai_rep
r=rnd(1,3); // on choisit au harzad une réponse fausse parmi les 3 disponibles qu'on va laisser affiché
if (r==1)
{
//afficher vrai_rep+rep1
}
if (r==2)
{
//afficher vrai_rep+rep2
}
if (r==3)
{
//afficher vrai_rep+rep3
}
}
if (rep==7 && jocker_public==1)
{
jocker_public=0;
P==publicpourcent(vrai_rep,question);
vrai_rep=tab[1];
for (j=0;j<3;j++)
{
printf("%ld",P[j]);
}
//l'ordinateur donne un pourcentage au hazard qui est de moins en moins important pour la bonne réponse quand on avance dans les questions
//on utilise la fonction créee préalablement qui permet de donner un pourcentage plus ou moins fiable en fonction de la difficulté de la question
// Affichage du tableau retourné par la fonction qui donne les 4 pourcentages
}
if (rep==0)
{
printf("Bravo! Vous repartez avec la somme de %ld euros",&gain[i]);
fin=1;
}
if (rep>7 || rep<0)
{
printf("Erreur de frappe ! Veuillez retaper votre choix \n");
printf("voici la question %ld a %ld euros\n", &question, &gain[i]);
printf("switch=%ld 50/50=%ld public=%ld",&jocker_switch,&jocker_5050,&jocker_public);
printf("\n");
printf("instructions :\n arreter->taper 0 || reponse 1->taper 1 || reponse 2->taper 2 || reponse 3->taper 3 || reponse 4->taper 4 || switch->taper 5 || 50/50->taper 6 || public->taper 7\n");
// affichage de la question qui a été préalablement pioché dans le fichier de questions
}
if (rep==5 && jocker_switch==0)
{
printf("Vous n'avez plus ce jocker ! Veuillez retaper votre reponse ! \n");
// réacffichage de la question posée
}
if (rep==6 && jocker_5050==0)
{
printf("Vous n'avez plus ce jocker ! Veuillez retaper votre reponse ! \n");
// réacffichage de la question posée
}
if (rep==7 && jocker_public==0)
{
printf("Vous n'avez plus ce jocker ! Veuillez retaper votre reponse ! \n");
// réacffichage de la question posée
}
else
{
printf("desole mais ce n'est pas la bonne reponse \n");
printf("\n");
printf("La bonne reponse etait %ld\n",&vrai_rep);
printf("\n");
// Gain en fonction du palier franchi
if (gain[i]<1500)
{
gain[i]==0;
}
if (gain[i]>1800 && gain[i]<48000)
{
gain[i]==1500;
}
else
{
gain[i]==48000;
}
printf("Vous repartez avec la somme de %ld euros\n",&gain[i]);
fin==1;
}
}while(fin!=1 || gain[i]<1000000); // la boucle continue tant que fin n'est pas égal à 0 ou que le joueur n'a pas terminé le jeu
printf("--------------------------------FIN DU JEU----------------------------------\n");
return 0;

}

4 réponses

Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Plus la difficulté sera élevée, plus les quatre pourcentages sont uniformément répartis. Tu pourrais imaginer une fonction (mathématique) de la sorte :

x est la part du public qui répond correctement, sur une échelle de 1, et t est la difficulté de la question, de 1 à 15. On peut imaginer la fonction suivante :

x = 25 + (3 + r)t - 4r, où r est un nombre réel aléatoire 0 < r < 1

Cordialement, Bacterius !
Messages postés
2
Date d'inscription
jeudi 31 décembre 2009
Statut
Membre
Dernière intervention
6 janvier 2010

Eh bien! je ne pensais pas recevoir une réponse aussi rapidement!
Je vais tenter de mettre en oeuvre ton idée Bactérius,
Je te remercie!
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
"Eh bien! je ne pensais pas recevoir une réponse aussi rapidement!"
Surtout en postant un problème C sur un forum DELPHI . . .
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
[déplacé DEPHI -> C]

Pourquoi ...

Pour en revenir à la question, j'ai lancé cette fonction comme ça, il y a peut-être quelques ajustements à faire afin de la faire fonctionner.

Cordialement, Bacterius !