ホーム
C/C++チュートリアル
-
このC入門は、
GTK のコードを読むために必要な最小限の C を説明してます。
-
この章では、簡単なゲームを作ります。
じゃんけんゲーム
janken.cpp
#include <stdio.h>
#include <stdlib.h> // for rand, srand
#include <time.h> // for time
#include <string.h> // for strcmp
int you(char *hand);
int computer();
void janken(int you, int computer);
int main()
{
srand(time(NULL));
char * hand;
int opponent;
int yourself;
while(1)
{
printf("グー:1 チョキ:2 パー:3 終了:4 ");
scanf("%s", hand);
puts("---------------------------------");
if (strcmp(hand, "4") == 0)
{
puts("Bye..");
break;
}
yourself = you(hand);
if (yourself)
{
opponent = computer();
janken(yourself, opponent);
}
}
return 0;
}
int you(char *hand)
{
int num = atoi(hand);
switch(num)
{
case 1:
puts("あなたはグーです。");
return num;
case 2:
puts("あなたはチョキです。");
return num;
case 3:
puts("あなたはパーです。");
return num;
default:
puts("無効な値です。");
}
return 0;
}
int computer()
{
int num = rand() % 3 + 1;
switch(num)
{
case 1:
puts("あいてはグーです。");
break;
case 2:
puts("あいてはチョキです。");
break;
case 3:
puts("あいてはパーです。");
break;
}
return num;
}
void janken(int you, int com)
{
if (you == com)
{
puts("あいこです。");
} else if (you == 1 && com == 2) {
puts("あなたの勝ちです。");
} else if (you == 2 && com == 3) {
puts("あなたの勝ちです。");
} else if (you == 3 && com == 1) {
puts("あなたの勝ちです。");
} else {
puts("あなたの負けです。");
}
}
実行結果
グー:1 チョキ:2 パー:3 終了:4 0
---------------------------------
無効な値です。
グー:1 チョキ:2 パー:3 終了:4 1
---------------------------------
あなたはグーです。
あいてはグーです。
あいこです。
グー:1 チョキ:2 パー:3 終了:4 2
---------------------------------
あなたはチョキです。
あいてはグーです。
あなたの負けです。
グー:1 チョキ:2 パー:3 終了:4 3
---------------------------------
あなたはパーです。
あいてはグーです。
あなたの勝ちです。
グー:1 チョキ:2 パー:3 終了:4 4
---------------------------------
Bye..
コード説明
- while(1)
無限ループを開始します。
-
if (strcmp(hand, "4") == 0)
{
puts("Bye..");
break;
}
strcmp関数で入力された文字列が "4" かどうか調べています。0 なら同じです。
そして同じなら break で無限ループを抜けます。
- yourself = you(hand);
you関数に入力した文字列を渡しています。そして you関数が返した値を yourself
変数に入れます。
you 関数では、入力された文字列を atoi( )関数で整数に変換して、
その値に会った文字列を表示します。そして変換した整数を返しています。
-
if (yourself)
yourselfには、0 から 3 までの整数が入っています。yourself が 0 の場合は
偽なり、この if 文の続きは実行されません。1 から 3 までの整数は
真と評価されますので if 文の続きが実行されます。
- opponent = computer();
computer( )関数を呼び出して、その戻り値を opponent 変数に入れています。
computer( )関数では、1 から 3 までの乱数を発生させて、
その値と合致した文字列を出力しから、その 1 から 3 までの整数を返しています。
-
janken(yourself, opponent);
janken( )関数に自分の整数と相手の整数を渡しています。
janken()関数では2つの整数を比較して勝ち負けを判断しています。
-
else if (you == 1 && com == 2)
&& は条件演算子と呼ばれるものです。左辺の条件と右辺の条件の両方が
真の場合に、全体で真になるという意味になります。
「かつ」もしくはアンド(AND)とも呼ばれます。
Posted: Dec. 25, 2019
Update: Dec. 25, 2019