|
begin process at 2008 09 06 08:52:48
Derniers logiciels
|
Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
JEU DE PIERRE, FEUILLE, CISEAUX (JANKENPON)
Information sur la source
Description
Qui n'as jamais joué au Pierre, Feuille, Ciseau? Inutile donc de rappeler en quoi ça consiste. Amusez-vous !
Source
- // Crée avec SharpDevelop (http://www.icsharpcode.net/OpenSource/SD/Default.aspx)
- // Mail du programmeur: yanngeffrotin@gmail.com
- // [je l'utilise donc je le soutiens avec www.paypal.fr]
-
-
- /* Algorithme du Jaken (version épurée)
-
- Algo Jaken
-
- Constantes
-
- Variables
- scor, scor2, choix : entiers
- texte, choix2 : caractères
-
- DEBUT
-
- Afficher "Jeu de Jaken"
- Afficher "Licence publique générale GNU"
-
- scor <- 0
- scor2 <- 0
- choix <- 0
- choix2 <- "pierre"
-
- Répéter
- Afficher " "
- Répéter
- Afficher "pierre, papier ou ciseau?"
- Saisir texte
- Jusqu'à texte="pierre" ou texte="papier" ou texte="ciseau"
-
- si texte = "pierre" alors
- choix <- 0
- finsi
- si texte = "papier" alors
- choix <- 1
- finsi
- si texte = "ciseau" alors
- choix <- 2
- finsi
-
- Afficher " "
- Afficher "joueur1: ", texte
-
- nb <- aléatoire(2)
-
- si nb = 0 alors
- choix2 <- "pierre"
- finsi
- si nb = 1 alors
- choix2 <- "papier"
- finsi
- si nb = 2 alors
- choix2 <- "ciseau"
- finsi
-
- Afficher "joueur2: ", choix2
- Afficher " "
-
- si choix=0 et nb=0 alors
- Afficher "Partie Nulle."
- sinon
- si choix=0 et nb=1 alors
- Afficher "Le papier recouvre la pierre."
- scor2 <- scor2 + 1
- sinon
- si choix=0 et nb=2 alors
- Afficher "La pierre casse les ciseaux."
- scor <- scor + 1
- finsi
- finsi
- finsi
-
- si choix=1 et nb=0 alors
- Afficher "Le papier enveloppe la pierre."
- scor <- scor + 1
- sinon
- si choix=1 et nb=1 alors
- Afficher "Partie Nulle."
- sinon
- si choix=1 et nb=2 alors
- Afficher "Le ciseau coupe le papier."
- scor2 <- scor2 + 1
- finsi
- finsi
- finsi
-
- si choix=2 et nb=0 alors
- Afficher "La pierre casse le ciseau."
- scor2 <- scor2 + 1
- sinon
- si choix=2 et nb=1 alors
- Afficher "Le ciseau coupe le papier."
- scor <- scor + 1
- sinon
- si choix=2 et nb=2 alors
- Afficher "Partie Nulle."
- finsi
- finsi
- finsi
-
- Afficher " "
- Afficher "Les scores sont :"
- Afficher "Joueur1 : ", scor
- Afficher "Joueur2 : ", scor2
- Afficher " "
-
- Répéter
- Afficher "Encore une partie?(O/N)"
- Saisir texte
- texte <- agrandir(texte)
- Jusqu'à texte="N" ou texte="O"
-
- jusqu'à texte="N"
-
- FIN
-
- */
-
- using System;
-
- namespace Jaken
- {
- class MainClass
- {
- public static void Main(string[] args)
- {
- Console.WriteLine(" "); //Annonce du début
- Console.WriteLine("Jeu de Jaken"); // rock scissor paper
- Console.WriteLine("Licence publique générale GNU"); // http://www.gnu.org/licenses/gpl.html
-
- //Constantes et Variables //variable locale non assignée
-
- string texte1;
- string texte2="rien";
-
- bool exit = false;
-
- int choix1 = 0; // choix du joueur 1 ( 0, 1, 2 )
- int choix2 = 0; // choix du joueur 2 ( 0, 1, 2 )
-
-
- int nbtour = 1; // Le premier tour commence
- int Maxtab = 531; // Taille maximal du tableau
-
- int[] Tchoix = new int[Maxtab];
- int[] Tetat = new int[Maxtab]; //perdu(0), nul(1), gagne(2)
-
-
- //DEBUT
- do
- {
- int scor1 = 0; // Le score du joueur 1
- int scor2 = 0; // Le score du joueur 2
- Console.WriteLine(" ");
- Console.WriteLine("----------");
- Console.WriteLine("(F) - Mode facile");
- Console.WriteLine("(M) - Mode moyen");
- Console.WriteLine("(D) - Mode difficile");
- Console.WriteLine("(S) - Sortir");
- Console.WriteLine("----------");
- texte1 = Console.ReadLine();
- texte1 = texte1.ToUpper();
- Console.WriteLine("----------");
- Console.WriteLine(" ");
- switch (texte1)
- {
- case "S": // Sortie
- break;
-
- case "F": // Humain contre Machine Random
- exit = false;
- nbtour=1;
- do //Début de la boucle
- { Console.WriteLine(" ");
- Console.WriteLine("--- mode facile, tour n°" + nbtour + " ---");
- choix_humain(ref texte2, ref exit);
- if (texte1 != "quitter")
- { convert_to_nb(texte2, ref choix1);
- choix_random(ref choix2);
- convert_to_string(choix2);
- gagnants_et_résultats(choix1, choix2, ref scor1, ref scor2, ref Tetat, nbtour);
- nbtour = nbtour + 1;
- }
- } while (exit != true); //Fin de la boucle
- break;
-
- case "M": // Humain contre Méthode Minasi
- exit = false;
- nbtour=1;
- do //Début de la boucle
- { Console.WriteLine(" ");
- Console.WriteLine("--- mode moyen, tour n°" + nbtour + " ----");
- choix_humain(ref texte2, ref exit);
- if (texte2 != "quitter")
- { convert_to_nb(texte2, ref choix1);
- algorithme_de_Minasi(ref choix2, nbtour, choix1, Tchoix);
- gagnants_et_résultats(choix1, choix2, ref scor1, ref scor2, ref Tetat, nbtour);
- nbtour = nbtour + 1;
- }
- } while (exit != true); //Fin de la boucle
- break;
-
- case "D": // Humain contre Algo de Shannon
- int[] Tstat = new int[29]; //27 + 1 vide + 1 nul
- exit = false;
- nbtour=1;
- do //Début de la boucle
- { Console.WriteLine(" ");
- Console.WriteLine("--- mode difficile, tour n°" + nbtour + " ---");
- choix_humain(ref texte2, ref exit);
- if (texte2 != "quitter")
- { convert_to_nb(texte2, ref choix1);
- algorithme_de_Shannon(ref choix2, nbtour, choix1, Tstat, Tchoix, Tetat);
-
- gagnants_et_résultats(choix1, choix2, ref scor1, ref scor2, ref Tetat, nbtour);
- nbtour = nbtour + 1;
- }
- } while (exit != true); //Fin de la boucle
- break;
- }
- } while (texte1 != "S"); //texte1 != "0" && texte1 != "à"
- //FIN
- }
-
- static void choix_humain(ref string texte2, ref bool exit)
- { Console.WriteLine(" ");
- do
- {
- Console.WriteLine("pierre, papier, ciseau ou quitter?");
- texte2 = Console.ReadLine();
- texte2 = texte2.ToLower();
- } while (texte2 != "pierre" && texte2 != "papier" && texte2 != "ciseau" && texte2 != "quitter");
-
- if (texte2 == "quitter" )
- { exit = true; }
- }
-
- static void convert_to_nb(string texte, ref int choix1)
- { if (texte == "pierre" )
- { choix1 = 0; }
-
- if (texte == "papier")
- { choix1 = 1; }
-
- if (texte == "ciseau")
- { choix1 = 2; }
-
- Console.WriteLine(" ");
- Console.WriteLine("joueur1: " + texte);
- }
-
- static void choix_random(ref int choix2)
- { Random r = new Random(); //Aléatoire : jeu de hasard pur
- choix2 = r.Next(2);
- }
-
- static void convert_to_string(int choix2)
- { string texte2 = "pierre"; // use of unassigned local variable
- if (choix2 == 0)
- { texte2 = "pierre"; }
- if (choix2 == 1)
- { texte2 = "papier"; }
- if (choix2 == 2)
- { texte2 = "ciseau"; }
- Console.WriteLine("joueur2: " + texte2);
- }
-
-
- static void algorithme_de_Minasi(ref int choix2, int nbtour, int choix1, int[] Tchoix)
- { //Algorithme de Minasi : Stocke les coups joués dans un tableau, recherche le meilleur coups
-
- int cpt;
- int Maxproba = 0;
- int[] Tstat = new int[3];
- Tstat[0] = Tstat[1] = Tstat[2] = 0;
- int nboccurence = 0;
-
- Tchoix[nbtour] = choix1;
-
- if (nbtour > 2)
- {
- for (cpt = 1; cpt <= nbtour - 1; cpt++)
- {
- if (Tchoix[cpt] == Tchoix[nbtour - 1])
- {
- nboccurence = nboccurence + 1;
-
- if (Tchoix[cpt + 1] == 0) // pierre
- { Tstat[0] = Tstat[0] + 1;
- }
-
- if (Tchoix[cpt + 1] == 1) //papier
- { Tstat[1] = Tstat[1] + 1;
- }
-
- if (Tchoix[cpt + 1] == 2) //ciseau
- { Tstat[2] = Tstat[2] + 1;
- }
- }
- }
- }
- else
- { choix_random(ref choix2);
- }
-
- if (Tstat[0] > Tstat[1]) // Recherche du maximum
- {
- if (Tstat[0] > Tstat[2])
- { Maxproba = 0; }
- }
- else
- {
- if (Tstat[1] > Tstat[2])
- { Maxproba = 1; }
- else
- { Maxproba = 2; }
- }
-
- Maxproba = Maxproba + 1; // choix Minasi = choix adversaire + 1
- if (nbtour > 2)
- {choix2 = Maxproba ;}
-
- // Choix du joueur 2
- if (choix2 == 3)
- {choix2 = 0;} // Le 3 redevient 0
-
- //Affichage du choix du joueur 2
- convert_to_string(choix2);
- }
-
- static void algorithme_de_Shannon(ref int choix2, int nbtour, int choix, int[] Tstat, int[] Tchoix, int[] Tetat)
- { //Algorithme de Shannon : Affecte dans un arbre des probabilités, l'apparition des coups et l'état des parties, séléction du plus probable
-
- int i = 0;
- int Maxstat = 0;
- int Maxstatcontenu = 0;
- int j, k, l ;
- Tchoix[nbtour] = choix;
-
- if (nbtour > 2)
- { // 3*3*3=27 possibilités par tour
- for (j=0;j<=2;j++)
- {
- for (k=0;k<=2;k++)
- {
- for (l=0;l<=2;l++)
- {
- i = i + 1 ;
- if (Tetat[nbtour - 2] == j && Tchoix[nbtour - 1] == k && Tetat[nbtour - 1] == l)
- {
- Tstat[i] = Tstat[i] + 1;
- }
- Console.WriteLine("Stat n°"+i+" : "+ Tstat[i]+ " (tour "+(nbtour-2)+"="+j+", choix tour-1="+k+", etat précédent="+l+")"); //affiche l'arbre
- }
- }
- }
-
- for (i = 1; i <= 27; i++) // Recherche du maximum
- { //Console.WriteLine("Maxstat["+ (i-1) +"] : " + Tstat[i]);
- //Console.WriteLine("Maxstatcontenu : " + Maxstatcontenu);
- if (Tstat[i] > Maxstatcontenu)
- { Maxstat = i;
- Maxstatcontenu = Tstat[i];
-
- }
- }
-
- // choix Shannon = choix adversaire le plus probable + 1
- if (Maxstat == 1 || Maxstat == 2 || Maxstat == 3 || Maxstat == 10 || Maxstat == 11 || Maxstat == 12 || Maxstat == 19 || Maxstat == 20 || Maxstat == 21)
- {choix2 = 1;}
- if (Maxstat == 4 || Maxstat == 5 || Maxstat == 6 || Maxstat == 13 || Maxstat == 14 || Maxstat == 15 || Maxstat == 22 || Maxstat == 23 || Maxstat == 24)
- {choix2 = 2;}
- if (Maxstat == 7 || Maxstat == 8 || Maxstat == 9 || Maxstat == 16 || Maxstat == 17 || Maxstat == 18 || Maxstat == 25 || Maxstat == 26 || Maxstat == 27)
- {choix2 = 0;}
-
- convert_to_string(choix2);
- }
- else
- {
- choix_random(ref choix2);
- convert_to_string(choix2);
- }
- }
-
- static void gagnants_et_résultats(int choix1, int choix2, ref int scor1, ref int scor2, ref int[] Tetat, int nbtour)
- { // Détermination des gagnants et affichage des résultats
-
- Console.WriteLine(" ");
- if (choix1 == 0 && choix2 == 0)
- {
- Console.WriteLine("Partie Nulle.");
- Tetat[nbtour] = 1; //"nul"
- }
- else
- {
- if (choix1 == 0 && choix2 == 1)
- {
- Console.WriteLine("Le papier recouvre la pierre.");
- scor2 = scor2 + 1;
- Tetat[nbtour] = 0; //"perdu"
- }
- else
- {
- if (choix1 == 0 && choix2 == 2)
- {
- Console.WriteLine("La pierre casse les ciseaux.");
- scor1 = scor1 + 1;
- Tetat[nbtour] = 2; //"gagne"
- }
- }
- }
- if (choix1 == 1 && choix2 == 0)
- {
- Console.WriteLine("Le papier enveloppe la pierre.");
- scor1 = scor1 + 1;
- Tetat[nbtour] = 2;
- }
- else
- {
- if (choix1 == 1 && choix2 == 1)
- {
- Console.WriteLine("Partie Nulle.");
- Tetat[nbtour] = 1;
- }
- else
- {
- if (choix1 == 1 && choix2 == 2)
- {
- Console.WriteLine("Le ciseau coupe le papier.");
- scor2 = scor2 + 1;
- Tetat[nbtour] = 0;
- }
- }
- }
-
- if (choix1 == 2 && choix2 == 0)
- {
- Console.WriteLine("La pierre casse le ciseau.");
- scor2 = scor2 + 1;
- Tetat[nbtour] = 0;
- }
- else
- {
- if (choix1 == 2 && choix2 == 1)
- {
- Console.WriteLine("Le ciseau coupe le papier.");
- scor1 = scor1 + 1;
- Tetat[nbtour] = 2;
- }
- else
- {
- if (choix1 == 2 && choix2 == 2)
- {
- Console.WriteLine("Partie Nulle.");
- Tetat[nbtour] = 1;
- }
- }
- }
- //Affichage des résultats
- Console.WriteLine(" ");
- Console.WriteLine("Les scores sont :");
- Console.WriteLine("Joueur1 : " + scor1);
- Console.WriteLine("Joueur2 : " + scor2);
- }
- }
- }
// Crée avec SharpDevelop (http://www.icsharpcode.net/OpenSource/SD/Default.aspx)
// Mail du programmeur: yanngeffrotin@gmail.com
// [je l'utilise donc je le soutiens avec www.paypal.fr]
/* Algorithme du Jaken (version épurée)
Algo Jaken
Constantes
Variables
scor, scor2, choix : entiers
texte, choix2 : caractères
DEBUT
Afficher "Jeu de Jaken"
Afficher "Licence publique générale GNU"
scor <- 0
scor2 <- 0
choix <- 0
choix2 <- "pierre"
Répéter
Afficher " "
Répéter
Afficher "pierre, papier ou ciseau?"
Saisir texte
Jusqu'à texte="pierre" ou texte="papier" ou texte="ciseau"
si texte = "pierre" alors
choix <- 0
finsi
si texte = "papier" alors
choix <- 1
finsi
si texte = "ciseau" alors
choix <- 2
finsi
Afficher " "
Afficher "joueur1: ", texte
nb <- aléatoire(2)
si nb = 0 alors
choix2 <- "pierre"
finsi
si nb = 1 alors
choix2 <- "papier"
finsi
si nb = 2 alors
choix2 <- "ciseau"
finsi
Afficher "joueur2: ", choix2
Afficher " "
si choix=0 et nb=0 alors
Afficher "Partie Nulle."
sinon
si choix=0 et nb=1 alors
Afficher "Le papier recouvre la pierre."
scor2 <- scor2 + 1
sinon
si choix=0 et nb=2 alors
Afficher "La pierre casse les ciseaux."
scor <- scor + 1
finsi
finsi
finsi
si choix=1 et nb=0 alors
Afficher "Le papier enveloppe la pierre."
scor <- scor + 1
sinon
si choix=1 et nb=1 alors
Afficher "Partie Nulle."
sinon
si choix=1 et nb=2 alors
Afficher "Le ciseau coupe le papier."
scor2 <- scor2 + 1
finsi
finsi
finsi
si choix=2 et nb=0 alors
Afficher "La pierre casse le ciseau."
scor2 <- scor2 + 1
sinon
si choix=2 et nb=1 alors
Afficher "Le ciseau coupe le papier."
scor <- scor + 1
sinon
si choix=2 et nb=2 alors
Afficher "Partie Nulle."
finsi
finsi
finsi
Afficher " "
Afficher "Les scores sont :"
Afficher "Joueur1 : ", scor
Afficher "Joueur2 : ", scor2
Afficher " "
Répéter
Afficher "Encore une partie?(O/N)"
Saisir texte
texte <- agrandir(texte)
Jusqu'à texte="N" ou texte="O"
jusqu'à texte="N"
FIN
*/
using System;
namespace Jaken
{
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine(" "); //Annonce du début
Console.WriteLine("Jeu de Jaken"); // rock scissor paper
Console.WriteLine("Licence publique générale GNU"); // http://www.gnu.org/licenses/gpl.html
//Constantes et Variables //variable locale non assignée
string texte1;
string texte2="rien";
bool exit = false;
int choix1 = 0; // choix du joueur 1 ( 0, 1, 2 )
int choix2 = 0; // choix du joueur 2 ( 0, 1, 2 )
int nbtour = 1; // Le premier tour commence
int Maxtab = 531; // Taille maximal du tableau
int[] Tchoix = new int[Maxtab];
int[] Tetat = new int[Maxtab]; //perdu(0), nul(1), gagne(2)
//DEBUT
do
{
int scor1 = 0; // Le score du joueur 1
int scor2 = 0; // Le score du joueur 2
Console.WriteLine(" ");
Console.WriteLine("----------");
Console.WriteLine("(F) - Mode facile");
Console.WriteLine("(M) - Mode moyen");
Console.WriteLine("(D) - Mode difficile");
Console.WriteLine("(S) - Sortir");
Console.WriteLine("----------");
texte1 = Console.ReadLine();
texte1 = texte1.ToUpper();
Console.WriteLine("----------");
Console.WriteLine(" ");
switch (texte1)
{
case "S": // Sortie
break;
case "F": // Humain contre Machine Random
exit = false;
nbtour=1;
do //Début de la boucle
{ Console.WriteLine(" ");
Console.WriteLine("--- mode facile, tour n°" + nbtour + " ---");
choix_humain(ref texte2, ref exit);
if (texte1 != "quitter")
{ convert_to_nb(texte2, ref choix1);
choix_random(ref choix2);
convert_to_string(choix2);
gagnants_et_résultats(choix1, choix2, ref scor1, ref scor2, ref Tetat, nbtour);
nbtour = nbtour + 1;
}
} while (exit != true); //Fin de la boucle
break;
case "M": // Humain contre Méthode Minasi
exit = false;
nbtour=1;
do //Début de la boucle
{ Console.WriteLine(" ");
Console.WriteLine("--- mode moyen, tour n°" + nbtour + " ----");
choix_humain(ref texte2, ref exit);
if (texte2 != "quitter")
{ convert_to_nb(texte2, ref choix1);
algorithme_de_Minasi(ref choix2, nbtour, choix1, Tchoix);
gagnants_et_résultats(choix1, choix2, ref scor1, ref scor2, ref Tetat, nbtour);
nbtour = nbtour + 1;
}
} while (exit != true); //Fin de la boucle
break;
case "D": // Humain contre Algo de Shannon
int[] Tstat = new int[29]; //27 + 1 vide + 1 nul
exit = false;
nbtour=1;
do //Début de la boucle
{ Console.WriteLine(" ");
Console.WriteLine("--- mode difficile, tour n°" + nbtour + " ---");
choix_humain(ref texte2, ref exit);
if (texte2 != "quitter")
{ convert_to_nb(texte2, ref choix1);
algorithme_de_Shannon(ref choix2, nbtour, choix1, Tstat, Tchoix, Tetat);
gagnants_et_résultats(choix1, choix2, ref scor1, ref scor2, ref Tetat, nbtour);
nbtour = nbtour + 1;
}
} while (exit != true); //Fin de la boucle
break;
}
} while (texte1 != "S"); //texte1 != "0" && texte1 != "à"
//FIN
}
static void choix_humain(ref string texte2, ref bool exit)
{ Console.WriteLine(" ");
do
{
Console.WriteLine("pierre, papier, ciseau ou quitter?");
texte2 = Console.ReadLine();
texte2 = texte2.ToLower();
} while (texte2 != "pierre" && texte2 != "papier" && texte2 != "ciseau" && texte2 != "quitter");
if (texte2 == "quitter" )
{ exit = true; }
}
static void convert_to_nb(string texte, ref int choix1)
{ if (texte == "pierre" )
{ choix1 = 0; }
if (texte == "papier")
{ choix1 = 1; }
if (texte == "ciseau")
{ choix1 = 2; }
Console.WriteLine(" ");
Console.WriteLine("joueur1: " + texte);
}
static void choix_random(ref int choix2)
{ Random r = new Random(); //Aléatoire : jeu de hasard pur
choix2 = r.Next(2);
}
static void convert_to_string(int choix2)
{ string texte2 = "pierre"; // use of unassigned local variable
if (choix2 == 0)
{ texte2 = "pierre"; }
if (choix2 == 1)
{ texte2 = "papier"; }
if (choix2 == 2)
{ texte2 = "ciseau"; }
Console.WriteLine("joueur2: " + texte2);
}
static void algorithme_de_Minasi(ref int choix2, int nbtour, int choix1, int[] Tchoix)
{ //Algorithme de Minasi : Stocke les coups joués dans un tableau, recherche le meilleur coups
int cpt;
int Maxproba = 0;
int[] Tstat = new int[3];
Tstat[0] = Tstat[1] = Tstat[2] = 0;
int nboccurence = 0;
Tchoix[nbtour] = choix1;
if (nbtour > 2)
{
for (cpt = 1; cpt <= nbtour - 1; cpt++)
{
if (Tchoix[cpt] == Tchoix[nbtour - 1])
{
nboccurence = nboccurence + 1;
if (Tchoix[cpt + 1] == 0) // pierre
{ Tstat[0] = Tstat[0] + 1;
}
if (Tchoix[cpt + 1] == 1) //papier
{ Tstat[1] = Tstat[1] + 1;
}
if (Tchoix[cpt + 1] == 2) //ciseau
{ Tstat[2] = Tstat[2] + 1;
}
}
}
}
else
{ choix_random(ref choix2);
}
if (Tstat[0] > Tstat[1]) // Recherche du maximum
{
if (Tstat[0] > Tstat[2])
{ Maxproba = 0; }
}
else
{
if (Tstat[1] > Tstat[2])
{ Maxproba = 1; }
else
{ Maxproba = 2; }
}
Maxproba = Maxproba + 1; // choix Minasi = choix adversaire + 1
if (nbtour > 2)
{choix2 = Maxproba ;}
// Choix du joueur 2
if (choix2 == 3)
{choix2 = 0;} // Le 3 redevient 0
//Affichage du choix du joueur 2
convert_to_string(choix2);
}
static void algorithme_de_Shannon(ref int choix2, int nbtour, int choix, int[] Tstat, int[] Tchoix, int[] Tetat)
{ //Algorithme de Shannon : Affecte dans un arbre des probabilités, l'apparition des coups et l'état des parties, séléction du plus probable
int i = 0;
int Maxstat = 0;
int Maxstatcontenu = 0;
int j, k, l ;
Tchoix[nbtour] = choix;
if (nbtour > 2)
{ // 3*3*3=27 possibilités par tour
for (j=0;j<=2;j++)
{
for (k=0;k<=2;k++)
{
for (l=0;l<=2;l++)
{
i = i + 1 ;
if (Tetat[nbtour - 2] == j && Tchoix[nbtour - 1] == k && Tetat[nbtour - 1] == l)
{
Tstat[i] = Tstat[i] + 1;
}
Console.WriteLine("Stat n°"+i+" : "+ Tstat[i]+ " (tour "+(nbtour-2)+"="+j+", choix tour-1="+k+", etat précédent="+l+")"); //affiche l'arbre
}
}
}
for (i = 1; i <= 27; i++) // Recherche du maximum
{ //Console.WriteLine("Maxstat["+ (i-1) +"] : " + Tstat[i]);
//Console.WriteLine("Maxstatcontenu : " + Maxstatcontenu);
if (Tstat[i] > Maxstatcontenu)
{ Maxstat = i;
Maxstatcontenu = Tstat[i];
}
}
// choix Shannon = choix adversaire le plus probable + 1
if (Maxstat == 1 || Maxstat == 2 || Maxstat == 3 || Maxstat == 10 || Maxstat == 11 || Maxstat == 12 || Maxstat == 19 || Maxstat == 20 || Maxstat == 21)
{choix2 = 1;}
if (Maxstat == 4 || Maxstat == 5 || Maxstat == 6 || Maxstat == 13 || Maxstat == 14 || Maxstat == 15 || Maxstat == 22 || Maxstat == 23 || Maxstat == 24)
{choix2 = 2;}
if (Maxstat == 7 || Maxstat == 8 || Maxstat == 9 || Maxstat == 16 || Maxstat == 17 || Maxstat == 18 || Maxstat == 25 || Maxstat == 26 || Maxstat == 27)
{choix2 = 0;}
convert_to_string(choix2);
}
else
{
choix_random(ref choix2);
convert_to_string(choix2);
}
}
static void gagnants_et_résultats(int choix1, int choix2, ref int scor1, ref int scor2, ref int[] Tetat, int nbtour)
{ // Détermination des gagnants et affichage des résultats
Console.WriteLine(" ");
if (choix1 == 0 && choix2 == 0)
{
Console.WriteLine("Partie Nulle.");
Tetat[nbtour] = 1; //"nul"
}
else
{
if (choix1 == 0 && choix2 == 1)
{
Console.WriteLine("Le papier recouvre la pierre.");
scor2 = scor2 + 1;
Tetat[nbtour] = 0; //"perdu"
}
else
{
if (choix1 == 0 && choix2 == 2)
{
Console.WriteLine("La pierre casse les ciseaux.");
scor1 = scor1 + 1;
Tetat[nbtour] = 2; //"gagne"
}
}
}
if (choix1 == 1 && choix2 == 0)
{
Console.WriteLine("Le papier enveloppe la pierre.");
scor1 = scor1 + 1;
Tetat[nbtour] = 2;
}
else
{
if (choix1 == 1 && choix2 == 1)
{
Console.WriteLine("Partie Nulle.");
Tetat[nbtour] = 1;
}
else
{
if (choix1 == 1 && choix2 == 2)
{
Console.WriteLine("Le ciseau coupe le papier.");
scor2 = scor2 + 1;
Tetat[nbtour] = 0;
}
}
}
if (choix1 == 2 && choix2 == 0)
{
Console.WriteLine("La pierre casse le ciseau.");
scor2 = scor2 + 1;
Tetat[nbtour] = 0;
}
else
{
if (choix1 == 2 && choix2 == 1)
{
Console.WriteLine("Le ciseau coupe le papier.");
scor1 = scor1 + 1;
Tetat[nbtour] = 2;
}
else
{
if (choix1 == 2 && choix2 == 2)
{
Console.WriteLine("Partie Nulle.");
Tetat[nbtour] = 1;
}
}
}
//Affichage des résultats
Console.WriteLine(" ");
Console.WriteLine("Les scores sont :");
Console.WriteLine("Joueur1 : " + scor1);
Console.WriteLine("Joueur2 : " + scor2);
}
}
}
Historique
- 31 décembre 2005 12:04:19 :
- J'ai ajouté les contrôles de saisies pour l'utilisateur.
J'ai simplifié les structures conditionnelles.
- 20 janvier 2006 18:07:49 :
- Ajout de l'algorithme du jeu de pierre, papier, ciseau (Jaken).
- 26 janvier 2006 15:31:52 :
- Ajout du zip et contrôle d'erreurs
- 26 janvier 2006 15:35:28 :
- Ajout du zip et contrôle d'erreurs
- 14 février 2006 20:11:34 :
- Ajout de l'algorithme de Minasi qui fait un historique des coups joués afin de porter le meilleur coup.
- 17 février 2006 08:43:26 :
- Correction d'un bug et optimisation de l'algorithme de Minasi
- 01 mars 2006 19:34:11 :
- Ajout de l'algorithme de Shannon : Affecte dans un arbre des probabilités l'apparition des coups et l'état des parties avec séléction du plus probable.
- 12 mars 2006 14:09:40 :
- Correction de bugs dans l'arborescence de Shannon
- 13 mai 2006 16:08:42 :
- Ajout d'une interface graphique pour Windows
Sources de la même categorie
Commentaires
Discussions en rapport avec ce code source
|
|
|