こんにちは。武田です。
先日は2泊3日のスキー研修がありました。
その中で「学院長とじゃんけんして、勝ったら景品がもらえる!」という催しがありました。
C言語でじゃんけんを表してみました。(というか、わたしがプログラミングの授業でよく出す課題の一つです)
こんな感じです。
コンピュータと1対1でじゃんけんをします。
/* jyan-ken1.c コンピュータと1対1でじゃんけんをする 繰り返し処理なし。判定して終わり Created by MRGARITA.NET on 2015/04/20. Copyright 2015 Shuichi Takeda, All rights reserved. */ #include <stdio.h> #include <stdlib.h> int main(void) { int yourhand, comhand; int result = 0; srand((unsigned)time(NULL)); // お互いが同時に「じゃんけん」と言う printf("じゃんけん!"); // 人が「グー」、「チョキ」「パー」のいづれかを出す printf("1:グー 2:チョキ 3:パー (1〜3で選んでください) "); scanf("%d", &yourhand); // コンピュータが「グー」、「チョキ」「パー」のいづれかを出す comhand = rand() % 3 + 1; printf("ポン!¥n"); // ルールに沿って判定(勝ち、負け、あいこ)を行う if(yourhand == comhand){ result = 999; // あいこ } else if( (yourhand == 1 && comhand == 2) || (yourhand == 2 && comhand == 3) || (yourhand == 3 && comhand == 1)){ result = 1; // 勝ち } else if( (yourhand == 1 && comhand == 3) || (yourhand == 2 && comhand == 1) || (yourhand == 3 && comhand == 2)){ result = 0; // 負け } printf("¥nあなた: %d¥tコンピュータ: %d¥n", yourhand, comhand); // 判定 if(result == 1){ printf("¥nあなたの勝ち!!!!!!¥n"); } else if(result == 0){ printf("¥n残念!あなたの負けです¥n"); } else if(result == 999){ printf("¥nあいこで..."); } return 0; }
プログラムの中でじゃんけんの手であるグー、チョキ、パーをそれぞれ1、2、3の数値で表しています。
あいこの場合は、お互いの手が同じ数値(お互いグーなら1と1)になるわけです。これなら判定がしやすいです。
勝負の判定も数値です。
勝ったら1、負けたら0、あいこの場合は999という数値で判定するようにしています。
コンピュータは中身が数値(2進数)で動いているので数値化したほうが判定しやすいのです。
このように何かの状態を数値に置き換える事が出来れば、たいていの事はプログラムに直せます。
「何かに置き換えて考える」ことがプログラミングの面白さとも言えます。
上記のプログラムは中途半端です。
あいこの処理が出来ていないからです。
あいこの時は、じゃんけんの勝負をもう一度したいですよね。
ぜひ、考えてみて下さい!