ゆうき( @BASEBALLY15 )です^^

今日は,何の用じゃ?

そろそろ,C言語で簡単なゲームを作ってみたいのですが・・・
何か,アイデアはないですか?

そうじゃな・・・
それじゃ~,『じゃんけんゲーム』を作ってみてはどうじゃ?

それはいいですね^^
早速,作ってみます!!
(Visual Studio 2017を使用)

C言語で『じゃんけんゲーム』って,具体的にどんなものが作れるの?

今回ご紹介するコードを書くと,以下のような『じゃんけんゲーム』を作ることが出来ます.

まず,自分の手を決定します.

そして,相手の手は,PC側が自動で決定します.

(※相手の手の出し方が今回のミソ!!!)

最後に,自分の手と相手の手を比べて勝敗を決定します.

それでは,早速,コードを見ていきましょう⤵

C言語で『じゃんけんゲーム』を作ってみた!

標準入力を扱えるようにしよう!(準備)

Visual Studio 2012以降』を使っている方は,標準入力を行うための関数を使うために,少し処理を行わなければいけません.

今から,その方法をご紹介します.

Visual Studioのヘッダーファイルを開いてください.

そして,『pch.h』をダブルクリックして,以下のコードを記述してください.

#define _CRT_SECURE_NO_WARNINGS

これで,標準入力を行うための関数(scanfやfopenなど)を使うことが出来ます^^

ヘッダーファイルを用意しよう!

まずは,ヘッダーファイルを用意します.

#include "pch.h"
#include <stdio.h>

//rand()を使うために用意
#include<stdlib.h>

//乱数の種を設定する際に使う
#include<time.h>

rand関数を使うために,「stdlib.h」をインクルードします.

また,乱数の種を都度,変更するために「time.h」もインクルードしておきます.

メイン関数を作ろう!

それでは,本題の『じゃんけんゲーム』のコードを書いていきます.

先に全体のコードを紹介し,その後に詳細を紹介していきます^^

全体のコード

int main()
{
	//自分の出す手を決めるために用意
	int y;
	
	//相手の手を決めるために用意
	int x;

	//while文で使う
	int nflag;
	//switch文で使う
	int ncommand;


	nflag = 1;
	while (nflag > 0)
	{
		printf("\n");
		printf("==============================\n\n");
		printf("<<1>>じゃんけんをします!\n");
		printf("<<0>>じゃんけんを終了します!\n\n");
		printf("==============================\n\n");


		scanf("%d", &ncommand);

		switch (ncommand)
		{
		case 1:
			printf("あなたは何を出しますか?\n");
			printf("0:グー\n1:チョキ\n2:パー\n");
			scanf("%d", &y);

			//自分の手
			if (y == 0)
			{
				printf("あなたは『グー』を出しました!\n");
			}
			if (y == 1)
			{
				printf("あなたは『チョキ』を出しました!\n");
			}
			if (y == 2)
			{
				printf("あなたは『パー』を出しました!\n");
			}


			//相手の手

			//乱数の種を設定
			//NULLを指定した場合は結果自体を出力しない
			srand((unsigned)time(NULL));

			x = rand() % 3;

			if (x == 0)
			{
				printf("相手は『グー』を出しました!\n");
			}
			if (x == 1)
			{
				printf("相手は『チョキ』を出しました!\n");
			}
			if (x == 2)
			{
				printf("相手は『パー』を出しました!\n");
			}


			//あいこの場合
			if ((y == 0 && x == 0) || (y == 1 && x == 1) || (y == 2 && x == 2))
			{
				printf("【結果】あいこです!\n");
			}
			//勝った場合
			if ((y == 0 && x == 1) || (y == 1 && x == 2) || (y == 2 && x == 0))
			{
				printf("【結果】あなたの勝ちです!\n");
			}

			//負けた場合
			if ((y == 0 && x == 2) || (y == 1 && x == 0) || (y == 2 && x == 1))
			{
				printf("【結果】あなたの負けです!\n");
			}

			break;


		case 0:

			nflag = -1;

			break;
		}
	}
	

}

詳細①while文とswitch文について

まずは,『while文』と『switch文』の使い方についてご紹介します.

//while文で使う
	int nflag;
	//switch文で使う
	int ncommand;


	nflag = 1;
	while (nflag > 0)
	{
		printf("\n");
		printf("==============================\n\n");
		printf("<<1>>じゃんけんをします!\n");
		printf("<<0>>じゃんけんを終了します!\n\n");
		printf("==============================\n\n");


		scanf("%d", &ncommand);

		switch (ncommand)
		{
		case 1:
			最初の処理を行うためのコード(今回の場合,じゃんけんを行うためのコードをここに書いていく!)

			break;


		case 0:
            終了するためのコード(nflag=-1とすることで,while文から抜け出すことが出来る!)
			nflag = -1;

			break;
		}
	}

まず,「nflag = 1」と定義します.

そして,「while(nflag > 0)」と書くことで,nflagが0以上の間,実行し続けることが出来ます.

次に,「switch文」を使うことで,条件ごとに処理を分けることが出来ます.

今回の場合だと,「case 1:」の時にじゃんけんゲームを行い,「case 0:」の時にじゃんけんゲームを終了することが出来ます.

ちなみに「case 0:」内に「nflag = -1;」と書くことで,nflagが0以下になり,while文から抜け出すことが出来ます.

詳細②srandとrandについて

次に,相手の手を決定する際に使う『srand』と『rand』についてご紹介します.

・『srand』は,乱数の種を変更する際に使われます.これを使うことで,『rand』で乱数を発生させる際に,その都度,乱数のパターンを変更することが出来ます.

//相手の手

			//乱数の種を設定
			//NULLを指定した場合は結果自体を出力しない
			srand((unsigned)time(NULL));

srand』の引数に『time』と書くことで,時間が経過する度に乱数のパターンを変更することが出来ます.

また,『time』の引数に『NULL』と書くことで,時刻自体を出力しないということを意味しています.

・『rand』を使うことで,乱数を発生させることが出来ます.そして,

x = rand() % 3;

と書くことで,乱数の値を3で割った余りをxに代入しています.

数字を3で割ると,余りは0か1か2の3つしかないですよね^^

それらの結果に手の出し方を当てはめていくことで,じゃんけんゲームを作ることが出来ます.

詳細⓷勝敗の決め方について

最後に,勝敗の決め方についてご紹介します.

上の図の様に,あいこ・勝利・敗北の3つのパターンに分けて,処理を行います.

コードに表すと以下の様になります.

//あいこの場合
			if ((y == 0 && x == 0) || (y == 1 && x == 1) || (y == 2 && x == 2))
			{
				printf("【結果】あいこです!\n");
			}
			//勝った場合
			if ((y == 0 && x == 1) || (y == 1 && x == 2) || (y == 2 && x == 0))
			{
				printf("【結果】あなたの勝ちです!\n");
			}

			//負けた場合
			if ((y == 0 && x == 2) || (y == 1 && x == 0) || (y == 2 && x == 1))
			{
				printf("【結果】あなたの負けです!\n");
			}

以上でじゃんけんゲームの作り方の説明を終わります^^

終わりに

今回は,じゃんけんゲームの作り方についてご紹介しました.

C言語の勉強をしていて,そろそろゲームを作ってみたいと考えていた方にとって,少しでも参考になれば嬉しいです!

今後は,さらに高度なゲームや技術を紹介していこうと考えています^^

それでは・・・

Q &A

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA