C言語でじゃんけんを再現する

C言語
  • 1~3でグー・チョキ・パーを入力させる(1~3以外はやり直し)
  • 相手(コンピュータ)は乱数で手(1~3)を決定
  • 勝敗・引き分けを表示

イメージ

jyanken.c

/*
	xJyanken.c じゃんけんをコンピュータで再現する
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define WIN		1
#define LOSE	2
#define DRAW	0

#define GU		1
#define CYOKI	2
#define PA		3

int main(void)
{
	int you, com, result;
	/* じゃんけん */
	printf("じゃんけん!\n");
	
	/* 手を決める(自分) */
    do{
	    printf("[1] グー [2] チョキ [3] パー > ");
	    scanf("%d", &you);
    } while(you < 1 || you > 3);
	
	/* 手を決める(コンピュータ) */
	srand((unsigned)time(NULL));
	com = rand() % 3 + 1;
	
	/* ポン! */
	printf("\nポン!\n");
	
	/* 双方の手を表示 */
	printf("   あなたの手: ");
	switch(you){
		case GU:
			printf("グー\n");
			break;
		case CYOKI:
			printf("チョキ\n");
			break;
		case PA:
			printf("パー\n");
	}
	
	printf("コンピュータの手: ");
	switch(com){
		case GU:
			printf("グー\n");
			break;
		case CYOKI:
			printf("チョキ\n");
			break;
		case PA:
			printf("パー\n");
	}
	printf("\n");
	
	/* どちらが勝ったか? */
	if(you == com){
		result = DRAW;
	}
	else if(you == GU && com == CYOKI){
		result = WIN;
	}
	else if(you == CYOKI && com == PA){
		result = WIN;
	}
	else if(you == PA && com == GU){
		result = WIN;
	}
	else{
		result = LOSE;
	}
	
	/* 勝敗表示 */
	switch(result){
		case WIN:
			printf("<<<あんたの勝ちだよ!>>>");
			break;
		case LOSE:
			printf("<<<あんたの負けだ!!>>>\n");
			break;
		case DRAW:
			printf("<<あいこです>>\n");
	}
	
	return 0;
}

コメント