画像(logo)

HOME/[C言語]サンプルプログラム集 目次/じゃんけんゲーム

広告

[C言語 サンプルプログラム集]
じゃんけんゲーム

広告

↓2016年02月29日発売↓

12歳からはじめる ゼロからのC言語 ゲームプログラミング教室

目次へ戻る

じゃんけんゲーム

今回は入門プログラムの定番、じゃんけんゲームを作ります。

画像(cs_9_1)

「1・グー」「2・チョキ」「3・パー」の番号を選んでコンピューターと勝負していきます。

ヘッダファイル

今回必要なヘッダファイルです。

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>

<stdio.h>以外を説明します。

<stdlib.h>

乱数を発生させる「rand()」で使います。

<conio.h>

キー入力の「_getch()」などで使います。

<time.h>

時間を調べる「time()」で使います。今回は乱数の命令と一緒に使ってます。

ヘッダファイルの意味についてはわからなそうな用語集のヘッダファイルを見てください。

変数

int key = 0;
int com = 0;
int count = 0;
int score1 = 0;
int score2 = 0;
int score3 = 0;
int score4 = 0;

大事な役割を持つ変数が

/*入力されたキーを保存*/
int key = 0;
/*乱数を保存*/
int com = 0;

こちらの2つの変数になります。あとはゲーム全体のループ用や得点用などになります。

じゃんけん3種類の乱数を発生

乱数はよく使われるのでカタチで覚えてしまいましょう。

srand((unsigned)time(NULL));
com = (rand() % 3 + 49);

まず一行目「srand()」というのは、乱数を使う時に初期値を設定するという関数になります。

初期値?と思われるかもしれませんが、これ以上の詳しい説明はゲームテクニック集の乱数をご覧ください。

そして2行目の後ろの「2」この数字を変える事によって必要な範囲の乱数を発生させる事ができます。

ここを「10」にすると「0〜9」まで、「50」にすると「0〜49」までという具合に乱数の範囲を決める事ができます。

そしてその後ろの「+49」これについては次の文字コードと一緒に説明します。

1・2・3の文字コード

#include <stdio.h>

int main(){
	printf("1 = %d\n",'1');
	printf("2 = %d\n",'2');
	printf("3 = %d\n",'3');

	return 0;
}

■実行結果■

画像(cs_9_2)

1・2・3の文字コードを表示するプログラムです。

後ろの数字を「'a'」にすれば「a」の文字コードが調べられます。

結果は見たままですが

「1」→「49」

「2」→「50」

「3」→「51」

となります。

文字コードってなんだ?と説明すると少し話が長引くのでここはキーボードの「1」を押すと「49」が出てくるとだけ覚えてください。

ちなみに「a」を押すと「97」が出てきます。逆に言うとこの出てきた数字を調べる事によってキーボードのどこが押されたのかがわかります。

そしてこの「49」は数字として使えるのでこれでコンピューターの手と比べて勝敗を判断するわけです。

さきほど乱数に「+49」を足したのはそのためです。

キー入力

こちらもカタチで覚えましょう。

key = _getche();
if(key == 0 || key == 224)key = _getche();

「_getche()」こちらは一文字だけキー入力を受け付ける関数になります。

入力待ちになる事と押したキーが表示されるトコロに注意です。

押したキーが表示されないようにするには「_getch()」という関数を使います。

そして受け取ったキーコードを変数「key」に保存します。

その次の「if(key == 0 || key == 224)」これは矢印など一部の特別なキーは入力をなぜか2回受け取るので、その余分な一回を受け流す処理になります。

もう少し詳しく知りたい方はこちらもゲームテクニック集の矢印キーリアルタイム入力をご覧ください。

手を比べる

それでは入力されたキーコードと乱数によって生成されたコンピューターの手を比べていきます。

if(key == com){
	printf("あいこ");
	score3++;
}
else if(key==49 && com==51){
	printf("comの勝ち");
	score2++;
}
else if(key==50 && com==49){
	printf("comの勝ち");
	score2++;
}
else if(key==51 && com==50){
	printf("comの勝ち");
	score2++;
}
else{
	printf("私の勝ち");
	score1++;
}

あとは比べるだけなので簡単ですね。こういう2つの条件を同時に比べる時は「&&」が便利です。

これは「かつ」という意味で、この場合は「「key == 49」かつ「key == 51」の時」と2つの条件が合っていればその後の処理が実行されます。

勝敗判定に入る前の「if」文

if(key > 48 && key < 52){
}

こちらは「文字コード49〜51の間」というように関係ないキーが押された時の為の入力判定処理になります。

完成

そしてゲーム全体のカタチを整えれば完成です。

変数「count」でゲーム全体の回数が変えられます。

じゃんけんゲームソース

□ページの先頭へ□

□目次へ戻る□

□HOME□

広告

↓2017年06月16日発売↓

やさしいC 第5版 (「やさしい」シリーズ)

新品価格
¥2,700から
(2017/5/1 13:05時点)

↓2014年08月09日発売↓

新・明解C言語 入門編 (明解シリーズ)

新品価格
¥2,484から
(2017/5/1 13:08時点)

↓2016年02月20日発売↓

新・解きながら学ぶC言語

新品価格
¥2,160から
(2017/5/1 13:10時点)

↓2017年02月11日発売↓

C言語プログラミング基本例題88 88

新品価格
¥3,024から
(2017/5/1 13:12時点)

↓2016年12月15日発売↓

Cの絵本 第2版 C言語が好きになる新しい9つの扉

新品価格
¥1,490から
(2017/5/1 13:13時点)

↓2017年02月08日発売↓

新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ)

新品価格
¥2,700から
(2017/5/1 13:15時点)