begin process at 2010 09 03 07:28:44
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > JEU DE PIERRE, FEUILLE, CISEAUX (JANKENPON)

JEU DE PIERRE, FEUILLE, CISEAUX (JANKENPON)


 Information sur la source

Note :
5 / 10 - par 1 personne
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Jeux Source .NET ( DotNet ) Classé sous :jankenpon, chifoumi, pierre, feuille, ciseaux Niveau :Initié Date de création :18/11/2005 Date de mise à jour :13/05/2006 16:08:42 Vu / téléchargé :24 578 / 326

Auteur : Gya

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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);
		}
	}
}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 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 du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) PIPHILOLOGIE
Source avec Zip Source avec une capture Source .NET (Dotnet) WIKIMONNAIE, UNE MONNAIE LIBRE
Source .NET (Dotnet) MÉTHODE D'ÉLIMINATION DE GAUSS-JORDAN, ET DU PIVOT DE GAUSS ...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) SERVERTIMER: AUTOMATISER LES TÂCHES DE REDÉMARRAGE D'UN SERV... par codergamer
Source avec Zip Source .NET (Dotnet) JEU DES ALLUMETTES par guyr07
Source avec Zip Source avec une capture Source .NET (Dotnet) SUDOKU SOLVER par swonder
Source avec Zip Source avec une capture Source .NET (Dotnet) PING BONG, MON PREMIER JEU DE PONG par kennyzkit
Source avec Zip Source avec une capture Source .NET (Dotnet) TETRIS WPF par max12

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) PRINTTEMPLATE : MODELE DE FEUILLE À IMPRIMÉ ACCEPTANT DES VA... par sibi12
Source avec Zip Source avec une capture Source .NET (Dotnet) FEUILLE DE TYPE CONTINU (LISTE COMME SUR ACCESS) par Yoyo2B

Commentaires et avis

Commentaire de abcdos le 09/01/2006 23:20:03

merci mais je trouve beaucoup de fautes dans votre jeu a trois : pierre et papier et ciseau
je vous en prie de bien vouloir les corriger
abcdoss@yahoo.fr

Commentaire de Bidou le 16/05/2006 11:53:22 administrateur CS

Salut,
J'ai essayé 2min ton jeu et j'ai aussi trouvé pas mal de bugs :

Le 1er, c'est qu'on ne peut pas changer de niveau (pourquoi? apparement, le code gère les niveaux, mais l'interface graphique ne laisse pas l'option).

Le 2ème, c'est que les algorithmes ne sont apparemment pas au point : En mode difficile, si je joue toujours ciseaux à la suite, je gagne tout le temps (sauf le premier coup (il joue toujours feuille)).

Y'en a surement encore d'autre, mais pour 2min d'essai, c'est déjà pas mal!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Imprimer des données sur une feuille mise en forme (automatiquement) [ par Sunnyprog ] Bonjour, Je souhaiterai savoir si il est possible de tirer des données contenues dans une base de données pour les placer automatiquement dans les cha Feuille de style et "include" [ par Kati83 ] Bonjour à tous,Je voudrais vous poser 2 questions (pas très compliquées).La 1è : Si j'ai une page aspx qui contient beaucoup d'html, et pour le reste imprimer 2 pages sur une seule [ par samscapa ] J'utilise un editeur de texte (TXTControl) style word dans ma form, je peux y trouver du texte, des images ou des tableaux.Je voudrais par exemple ecr Cherche acces aux controls ajoutés dans feuille Excel (TextBox) en C# [ par rustinefujitsu ] Bonjour,j'ai besoin de recuperer la valeur contenue dans un control "Zone de texte" (ex:TextBox1.value) inclut dans une feuille Excel ( et également d Probléme de menu avec Visual Studio.NET [ par silvia12 ] Bonjours, J'ai un petit probléme sur mon programme. J'ai fait une page principale en MdiParent avec un menu. Ensuite j'ai fais plusieur feuille enfant Obtenir la classe d'une feuille fille MdiChildren [ par MAQFAB ] Prenons une application simple avec une classe FeuilleMDI et deux classe FeuilleFille1 et FeuilleFille2.Je veux intercepter l'évènement Closing sur Fe Affichege d'une feuille MDI fille [ par jacma ] BonjourJ'ai un problème d'affichage d'une feuille MDI fille dans une feuille mère. J'appelles la feuille par un menu, la feuille s'ouvre mais ne s'aff chaine + help [ par emmanuel9 ] Bonjour, Le probl&#232;me est le suivant J'ai une chaine, par exemple "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n utlisation dans une ihm d'une classe? [ par Cookai ] Bonjour,voila j'ai un petit probl&#233;me.Je sais que quand on cr&#233;&#233;e une nouvelle feuille(WinForm) ,il se cr&#233;e automatiquement une clas c# Importation feuille Excel vers un DataTable [ par Caro2005 ] Bonjour,Je souhaite importer des donn&#233;es situ&#233;es dans une feuille Excel vers un DataTable. Pas de pb pour l'acc&#232;s &#224; ma feuille Exc


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales