C言語:じゃんけんをプログラムで表す

こんにちは。武田です。
先日は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進数)で動いているので数値化したほうが判定しやすいのです。
このように何かの状態を数値に置き換える事が出来れば、たいていの事はプログラムに直せます。
「何かに置き換えて考える」ことがプログラミングの面白さとも言えます。

上記のプログラムは中途半端です。
あいこの処理が出来ていないからです。
あいこの時は、じゃんけんの勝負をもう一度したいですよね。
ぜひ、考えてみて下さい!

コメントを残す

メールアドレスが公開されることはありません。