HOWTO · Csharp

在 C# 中建立石頭剪刀布遊戲

在本文中,我們將學習如何在 C# 中建立一個石頭剪刀布遊戲。

本文將討論使用 C# 開發石頭剪刀布遊戲的過程。我們將使用 Visual Studio 建立控制檯應用程式、名稱和專案。

C# 中建立石頭剪刀布遊戲

為了製作這個遊戲,我們將遵循以下步驟:

  • 接受使用者的輸入。
  • 隨機生成輸出。
  • 比較所有可能的選擇。
  • 宣佈獲勝者。
  • 重新開始遊戲。

該程式的執行將包括多種功能和方法。一旦接收到使用者的輸入,系統會將其與系統產生的輸入進行比較。

該系統產生的輸入將是隨機的;因此,它可能提供三個選項中的任何一個:石頭、布或剪刀。一旦接收到兩個輸入,它將進行條件渲染。

條件渲染將作為決定是否宣佈獲勝者或沒有獲勝者的基礎,並進行抽籤。

using System;

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

這些行將位於程式碼的開頭,並將在正常程式流程開始時保留。

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

siui 是使用者輸入和系統輸入作為字串的兩個變數,因此使用者應該輸入他們選擇的完整拼寫。r 變數是為計算機將生成的隨機數用於選擇的整數型別變數。

Console.Write("What do you choose?\n\n Rock/ Paper/ Scissors? ") 語句寫在螢幕上並要求使用者輸入他們的選擇。ui = Console.ReadLine() 語句從使用者那裡獲取輸入並將其儲存到 ui 變數中。

Random rnd = new Random() 語句為隨機數建立變數 rnd 以用於隨後生成隨機數。r = rnd.Next(1, 4) 語句生成 1 到 3 範圍內的隨機數並將其儲存到 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;
}

switch() 中,如果 r 變數包含 1 到 4 之間的任何數字,我們會考慮選項。在情況 1 中,我們檢查隨機數是否為 1,如果是,我們設定系統輸入 si 變搖滾。

之後,我們使用 Console.WriteLine("Computer choose Rock") 語句在控制檯上寫入,該語句會在螢幕上列印計算機選擇 Rock。然後我們使用 if 條件來檢視使用者輸入的內容供他們選擇。

if (ui == "Rock"||ui == "rock") 語句檢查使用者是否也輸入了 rock,那麼這是一個平局,它將通過 Console.WriteLine("\nIt is a draw")。如果不是,那麼我們將通過 else if(ui == "Paper"||ui == "paper") 來檢查,如果它不是石頭,那麼使用者輸入的是布?

如果 yes,則使用者贏了,這將由 Console.WriteLine("\nYou Win!"); 列印。

如果使用者沒有輸入我們檢查的兩個選項,很明顯使用者輸入了剪刀,所以使用者輸了。所以,我們最後使用了 else,它會列印 You Lose!

最後,break 語句用於退出 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;

在情況 2 中,我們檢查隨機數是否為 2,然後我們將系統輸入 si 變數設定為布。之後,我們使用 Console.WriteLine("Computer choose Paper") 在控制檯上書寫,它會在螢幕上列印計算機選擇布的資訊。

然後,我們使用 if 條件來檢視使用者輸入的內容供他/她選擇。if (ui == "Rock"||ui == "rock") 語句檢查使用者是否也輸入了 rock,則使用者將輸,並通過 Console.WriteLine(" 列印在螢幕上\n 你鬆了!");

如果不是,那麼我們通過 else if(ui == "Paper"||ui == "paper") 檢查它是否不搖滾,那麼使用者輸入的是布嗎?如果 yes,則為平局。它將由 Console.WriteLine("It is a draw"); 列印。

如果使用者沒有輸入我們檢查過的兩個選項,很明顯使用者輸入了剪刀,因此使用者贏得了遊戲。所以,我們最後使用了 else,它將由 Console.WriteLine("You win"); 列印。

break 語句用於退出 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;

在案例 3 中,我們檢查隨機數是否為 3,然後我們將系統輸入 si 變數設定為剪刀。之後,我們在控制檯上通過 Console.WriteLine("Computer choose Scissors") 行在螢幕上列印計算機選擇了剪刀。

然後我們使用 if 條件來檢視使用者輸入的內容供他們選擇。if (ui == "Rock"||ui == "rock") 行檢查使用者是否也輸入了 rock,然後使用者將獲勝,並由 Console.WriteLine("\nYou Win!"); 一行列印到螢幕上。

如果不是,那麼我們通過 else if(ui == "Paper"||ui == "paper") 行檢查,如果它不是石頭,那麼使用者輸入的是布嗎?如果 yes,則使用者將輸掉遊戲。它將由 Console.WriteLine("You Lose"); 列印出來。

如果使用者沒有輸入我們檢查的兩個選項,很明顯使用者輸入了剪刀,所以遊戲是平局。所以我們最後使用了 else,它會被 Console.WriteLine("It is a draw"); 列印出來。

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

switch 作用域的末尾,我們還使用了 default:,這是一種在沒有匹配大小寫時執行的預設情況。如果 r 變數的值不是 1 到 3,這是一種安全預防措施。

然後我們將用 Console.WriteLine("invalid entry!"); 在螢幕上列印 invalid entry!

如果你願意,你可能不會在程式碼中建立和使用 si 變數,因為決策是使用隨機數變數 r 做出的。

如果你希望使用者輸入 yesno 再次玩遊戲,那麼你應該使用如下程式碼。

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

我們建立了一個布林型別的 play 變數,用於 while 迴圈。最初,它設定為 true,因此迴圈將無限執行,直到 play 變數設定為 false。

你可以將所有遊戲程式碼放在 while 迴圈中,然後,你可以使用 Console.WriteLine("\nDo you want to play again? "); 要求使用者再次玩或不玩。無論使用者輸入什麼,都將使用 q= Console.ReadLine(); 行儲存在 q 變數中。

之後,我們將再次使用 if 條件來檢視使用者輸入的內容。

if(q=="yes"||q=="Yes") 語句檢查使用者的輸入,如果它等於是或否。如果使用者輸入了 yes,則 continue 語句用於跳過其餘的迴圈語句並從頭開始迴圈。

如果使用者沒有輸入 yes 而是輸入 no,則條件 else if(q=="no"||q=="No") 為真,play 變數為由 play=false; 行設定為 false,迴圈將停止,程式將終止。

如果使用者輸入了除 yesno 之外的任何其他內容,則 invalid entry 將通過 Console.WriteLine("invalid entry!\nQuiting...!"); 列印在螢幕上。而 play 將再次為假,程式將終止。

完整原始碼:

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