Erstellen ein Schere-Stein-Papier-Spiel in C#

Saad Aslam 12 Oktober 2023
Erstellen ein Schere-Stein-Papier-Spiel in C#

In diesem Artikel geht es um die Entwicklung eines Schere-Stein-Papier-Spiels mit C#. Wir verwenden Visual Studio, um eine Konsolen-App, einen Namen und ein Projekt zu erstellen.

Schere-Stein-Papier-Spiel in C# erstellen

Um dieses Spiel zu erstellen, gehen wir wie folgt vor:

  • Nehmen Sie die Eingabe des Benutzers entgegen.
  • Generieren Sie die Ausgabe zufällig.
  • Vergleichen Sie alle möglichen Optionen.
  • Erklären Sie den Gewinner.
  • Starten Sie das Spiel neu.

Der Betrieb dieses Programms umfasst eine Vielzahl von Funktionen und Methoden. Sobald die Eingabe des Benutzers empfangen wurde, vergleicht das System sie mit der vom System erzeugten Eingabe.

Der von diesem System produzierte Input wird zufällig sein; Daher könnte es eine der drei Optionen liefern: Stein, Papier oder Schere. Es führt ein bedingtes Rendering durch, sobald es beide Eingaben erhält.

Die bedingte Wiedergabe dient als Grundlage für die Entscheidung, ob ein Gewinner bekannt gegeben wird oder ob es keinen Gewinner gibt und eine Auslosung stattfindet.

using System;

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

Diese Zeilen befinden sich am Anfang des Codes und bleiben bestehen, wenn der normale Programmablauf beginnt.

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 und ui sind die beiden Variablen für Benutzereingaben und Systemeingaben als Zeichenfolge, daher sollte der Benutzer vollständige Schreibweisen seiner Wahl eingeben. Die r-Variable ist die Variable vom Typ Integer, die für die Zufallszahl erstellt wurde, die der Computer für die Auswahl generiert.

Die Anweisung Console.Write("What do you choose?\n\n Rock/ Paper/ Scissors? ") wird auf den Bildschirm geschrieben und fordert den Benutzer auf, seine Wahl einzugeben. Die Anweisung ui = Console.ReadLine() nimmt die Eingabe des Benutzers und speichert sie in der Variablen ui.

Die Anweisung Random rnd = new Random() erstellt die Variable rnd für die Zufallszahl, die später zur Generierung der Zufallszahlen verwendet werden soll. Die Anweisung r = rnd.Next(1, 4) generiert den Zufall im Bereich 1 bis 3 und speichert ihn in der Variablen 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;
}

In switch() betrachten wir die Optionen, wenn die Variable r eine beliebige Zahl von 1 bis 4 enthält. Im Fall 1 prüfen wir, ob die Zufallszahl eins ist, und wenn ja, setzen wir den Systemeingang si variabel zu rocken.

Danach schreiben wir auf der Konsole mit der Anweisung Console.WriteLine("Computer hat Rock"), die auf dem Bildschirm ausgibt, dass der Computer Rock gewählt hat. Dann verwenden wir if-Bedingungen, um zu sehen, was der Benutzer für seine Auswahl eingegeben hat.

Die if (ui == "Rock"||ui == "rock")-Anweisung prüft, ob der Benutzer auch rock eingegeben hat, dann ist es ein Unentschieden und es wird auf dem Bildschirm von Console.WriteLine("\ nEs ist ein Unentschieden"). Wenn nicht, prüfen wir mit else if(ui == "Paper"||ui == "paper"), ob es sich nicht um Rock handelt. Ist es dann Papier, das der Benutzer eingegeben hat?

Wenn Ja, hat der Benutzer gewonnen, was von Console.WriteLine("\nYou Win!"); ausgegeben wird.

Wenn der Benutzer nicht beide von uns überprüften Optionen eingegeben hat, ist es offensichtlich, dass der Benutzer eine Schere eingegeben hat, also hat der Benutzer verloren. Also haben wir am Ende else verwendet, was You Lose! ausgibt.

Zuletzt wird die Anweisung break verwendet, um den switch() zu verlassen.

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;

In Fall 2 überprüfen wir, dass wir, wenn die Zufallszahl 2 ist, die Systemeingangsvariable si auf Papier setzen. Danach schreiben wir auf der Konsole mit Console.WriteLine("Computer choose Paper"), was auf dem Bildschirm ausgibt, dass der Computer Papier ausgewählt hat.

Dann haben wir if-Bedingungen verwendet, um zu sehen, was der Benutzer für seine Wahl eingegeben hat. Die Anweisung if (ui == "Rock"||ui == "rock") überprüft, ob der Benutzer auch rock eingegeben hat, dann verliert der Benutzer und es wird von Console.WriteLine("\nYou Lose!");.

