ページ 11

じゃんけんゲーム 改良したいです。

Posted: 2017年4月13日(木) 16:11
by masuter
じゃんけんゲーム

コード:


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void show(int hand) {
	
}
int main()
{
	int man, com, diff;
	int i, draw = 0, win = 0, lose = 0;
	int hist_man[10], hist_com[10];

	//乱数系列の変更
	srand(time(NULL));
	for( i = 0; i < 10; i++ )//10回繰り返し
	{
		printf("じゃんけん!!ゲーム\n");
		printf("グ-(0), チョキ(1), パー (2)どれかを入力してください。\n");
		scanf("%d", &man);
		//COMが何を出すか
		com = rand() % 3;
		hist_man[i] = man;
		hist_com[i] = com;
		printf("じゃんけんぽん!\n\n");
		//手の表示
		printf( "あなたは  ");
		switch( man )
		{
		case 0:
			printf("グー ");
			break;
                case 1:
			printf( "チョキ");
			break;
		case 2:
			printf( "パー ");
			break;
		}
		printf( "\n");
		printf( "COMは  ");
		switch( com )
		{
		case 0:
			printf( "グー ");
			break;
		case 1:
			printf( "チョキ");
			break;
		case 2:
			printf( "パー ");
			break;
		}
		printf( "\n");
		//判定
		diff = man - com;
		if( diff == 0 )
		{
			printf( "あいこ!\n");
			draw++;
		}
		else if( diff == -1 || diff == 2 )
		{
			printf( "あなたの勝ち!\n");
			win++;
		}
		else
		{
			printf( "COMの勝ち!\n");
			lose++;
		}
		printf( "%d 回目 あなたの %d 勝 %d 負け %d 引き分け\n\n", i+1, win, lose, draw);
	}

	//再現
	printf( "対戦履歴\n");
	for( i = 0; i < 10; i++ )//10回繰り返し
	{
		printf( "%d 回目 ", i+1);
		//手の表示
		printf( "あなたは  ");
		switch( hist_man[i] )
		{
		case 0:
			printf( "グー ");
			break;
		case 1:
			printf( "チョキ");
			break;
		case 2:
			printf( "パー ");
			break;
		}
		printf( " ");
		printf( "COMは  ");
		switch( hist_com[i] )
		{
		case 0:
			printf( "グー ");
			break;
		case 1:
			printf( "チョキ");
			break;
		case 2:
			printf( "パー ");
			break;
		}
		printf( "\n");
	}

	printf( "┏ ┏━┓┏━┓┏┳┓┳━┓ ┏━┓┳  ┳┳━┓┳━┓ ┓\n");
	printf( "┃ ┃  ┓┣━┫┃┃┃┣┫   ┃  ┃┃  ┃┣┫  ┣┳┛ ┃\n");
	printf( "┗ ┗━┛┻  ┻┻  ┻┻━┛ ┗━┛┗━┛┻━┛┻┗┛ ┛\n"); 
	return 0;
}


を、
1. 引数 int hand を持ち、handが 0 なら“グー “, 1 なら”チョキ“, 2 なら”パー “ と表示する関数 void show を作成
2. グーチョキパー表示部分で関数 show を呼び出す(4箇所)
という課題がでました。
引数が 'hand'だけなのに、グー、チョキ、パーの3つの処理をどうやってかけばいいのですか?

Re: じゃんけんゲーム 改良したいです。

Posted: 2017年4月13日(木) 17:14
by keito94
こうすればいいのではないのでしょうか?

コード:

void show(int hand);
void show(int hand){
//ここに、グーチョキパー描画のルーチンを書く。
}
int main(){
//以下略
show(main);
show(com);
}

Re: じゃんけんゲーム 改良したいです。

Posted: 2017年4月13日(木) 17:16
by usao
>引数が 'hand'だけなのに、グー、チョキ、パーの3つの処理をどうやってかけばいいのですか?

問題点は何ですか?

現コードにおいても,例えば 28行目~39行目のswitch文の部分に着目すれば
変数manだけを参照して,
>グー、チョキ、パーの3つの処理
を実現しているのではないのですか?

Re: じゃんけんゲーム 改良したいです。

Posted: 2017年4月14日(金) 21:20
by masuter
keito94 さんが書きました:こうすればいいのではないのでしょうか?

コード:

void show(int hand);
void show(int hand){
//ここに、グーチョキパー描画のルーチンを書く。
}
int main(){
//以下略
show(main);
show(com);
}
ありがとうございました。