Créer un jeu de pierre-papier-ciseaux en C#

Saad Aslam 12 octobre 2023
Créer un jeu de pierre-papier-ciseaux en C#

Cet article parlera du processus de développement d’un jeu de Pierre, Papier et Ciseaux avec C#. Nous utiliserons Visual Studio pour créer une application console, un nom et un projet.

Créer un jeu de ciseaux à papier pierre en C#

Pour créer ce jeu, nous suivrons ces étapes :

  • Prenez l’entrée de l’utilisateur.
  • Générer aléatoirement la sortie.
  • Comparez tous les choix possibles.
  • Déclarez le gagnant.
  • Redémarrez le jeu.

Le fonctionnement de ce programme comprendra une variété de fonctions et de méthodes. Une fois l’entrée de l’utilisateur reçue, le système la comparera à l’entrée produite par le système.

L’entrée produite par ce système sera aléatoire ; ainsi, il peut fournir l’une des trois options : pierre, papier ou ciseaux. Il effectuera un rendu conditionnel une fois qu’il aura reçu les deux entrées.

Le rendu conditionnel servira de base pour déterminer si un gagnant sera annoncé ou s’il n’y aura pas de gagnant, et un tirage au sort aura lieu.

using System;

namespace Hello_World {
  class Program {
    static void Main(string[] args) {}
  }
}

Ces lignes seront au début du code et resteront au début du déroulement normal du programme.

string ui, si;
int r;
Console.Write("What do you choose?\n\n Rock/ Paper/ Scissors? ");
ui = Console.ReadLine();
Random rnd = new Random();
r = rnd.Next(1, 4);

si et ui sont les deux variables pour l’entrée utilisateur et l’entrée système sous forme de chaîne, l’utilisateur doit donc saisir l’orthographe complète de son choix. La variable r est la variable de type entier faite pour le nombre aléatoire que l’ordinateur va générer pour le choix.

L’instruction Console.Write("What do you choose?\n\n Rock/ Paper/ Scissors? ") est écrite à l’écran et demande à l’utilisateur d’entrer son choix. L’instruction ui = Console.ReadLine() prend l’entrée de l’utilisateur et la stocke dans la variable ui.

L’instruction Random rnd = new Random() crée la variable rnd pour le nombre aléatoire à utiliser par la suite pour générer les nombres aléatoires. L’instruction r = rnd.Next(1, 4) génère le nombre aléatoire dans la plage de 1 à 3 et le stocke dans la variable r.

switch (r) {
  case 1:
    si = "Rock";
    Console.WriteLine("Computer chose Rock");
    if (ui == "Rock" || ui == "rock") {
      Console.WriteLine("\nIt is a draw");
    } else if (ui == "Paper" || ui == "paper") {
      Console.WriteLine("\nYou Win!");
    } else {
      Console.WriteLine("\nYou Lose!");
    }
    break;
}

Dans switch(), nous considérons les options si la variable r contient un nombre quelconque de 1 à 4. Dans le cas 1, nous vérifions si le nombre aléatoire est un, et si oui, nous définissons l’entrée système si variable à rock.

Après cela, nous écrivons sur la console en utilisant l’instruction Console.WriteLine("Computer chose Rock") qui imprime sur l’écran que l’ordinateur a choisi rock. Ensuite, nous utilisons des conditions si pour voir ce que l’utilisateur a entré pour son choix.

L’instruction if (ui == "Rock"||ui == "rock") vérifie si l’utilisateur a également entré rock, alors c’est un match nul et il sera imprimé à l’écran par Console.WriteLine("\nIt is a draw"). Si ce n’est pas le cas, alors nous vérifierons par else if(ui == "Paper"||ui == "paper") pour voir si ce n’est pas du rock, alors est-ce du papier que l’utilisateur a entré ?

Si oui, alors l’utilisateur a gagné, ce qui sera imprimé par Console.WriteLine("\nYou Win !");.

Si l’utilisateur n’a pas entré les deux options que nous avons cochées, il est évident que l’utilisateur a entré des ciseaux, donc l’utilisateur a perdu. Donc, nous avons utilisé else à la fin, qui imprimera You Lose!.

