広告
↓発売日:2018年09月22日↓
新品価格 |
今回は入門プログラムの定番、じゃんけんゲームを作ります。
「1・グー」「2・チョキ」「3・パー」の番号を選んでコンピューターと勝負していきます。
今回必要なヘッダファイルです。
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <time.h>
<stdio.h>以外を説明します。
乱数を発生させる「rand()」で使います。
キー入力の「_getch()」などで使います。
時間を調べる「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つの変数になります。あとはゲーム全体のループ用や得点用などになります。
乱数はよく使われるのでカタチで覚えてしまいましょう。
srand((unsigned)time(NULL)); com = (rand() % 3 + 49);
まず一行目「srand()」というのは、乱数を使う時に初期値を設定するという関数になります。
初期値?と思われるかもしれませんが、これ以上の詳しい説明はゲームテクニック集の乱数をご覧ください。
そして2行目の後ろの「2」この数字を変える事によって必要な範囲の乱数を発生させる事ができます。
ここを「10」にすると「0~9」まで、「50」にすると「0~49」までという具合に乱数の範囲を決める事ができます。
そしてその後ろの「+49」これについては次の文字コードと一緒に説明します。
#include <stdio.h> int main(){ printf("1 = %d\n",'1'); printf("2 = %d\n",'2'); printf("3 = %d\n",'3'); return 0; }
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」でゲーム全体の回数が変えられます。
広告
↓発売日:2016年02月29日↓
12歳からはじめる ゼロからのC言語 ゲームプログラミング教室 新品価格 |
↓発売日:2018年06月22日↓
新品価格 |
↓発売日:2018年03月09日↓
新品価格 |
↓発売日:2017年06月14日↓
新品価格 |
↓発売日:2018年05月21日↓
新品価格 |
↓発売日:2017年12月07日↓
新品価格 |
↓発売日:2017年02月08日↓
新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ) 新品価格 |
↓発売日:2017年09月26日↓
新品価格 |