wannabesuper
Messages postés2Date d'inscriptionmardi 29 mars 2011StatutMembreDernière intervention 9 avril 2011
-
8 avril 2011 à 17:17
wannabesuper
Messages postés2Date d'inscriptionmardi 29 mars 2011StatutMembreDernière intervention 9 avril 2011
-
9 avril 2011 à 17:26
Bonjour à tous,
alors voilà j'essaye avec mes faibles connaissances en c++ de réaliser un petit programme sur le jeux des cochons dont vous pouvez trouver ici quelques informations*: http://jeudecochons.free.fr/PAGE2.htm Alors voilà je dispose déjà des probabilités d'obtention des différents points, et mon programme est fait pour enfait comparer deux choix de méthodes. Je souhaites faire combatre un ordi contre un autre avec un par exemple qui laisse la main tout es 20 points et l'autres tous les 15 pour voir sur le long terme, admettons 1000 parties lequel serait le plus stratégique et permetrait un maximum de victoire. Voilà pour le programme de base, auquel je pense déjà quelques améliorations...
Mais voilà je bloque. J'arrive à un niveau ou je ne sais plus trop quoi faire. Alors si vous pouvez m'aider en sachant que j'aimerai rester simpliste dans les fonctions ( if, while, compteur … enfin vous voyez )...
Sinon j'utilise devc++
Voici mon code*:
Code:
# include
# include <stdlib.h>
# include <time.h>
int main()
{
srand(time(NULL));
int bidon=rand();
float tirage;
tirage=(rand()+0.0)/RAND_MAX;
int a;
a=0;
for(a=0;a>100;a=a+1)
{
if (tirage<=0.409295)
{
a=a+5;
}
else {
if ((tirage>0.409295) && (tirage<=0.6190857))
{
a=a+1;
}
else {
if ((tirage>0.6190857) && (tirage<=0.8216263))
{
a=a+0;
}
else {
if ((tirage>0.8216263) && (tirage<=0.89334133))
{
a=a+10;
}
else {
if ((tirage>0.89334133) && (tirage<=0.92358694))
{
a=a+15;
}
else {
if ((tirage>0.92358694) && (tirage<=0.99477799))
{
a=a+20;
}
else {
if ((tirage>0.99477799) && (tirage<=0.99532248855))
{
a=a+25;
}
else {
if ((tirage>0.99532248855) && (tirage<=0.9960650373))
{
a=a+40;
}
else {
if ((tirage>0.9960650373) && (tirage<=0.9961656501))
{
a=a+60;
}
else {
if ((tirage>0.9961656501) && (tirage<=1))
{
a=1000;
}
}
}
}
}
}
}
}
}
}
int b;
b=a;
if (b==1000)
{
cout << "Banqueroute !\n";
}
else{
cout << b << " points !!\n";
}
}
system ("PAUSE");
return(0);
}
wannabesuper
Messages postés2Date d'inscriptionmardi 29 mars 2011StatutMembreDernière intervention 9 avril 2011 9 avril 2011 à 17:26
Rebonjour tout le monde, alors voilà j'ai crus comprendre que le bu du programme n'est pas très clair …
Je souhaite donc le repréciser ici...
Alors voilà ce que j'aimerai qu'il se passe :
2 JOUEURS ordinateurs, x et y
x joue en premier une partie sur deux.
Partie 1 :
x joue : plusieurs possibilité (voir ma chaine de sequence avec les if et else)
soit : x marque 0 point ( correspondant à « if ((tirage>0.6190857)&&(tirage<=0.8216263)) » ), dans ce cas la main passe au joueur Y.
x marque 1,5, 10 ou 15 points : dans ce cas il rejoue. (Si on fixe , j'imagine une bpoucle while pour rejouer jusqu'à ce que son score soit de 20 points)
troisième possibilité : x marque 20 points ou plus : dans ce cas il passe la main à y
Enfin, en cas de banqueroute ( ce qui correspond à ''if ((tirage>0.9961656501) && (tirage<=1)){ a=1000))'' ), x perds tous ces points et la main revient à y.
Quand la main vient au joueur 2, il joue de la même façon a la différence que son score limite avant de passer la main sera différent, imaginons 25.
Enfin, la partie s’arrête quand x ou y atteint 100 points.
La partie 2 se produit comme la 1 à l’exception que l'ordinateur y obtient la première main.
Ensuite, un compteur devra faire tourner ce programme sur un nombre important de partie, disons 10000. Et s'affichera sur la commande le nombre de partie gagné par x et le nombre gagné par y ainsi que le score cumulé de leur points (pour savoir si les parties ont été serrées ou pas .
Voilà mon but, la je suis paumé ou j'en suis et je peine pas mal, donc si quelqu'un peut m'aider à le réaliser avec les contraintes que j'ai dis plus haut (dev c++ et expressions ''basiques'' comme if, for , while …). J'aimerai qu'il soit le plus simple et basique possible dans l'idée du début de programme. Je sais que cela est possible, un ami a réalisé ce programme avec cela...
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 8 avril 2011 à 18:58
- Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace - Dev-C++ n'est plus mis à jour depuis des années, et il embarque un très vieux compilateur ! Je te conseille: QtCreator (mon préféré), Code::Blocks ou Visual Studio Express.
- iostream.h => iostream. iostream.h est l'ancienne version de iostream (de 1994).
- Pas besoin d'autant d'accolades.
- Si tu sais qu'une valeur ne changera plus jamais, après son initialisation, déclare la comme constante, via le mot clé const.
Je t'ai fait une version "propre" de ton code:
#include
#include <cstdlib>
#include <ctime>
int main()
{
srand(time(0));
const double tirage = (double) rand() / (double) RAND_MAX;
std::cout << tirage << std::endl;
int score = 0;
for (int a = 0; a < 100; ++a)
{
if (tirage <= 0.409295)
score += 5;
else if (tirage > 0.409295 && tirage <= 0.6190857)
++score;
else if (tirage > 0.6190857 && tirage <= 0.8216263)
; // score += 0
else if (tirage > 0.8216263 && tirage <= 0.89334133)
score += 10;
else if (tirage > 0.89334133 && tirage <= 0.92358694)
score += 15;
else if (tirage > 0.92358694 && tirage <= 0.99477799)
score += 20;
else if (tirage > 0.99477799 && tirage <= 0.99532248855)
score += 25;
else if (tirage > 0.99532248855 && tirage <= 0.9960650373)
score += 40;
else if (tirage > 0.9960650373 && tirage <= 0.9961656501)
score += 60;
else if (tirage > 0.9961656501 && tirage <= 1)
score = 1000;
}
if (score == 1000)
std::cout << "Banqueroute !" << std::endl;
else
std::cout << score << " points !!" << std::endl;
//system ("PAUSE"); // Windows only
return(0);
}
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question