Enfin, l’instruction break est utilisée pour quitter le switch().

case 2:
  si = "Paper";
  Console.WriteLine("Computer chose Paper");
  if (ui == "Rock" || ui == "rock") {
    Console.WriteLine("\nYou Lose!");
  } else if (ui == "Paper" || ui == "paper") {
    Console.WriteLine("It is a draw");
  } else {
    Console.WriteLine("You win");
  }
  break;

Dans le cas 2, nous vérifions que si le nombre aléatoire est 2, alors nous définissons la variable d’entrée système si sur papier. Après cela, nous écrivons sur la console en utilisant Console.WriteLine("Computer chose Paper"), qui imprime à l’écran que l’ordinateur a choisi le papier.

Ensuite, nous avons utilisé des conditions if pour voir ce que l’utilisateur a entré pour son choix. L’instruction if (ui == "Rock"||ui == "rock") vérifie si l’utilisateur a également entré rock, alors l’utilisateur perdra, et il sera imprimé à l’écran par Console.WriteLine("\nYou Lose !");.

Si non, alors nous vérifions par else if(ui == "Paper"||ui == "paper") pour voir si ce n’est pas du rock, alors est-ce du papier que l’utilisateur a entré ? Si yes, alors c’est un match nul. Et il sera imprimé par Console.WriteLine("It is a draw");.

Si l’utilisateur n’a pas entré les deux options que nous avions cochées, il est évident que l’utilisateur a entré des ciseaux, donc l’utilisateur gagne la partie. Donc, nous avons utilisé else à la fin, qui sera imprimé par Console.WriteLine("You win");.

L’instruction break est utilisée pour sortir de switch().

case 3:
  si = "Scissors";
  Console.WriteLine("Computer chose Scissors");
  if (ui == "Rock" || ui == "rock") {
    Console.WriteLine("\nYou Win!");
  } else if (ui == "Paper" || ui == "paper") {
    Console.WriteLine("You Lose");
  } else {
    Console.WriteLine("It is a draw");
  }
  break;

Dans le cas 3, nous vérifions que si le nombre aléatoire est 3, alors nous définissons la variable d’entrée système si sur des ciseaux. Après cela, nous écrivons sur la console par la ligne Console.WriteLine("Computer chose Scissors") qui imprime à l’écran que l’ordinateur a choisi les ciseaux.

Ensuite, nous utilisons des conditions if pour voir ce que l’utilisateur a entré pour son choix. La ligne if (ui == "Rock"||ui == "rock") vérifie si l’utilisateur a également entré rock, alors l’utilisateur gagnera, et il sera imprimé à l’écran par la Console.WriteLine("\nYou Win !"); ligne.

Si ce n’est pas le cas, nous vérifions par la ligne else if(ui == "Paper"||ui == "paper") pour voir si ce n’est pas du rock, alors est-ce du papier que l’utilisateur a entré ? Si oui, alors l’utilisateur perdra la partie. Et il sera imprimé par Console.WriteLine("You Lose"); ligne.

Si l’utilisateur n’a pas entré les deux options que nous avions cochées, il est évident que l’utilisateur a entré des ciseaux, donc le jeu est un match nul. Nous avons donc utilisé else à la fin, qui sera imprimé par Console.WriteLine("It is a draw");.

default:
  Console.WriteLine("invalid entry!");
  break;

A la fin de la portée switch, nous avons également utilisé default:, une sorte de cas par défaut qui s’exécute lorsqu’aucun cas n’est trouvé. Il s’agit d’une précaution de sécurité si la variable r a une autre valeur que 1 à 3.

Ensuite, nous imprimerons à l’écran entrée invalide! en utilisant Console.WriteLine("invalid entry!");.

Si vous le souhaitez, vous ne pouvez pas créer et utiliser la variable si dans votre code car les décisions sont prises avec la variable de nombre aléatoire r.

