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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
masuter

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

#1

投稿記事 by masuter » 8年前

じゃんけんゲーム

コード:


#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つの処理をどうやってかけばいいのですか?

アバター
keito94
記事: 264
登録日時: 8年前
連絡を取る:

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

#2

投稿記事 by keito94 » 8年前

こうすればいいのではないのでしょうか?

コード:

void show(int hand);
void show(int hand){
//ここに、グーチョキパー描画のルーチンを書く。
}
int main(){
//以下略
show(main);
show(com);
}
デバッグは投げ捨てるものではない。
今までの質問でこれは学んだこと。
質問する時は、必ずちゃんと調べた上に問題をもとにした仕様書を作ってから質問すること。
仕様書の大切さを改めて思い知った…。

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

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

#3

投稿記事 by usao » 8年前

>引数が 'hand'だけなのに、グー、チョキ、パーの3つの処理をどうやってかけばいいのですか?

問題点は何ですか?

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

masuter

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

#4

投稿記事 by masuter » 8年前

keito94 さんが書きました:こうすればいいのではないのでしょうか?

コード:

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

返信

“C言語何でも質問掲示板” へ戻る