【C言語】3人でじゃんけんするプログラムの書き方

この記事では、C言語を使って3人でじゃんけんをするプログラムの作り方をわかりやすく解説します。

初心者の方でも、プログラムの基本構造やプレイヤーの入力処理、じゃんけんの勝敗判定などを理解することができます。

さらに、サンプルコードも提供しているので、実際にプログラムを作成して動かしてみましょう!

目次から探す

プログラムの基本構造

C言語でじゃんけんプログラムを作成するためには、以下の基本的な構造を持つプログラムを作成します。

プログラムの流れ

じゃんけんプログラムの基本的な流れは次のようになります。

  1. 必要な変数の宣言
  2. プレイヤーの手の入力
  3. コンピュータの手の生成
  4. 勝敗の判定
  5. 結果の表示

必要な変数の宣言

じゃんけんプログラムでは、プレイヤーの手やコンピュータの手、勝敗の結果などを格納するための変数が必要です。

以下は、基本的な変数の宣言の例です。

int playerHand;      // プレイヤーの手
int computerHand;    // コンピュータの手
int result;          // 勝敗の結果

ランダムな手の生成方法

コンピュータの手はランダムに生成する必要があります。

C言語では、rand()関数を使用してランダムな数値を生成することができます。

以下は、コンピュータの手をランダムに生成する方法の例です。

#include <stdlib.h>   // rand()関数を使用するために必要なヘッダファイル
// ...
computerHand = rand() % 3 + 1;   // 1から3までのランダムな数値を生成

以上が、じゃんけんプログラムの基本的な構造に関する説明です。

次に、プレイヤーの入力処理について説明します。

プレイヤーの入力処理

プレイヤーの手の入力方法と入力値のバリデーションについて説明します。

プレイヤーの手の入力方法

プレイヤーにはじゃんけんの手を入力してもらう必要があります。

C言語では、標準入力からのユーザーの入力を受け取るためにscanf関数を使用します。

以下のようなコードを使って、プレイヤーに手を入力してもらいます。

int playerHand;
printf("じゃんけんの手を入力してください(0: グー, 1: チョキ, 2: パー): ");
scanf("%d", &playerHand);

上記のコードでは、playerHandという変数にプレイヤーの入力値を格納しています。

printf関数を使ってプレイヤーに手の入力を促し、scanf関数で入力値を受け取っています。

入力値のバリデーション

プレイヤーが入力した値が0, 1, 2のいずれかであるかを確認する必要があります。

バリデーションを行うためには、条件分岐を使用します。

以下のようなコードを使って、入力値のバリデーションを行います。

if (playerHand < 0 || playerHand > 2) {
    printf("入力値が不正です。再度入力してください。\n");
    // 再度入力を促す処理などを追加することもできます
}

上記のコードでは、playerHandの値が0未満または2より大きい場合に、入力値が不正であると判断しています。

不正な場合はエラーメッセージを表示し、再度入力を促す処理を追加することもできます。

これにより、プレイヤーの手の入力方法と入力値のバリデーションが実装されます。

次は、じゃんけんの勝敗判定について説明します。

じゃんけんの勝敗判定

じゃんけんの勝敗を判定するために、特定のアルゴリズムを使用します。

以下では、そのアルゴリズムと勝敗判定の結果の表示方法について説明します。

勝敗判定のアルゴリズム

じゃんけんの勝敗を判定するためには、以下のルールを使用します。

  1. グーはチョキに勝ち、チョキはパーに勝ち、パーはグーに勝つ。
  2. 同じ手を出した場合は引き分けとなる。

このルールに基づいて、プレイヤーの手とコンピュータの手を比較し、勝敗を判定します。

以下は、勝敗判定のアルゴリズムの一例です。

if ((playerHand == ROCK && computerHand == SCISSORS) ||
    (playerHand == SCISSORS && computerHand == PAPER) ||
    (playerHand == PAPER && computerHand == ROCK)) {
    // プレイヤーの勝利
} else if ((playerHand == ROCK && computerHand == PAPER) ||
           (playerHand == SCISSORS && computerHand == ROCK) ||
           (playerHand == PAPER && computerHand == SCISSORS)) {
    // コンピュータの勝利
} else {
    // 引き分け
}

このアルゴリズムでは、プレイヤーの手とコンピュータの手を比較し、勝利条件に合致する場合はプレイヤーの勝利、コンピュータの勝利、引き分けを判定します。

勝敗判定の結果の表示方法

勝敗判定の結果を表示するためには、条件分岐を使用して結果を出力します。

以下は、勝敗判定の結果を表示するためのコードの一例です。

if ((playerHand == ROCK && computerHand == SCISSORS) ||
    (playerHand == SCISSORS && computerHand == PAPER) ||
    (playerHand == PAPER && computerHand == ROCK)) {
    printf("プレイヤーの勝利!\n");
} else if ((playerHand == ROCK && computerHand == PAPER) ||
           (playerHand == SCISSORS && computerHand == ROCK) ||
           (playerHand == PAPER && computerHand == SCISSORS)) {
    printf("コンピュータの勝利!\n");
} else {
    printf("引き分けです。\n");
}

このコードでは、勝利条件に合致する場合には対応するメッセージを表示し、引き分けの場合には「引き分けです。」と表示します。

以上が、じゃんけんの勝敗判定のアルゴリズムと結果の表示方法の解説です。

次は、プログラムの実行フローについて説明します。

1 2

この記事のページ一覧
  1. 現在のページ
目次から探す