Si vous souhaitez que l’utilisateur tape oui ou non pour rejouer le jeu, vous devez utiliser le code comme suit.

using System;
namespace Hello_World {
  class Program {
    static void Main(string[] args) {
      bool play = true;
      string q;
      while (play) {
        // all the above code of the game goes here
        Console.WriteLine("\nDo you want to play again?  ");
        q = Console.ReadLine();
        if (q == "yes" || q == "Yes") {
          continue;
        } else if (q == "no" || q == "No") {
          play = false;
        } else {
          Console.WriteLine("invalid entry!\nQuiting...!");
          play = false;
        }
      }
    }
  }
}

Nous avons créé une variable play de type bool, qui est utilisée dans la boucle while. Initialement, elle est définie sur true, donc la boucle s’exécutera indéfiniment jusqu’à ce que la variable play soit définie sur false.

Vous pouvez placer tout votre code de jeu dans la boucle while, et après cela, vous pouvez demander à l’utilisateur de rejouer ou non en utilisant Console.WriteLine("\nDo you want to play again ? ");. Tout ce que l’utilisateur entrera sera stocké dans la variable q en utilisant la ligne q= Console.ReadLine();.

Après cela, nous utiliserons à nouveau les conditions if pour voir ce qui a été saisi par l’utilisateur.

L’instruction if(q=="yes"||q=="Yes") vérifie l’entrée de l’utilisateur, si elle est équivalente à oui ou non. Si l’utilisateur a entré oui, alors l’instruction continue est utilisée pour ignorer le reste des instructions de boucle et recommencer la boucle depuis le début.

Si l’utilisateur n’a pas saisi yes mais a saisi no à la place, alors la condition else if(q=="no"||q=="No") devient vraie, et la variable jouer est mis à false par la ligne play=false;, la boucle s’arrêtera et le programme se terminera.

Et si l’utilisateur a saisi autre chose que yes ou no, alors invalid entry! sera imprimé à l’écran par Console.WriteLine("invalid entry!\nQuiting...!");. Et play sera à nouveau faux et le programme se terminera.

Code source complet :

using System;

namespace Hello_World {
  class Program {
    static void Main(string[] args) {
      bool play = true;
      string q;
      while (play) {
        string ui, si;
        int r;
        Console.Write("What do you choose?\n\n Rock/ Paper/ Scissors? ");
        ui = Console.ReadLine();
        Random rnd = new Random();
        r = rnd.Next(1, 4);
        switch (r) {
          case 1:
            si = "Rock";
            Console.WriteLine("Computer chose Rock");
            if (ui == "Rock" || ui == "rock") {
              Console.WriteLine("\nIt is a draw");
            } else if (ui == "Paper" || ui == "paper") {
              Console.WriteLine("\nYou Win!");
            } else {
              Console.WriteLine("\nYou Lose!");
            }
            break;
          case 2:
            si = "Paper";
            Console.WriteLine("Computer chose Paper");
            if (ui == "Rock" || ui == "rock") {
              Console.WriteLine("\nYou Lose!");
            } else if (ui == "Paper" || ui == "paper") {
              Console.WriteLine("It is a draw");
            } else {
              Console.WriteLine("You win");
            }
            break;
          case 3:
            si = "Scissors";
            Console.WriteLine("Computer chose Scissors");
            if (ui == "Rock" || ui == "rock") {
              Console.WriteLine("\nYou Win!");
            } else if (ui == "Paper" || ui == "paper") {
              Console.WriteLine("You Lose");
            } else {
              Console.WriteLine("It is a draw");
            }
            break;
          default:
            Console.WriteLine("invalid entry!");
            break;
        }
        Console.WriteLine("\nDo you want to play again?  ");
        q = Console.ReadLine();
        if (q == "yes" || q == "Yes") {
          continue;
        } else if (q == "no" || q == "No") {
          play = false;
        } else {
          Console.WriteLine("invalid entry!\nQuiting...!");
          play = false;
        }
      }
    }
  }
}
Auteur: Saad Aslam
Saad Aslam avatar Saad Aslam avatar

I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.

LinkedIn