Wenn nicht, prüfen wir mit else if(ui == "Paper"||ui == "paper"), ob es sich nicht um Rock handelt. Ist es dann Papier, das der Benutzer eingegeben hat? Wenn Ja, dann ist es ein Unentschieden. Und es wird von Console.WriteLine("It is a draw"); gedruckt.

Wenn der Benutzer nicht beide von uns überprüften Optionen eingegeben hat, ist es offensichtlich, dass der Benutzer Schere eingegeben hat, sodass der Benutzer das Spiel gewinnt. Also haben wir am Ende else verwendet, was von Console.WriteLine("You win"); ausgegeben wird.

Die Anweisung break wird verwendet, um switch() zu verlassen.

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;

In Fall 3 überprüfen wir, dass wir, wenn die Zufallszahl 3 ist, die Systemeingangsvariable si auf Schere setzen. Danach schreiben wir auf der Konsole die Zeile Console.WriteLine("Computer hat Schere"), die auf dem Bildschirm ausgibt, dass der Computer eine Schere gewählt hat.

Dann verwenden wir if-Bedingungen, um zu sehen, was der Benutzer für seine Auswahl eingegeben hat. Die Zeile if (ui == "Rock"||ui == "rock") prüft, ob der Benutzer auch rock eingegeben hat, dann gewinnt der Benutzer und es wird von der Console.WriteLine("\nYou Win!"); Linie.

Wenn nicht, prüfen wir mit der Zeile else if(ui == "Paper"||ui == "paper"), ob es sich nicht um Rock handelt. Ist es dann Papier, das der Benutzer eingegeben hat? Wenn Ja, verliert der Benutzer das Spiel. Und es wird gedruckt von Console.WriteLine("You Lose"); Linie.

Wenn der Benutzer nicht beide von uns überprüften Optionen eingegeben hat, ist es offensichtlich, dass der Benutzer Schere eingegeben hat, also ist das Spiel unentschieden. Also haben wir am Ende else verwendet, was von Console.WriteLine("It is a draw"); ausgegeben wird.

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

Am Ende des switch-Bereichs haben wir auch default: verwendet, eine Art Standardfall, der ausgeführt wird, wenn kein Fall gefunden wird. Dies ist eine Sicherheitsvorkehrung, wenn die Variable r einen anderen Wert als 1 bis 3 hat.

Dann drucken wir auf dem Bildschirm invalid entry! mit Console.WriteLine("invalid entry!");.

Wenn Sie möchten, dürfen Sie die Variable si in Ihrem Code nicht erstellen und verwenden, da die Entscheidungen mit der Zufallszahlenvariablen r getroffen werden.

Wenn Sie möchten, dass der Benutzer yes oder no eingibt, um das Spiel erneut zu spielen, sollten Sie den Code wie folgt verwenden.

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;
        }
      }
    }
  }
}

Wir haben eine play-Variable vom Typ bool erstellt, die in der while-Schleife verwendet wird. Anfangs ist es auf true gesetzt, sodass die Schleife unendlich läuft, bis die Variable play auf false gesetzt wird.

Sie können Ihren gesamten Spielcode in die while-Schleife platzieren und danach den Benutzer mit Console.WriteLine("\nDo you want to play again? "); bitten, erneut zu spielen oder nicht. Was auch immer der Benutzer eingeben wird, wird in der Variablen q mit der Zeile q= Console.ReadLine(); gespeichert.

Danach verwenden wir wieder die if-Bedingungen, um zu sehen, was vom Benutzer eingegeben wurde.

Die Anweisung if(q=="yes"||q=="Yes") überprüft die Eingabe des Benutzers, ob sie ja oder nein entspricht. Wenn der Benutzer yes eingegeben hat, wird die continue-Anweisung verwendet, um die restlichen Schleifenanweisungen zu überspringen und die Schleife von vorne zu beginnen.

Wenn der Benutzer nicht ja, sondern stattdessen nein eingegeben hat, dann wird die Bedingung else if(q=="no"||q=="No") wahr und die Variable play wird wahr durch die Zeile play=false; auf false gesetzt, stoppt die Schleife und das Programm wird beendet.

Und wenn der Benutzer etwas anderes als ja oder nein eingegeben hat, dann ungültige Eingabe! wird von Console.WriteLine("invalid entry!\nQuiting...!"); auf den Bildschirm ausgegeben. Und play ist wieder falsch, und das Programm wird beendet.

Vollständiger Quellcode:

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;
        }
      }
    }
  }
}
Autor: 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