【C#】オブジェクト指向を使ったジャンケンゲーム

2023年2月18日

C#でオブジェクト指向を使ったジャンケンゲームを作成する方法の一例を示します

Player player = new Player();
Computer computer = new Computer();

while (true)
{
    Console.WriteLine("じゃんけんをしましょう!");
    Console.WriteLine("グー・チョキ・パーのいずれかを入力してください。");
    player.Hand = Console.ReadLine();

    if (player.Hand == "終了")
    {
        break;
    }

    // コンピュータが手を決めます
    computer.Play();

    // 判定結果を求めます
    string result = player.ShowResult(computer);

    // 結果を表示します
    Console.WriteLine(result);

    Console.WriteLine("もう一度プレイしますか? 終了する場合は「終了」と入力してください。");
}

class Player
{
    public string Hand { get; set; }
    public int WinCount { get; set; }
    public int LoseCount { get; set; }
    public int DrawCount { get; set; }

    public string ShowResult(Computer computer)
    {
        if (Hand == computer.Hand)
        {
            DrawCount++;
            return $"私は、{computer.Hand}なので、あいこです。";
        }
        else if ((Hand == "グー" && computer.Hand == "チョキ") ||
                     (Hand == "チョキ" && computer.Hand == "パー") ||
                     (Hand == "パー" && computer.Hand == "グー"))
        {
            WinCount++;
            return $"私は、{computer.Hand}なので、あなたの勝ちです。";
        }
        else
        {
            LoseCount++;
            return $"私は、{computer.Hand}なので、あなたの負けです。";
        }
    }
}

class Computer
{
    private static string[] hands = { "グー", "チョキ", "パー" };
    private static Random rnd = new Random();
    public string Hand { get; set; }

    public void Play()
    {
        Hand = hands[rnd.Next(0, hands.Length)];
    }
}

上記のプログラムでは、PlayerクラスとComputerクラスを使用して、ジャンケンゲームをオブジェクト指向で実装しています。Playerクラスはプレイヤーの手、勝敗数、そしてShowResultメソッドを持ち、Computerクラスはコンピュータの手、そしてPlayメソッドを持ちます。ShowResultメソッドでは、プレイヤーの手とコンピュータの手が一致しているか、プレイヤーが勝ちなのか負けなのかを判定し、結果を返します

C#

Posted by hidepon