【C言語】5回勝負で勝敗を決めるじゃんけんプログラムの書き方

この記事では、C言語を使ってじゃんけんプログラムを作成する方法を解説します。

プログラムの基本構造や5回勝負の実装方法、勝敗のカウント方法などをわかりやすく説明します。

初心者の方でも理解しやすいように、サンプルコードも掲載しています。

目次から探す

プログラムの基本構造

C言語でじゃんけんプログラムを作成するためには、基本的なプログラムの構造を理解する必要があります。

以下では、じゃんけんプログラムの基本的な構造について説明します。

プログラムの流れ

じゃんけんプログラムの流れは以下のようになります。

  1. プログラムの開始
  2. プレイヤーに手を入力してもらう
  3. コンピュータが手をランダムに選ぶ
  4. プレイヤーとコンピュータの手を比較して勝敗を判定する
  5. 勝敗の結果を表示する
  6. もし5回勝負が終わっていなければ、もう一度手を入力してもらう
  7. もし5回勝負が終わったら、最終的な勝敗結果を表示する
  8. プログラムの終了

このように、じゃんけんプログラムは繰り返し処理を行いながら、プレイヤーとコンピュータの手を比較し、勝敗を判定していきます。

必要な変数の宣言

じゃんけんプログラムでは、プレイヤーとコンピュータの手を保持するために変数を使用します。

以下のような変数を宣言する必要があります。

  • playerHand:プレイヤーの手を保持する変数
  • computerHand:コンピュータの手を保持する変数

これらの変数は、プレイヤーが手を入力した後、コンピュータが手をランダムに選ぶ際に使用されます。

また、勝敗の判定にも使用されます。

以上が、じゃんけんプログラムの基本的な構造と必要な変数の宣言についての説明です。

次に、5回勝負の実装方法について説明します。

※プログラムの流れや必要な変数の宣言は一般的なものであり、実際のプログラムではさらに詳細な処理や変数の宣言が必要になる場合があります。

5回勝負の実装

じゃんけんプログラムを5回勝負方式で実装していきましょう。

5回勝負とは、じゃんけんを5回行い、その中での勝敗をカウントして最終的な勝敗を決める方法です。

5回勝負のループ処理の実装方法

5回勝負を実現するためには、ループ処理を使います。

具体的には、forループを使用してじゃんけんを5回繰り返すようにします。

int i;
int winCount = 0;
int loseCount = 0;
for (i = 0; i < 5; i++) {
    // じゃんけんの処理を記述する
}

上記のコードでは、iをカウンタ変数として使用し、forループを5回繰り返します。

ループ内の処理には、じゃんけんの処理を記述します。

勝敗のカウント方法

じゃんけんの結果によって勝敗をカウントするためには、勝ちと負けの回数を変数で管理する必要があります。

上記のコードでは、winCountloseCountという変数を用意しています。

じゃんけんの結果が勝ちの場合、winCountをインクリメントします。

負けの場合は、loseCountをインクリメントします。

if (result == WIN) {
    winCount++;
} else if (result == LOSE) {
    loseCount++;
}

resultはじゃんけんの結果を表す変数で、WINは勝ち、LOSEは負けを表す定数として定義されているものとします。

5回勝負方式の利点の再確認

5回勝負方式の利点は、単発のじゃんけんよりも勝敗の判定が安定することです。

1回のじゃんけんでは偶然の要素が大きく影響することがありますが、5回勝負ではその影響を相殺することができます。

また、5回勝負方式では、勝ち負けの回数をカウントすることで、より明確な勝敗を判定することができます。

じゃんけんプログラムの完成

以上の要素を組み合わせて、じゃんけんプログラムを完成させましょう。

ループ処理を使って5回勝負を行い、勝ち負けの回数をカウントして最終的な勝敗を判定します。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROCK 0
#define PAPER 1
#define SCISSORS 2
#define WIN 0
#define LOSE 1
#define DRAW 2
int main() {
    int i;
    int winCount = 0;
    int loseCount = 0;
    srand(time(NULL));
    for (i = 0; i < 5; i++) {
        int playerHand = rand() % 3;
        int computerHand = rand() % 3;
        int result;
        if (playerHand == computerHand) {
            result = DRAW;
        } else if ((playerHand == ROCK && computerHand == SCISSORS) ||
                   (playerHand == PAPER && computerHand == ROCK) ||
                   (playerHand == SCISSORS && computerHand == PAPER)) {
            result = WIN;
        } else {
            result = LOSE;
        }
        if (result == WIN) {
            winCount++;
        } else if (result == LOSE) {
            loseCount++;
        }
        printf("Player: %d, Computer: %d, Result: %d\n", playerHand, computerHand, result);
    }
    printf("Win: %d, Lose: %d\n", winCount, loseCount);
    if (winCount > loseCount) {
        printf("You win!\n");
    } else if (winCount < loseCount) {
        printf("You lose!\n");
    } else {
        printf("Draw!\n");
    }
    return 0;
}

上記のコードでは、rand()関数を使ってプレイヤーとコンピュータの手をランダムに生成し、じゃんけんの結果を判定しています。

ループ処理を使って5回勝負を行い、最終的な勝敗を表示します。

また、じゃんけんの手を数字で表していますが、実際のプログラムでは文字列で表現するなど、より使いやすい形に変更することができます。

目次から探す