C言語関係掲示板

過去ログ

No.558.グリコゲーム

[戻る] [ホームページ]
No.5031

プログラミングでグリコゲームを作りたいのですが・・・
投稿者---プログ(2003/02/06 15:47:35)


プログラミングでグリコゲーム(コンピュータとじゃんけんをして、勝ったほうが、グーで勝ったなら、グリコと3歩進み、チョキで勝ったら、チヨコレイトと6歩進み、パーで勝ったら、パイナツプルと6歩進み、先に30歩になったほうが勝ちというゲーム)を条件分岐、配列、自作関数、繰り返しを使って作りたいのですが、じゃんけんをして勝ったほうが何歩か進むというソースがうまく作れません。教えてください。
#include <stdio.h>

int main(void)
{
char jyanken [3][10]={"グー","チョキ","パー"};
char susume [3][20]={"グリコ","チョコレート","パイナップル"};
int user;
int comp;
int hantei;
int i;
int steps[winner];
int te,winner;

srandom(time(0));

for(i=0;i<3;i++){
printf("%d %s\n",i,jyanken[i]);
}
printf("じゃんけんポイ --> ");
scanf("%d", &user);

if (user == 0) {
printf("あなたは、グーですね\n");
} else if (user == 1) {
printf("あなたは、チョキですね\n");
} else {
printf("あなたは、パーですね\n");
}

comp = random() % 3;

if (comp == 0) {
printf("コンピュータはグーです\n");
} else if (comp == 1) {
printf("コンピュータはチョキです\n");
} else {
printf("コンピュータはパーです\n");
}

hantei = user - comp;
if (hantei == 0) {
printf("あいこです\n");
} else if (hantei == 1 || hantei == -2) {
printf("あなたの負けです\n");
} else {
printf("あなたの勝ちです\n");
}
if (winner == 0) {
printf("あなた: ");
} else {
printf("コンピュータ: ");
}
if (te == 0) {
printf("グリコ!\n");
steps[winner] = steps[winner] + 3;
} else if (te == 1) {
printf("チヨコレイト!\n");
steps[winner] = steps[winner] + 6;
} else {
printf("パイナツプル!\n");
steps[winner] = steps[winner] + 6;
}

return 0;
}
ここまでは、やってみました。どちらかが、30歩になったら、終了するようにしたいのですが・・・
ソースを教えてください。

No.5032

Re:プログラミングでグリコゲームを作りたいのですが・・・
投稿者---雪猫(2003/02/06 16:17:58)


断崖絶壁に立たされている雪猫です(><;

内容的にすごく面白そうで、作りたい・・・のですが、暇がないので、
アドバイスだけ(><;

まず、歩数をカウントするのに配列を使っていらっしゃいますが、
steps[winner] = steps[winner] + 3
これは、使えないと思います。
素直に、 my = my + 3; cpu = cpu + 3 ;
等としたほうがよさそうです。

そうすると、どちらかが30歩というのも、
if文で判定できると思いますので、あとはじゃんけんプログラム個所全体を
while等でループさせればいいだけかなぁっと思います。。。

え〜と、補足ありありの内容ですけど、あとはどなたかにおまかせですぅ〜〜

私もこれで遊びたぃ〜(><;

No.5033

Re:プログラミングでグリコゲームを作りたいのですが・・・
投稿者---雪猫(2003/02/06 16:33:24)


忙しいといいながら面白そうなことはやってみたくなる雪猫です♪

作ってみましたぁ〜 いろいろ不恰好ですけど参考程度にお願いします☆

#include <stdio.h>
#include <string.h>

int main(void)
{
	char jyanken [3][10]={"グー","チョキ","パー"};
	char susume [3][20]={"グリコ","チョコレート","パイナップル"};
	int user,comp;
	int hantei;
	int i;
	int steps_my=0,steps_cpu=0;
	int wk[1];
	int te,winner;

	while(1){
		srand(time(0));

		for(i=0;i<3;i++){
			printf("%d %s\n",i,jyanken[i]);
		}
	
		printf("じゃんけんポイ --> ");
		scanf("%d", &user);

		if (user == 0) {
			printf("あなたは、グーですね\n");
		} else if (user == 1) {
			printf("あなたは、チョキですね\n");
		} else {
			printf("あなたは、パーですね\n");
		}

		comp = rand() % 3;

		if (comp == 0) {
			printf("コンピュータはグーです\n");
		} else if (comp == 1) {
			printf("コンピュータはチョキです\n");
		} else {
			printf("コンピュータはパーです\n");
		}

		hantei = user - comp;
		
		if (hantei == 0) {
			printf("あいこです\n");
		} else if (hantei == 1 || hantei == -2) {
			printf("あなたの負けです\n");
			winner = 1;
		} else {
			printf("あなたの勝ちです\n");
			winner = 0;
		}
	
		if (winner == 0) {
			printf("あなた: ");
			te = user;
		} else if (winner == 1){
			printf("コンピュータ: ");
			te = comp;
		} else {
			printf("あいこ:");
		}

		switch(winner){
			case 0:{
				if (te == 0) {
					printf("グリコ!\n");
					steps_my = steps_my + 3;
				} else if (te == 1) {
					printf("チヨコレイト!\n");
					steps_my = steps_my + 6;
				} else {
					printf("パイナツプル!\n");
					steps_my = steps_my + 6;
				}
				break;
			}
			case 1:{
				if (te == 0) {
					printf("グリコ!\n");
					steps_cpu = steps_cpu + 3;
				} else if (te == 1) {
					printf("チヨコレイト!\n");
					steps_cpu = steps_cpu + 6;
				} else {
					printf("パイナツプル!\n");
					steps_cpu = steps_cpu + 6;
				}
				break;
			}
		}

		printf("MY_step :%d\n",steps_my);
		printf("CPU_step:%d\n",steps_cpu);

		if(steps_my >= 30){
			break;
		}else if (steps_cpu >= 30){
			break;
		}else{
			continue;
		}
	}
	return 0;
}


一応、遊んでみました♪
稚拙な作りですけど、私自身が初心者ということで許してくださいm(__)mペコリ

No.5035

Re:プログラミングでグリコゲームを作りたいのですが・・・
投稿者---mana(2003/02/06 16:52:16)


time.hとstdlib.hをインクルードしなければいけないのでは?
私はBorand c++使用しているんですがそれで動きました。
しかしうまい事作りますね。あなたが初心者なら私はいったいなんなんでしょうか・・・(笑)

No.5037

Re:プログラミングでグリコゲームを作りたいのですが・・・
投稿者---プログ(2003/02/06 17:44:59)


雪猫さんアドバイスありがとうございます。雪猫さんの作ったプログラムで少し遊んでみたんですけど、あいこの場合に先に勝っていたほうに歩数が増えてしまうんですけど・・・あいこの場合は歩数が増えないようにしたいです。

No.5039

Re:プログラミングでグリコゲームを作りたいのですが・・・
投稿者---雪猫(2003/02/06 17:59:59)


これは失礼いたしましたm(__)mペコリ
確認不足でした(><;

以下修正版です〜♪
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>

int main(void)
{
	char jyanken [3][10]={"グー","チョキ","パー"};
	char susume [3][20]={"グリコ","チョコレート","パイナップル"};
	int user,comp;
	int hantei;
	int i;
	int steps_my=0,steps_cpu=0;
	int wk[1];
	int te,winner;

	while(1){
		srand(time(0));

		for(i=0;i<3;i++){
			printf("%d %s\n",i,jyanken[i]);
		}
	
		printf("じゃんけんポイ --> ");
		scanf("%d", &user);

		if (user == 0) {
			printf("あなたは、グーですね\n");
		} else if (user == 1) {
			printf("あなたは、チョキですね\n");
		} else {
			printf("あなたは、パーですね\n");
		}

		comp = rand() % 3;

		if (comp == 0) {
			printf("コンピュータはグーです\n");
		} else if (comp == 1) {
			printf("コンピュータはチョキです\n");
		} else {
			printf("コンピュータはパーです\n");
		}

		hantei = user - comp;
		
		if (hantei == 0) {
			printf("あいこです\n");
			winner = -1;
		} else if (hantei == 1 || hantei == -2) {
			printf("あなたの負けです\n");
			winner = 1;
		} else {
			printf("あなたの勝ちです\n");
			winner = 0;
		}
	
		if (winner == 0) {
			printf("あなた: ");
			te = user;
		} else if (winner == 1){
			printf("コンピュータ: ");
			te = comp;
		} else {
			printf("あいこ:");
		}

		switch(winner){
			case 0:{
				if (te == 0) {
					printf("グリコ!\n");
					steps_my = steps_my + 3;
				} else if (te == 1) {
					printf("チヨコレイト!\n");
					steps_my = steps_my + 6;
				} else {
					printf("パイナツプル!\n");
					steps_my = steps_my + 6;
				}
				break;
			}
			case 1:{
				if (te == 0) {
					printf("グリコ!\n");
					steps_cpu = steps_cpu + 3;
				} else if (te == 1) {
					printf("チヨコレイト!\n");
					steps_cpu = steps_cpu + 6;
				} else {
					printf("パイナツプル!\n");
					steps_cpu = steps_cpu + 6;
				}
				break;
			}
			default:{
				printf("あいこなので、もう一度です〜\n");
				break;
			}
		}

		printf("***現在の得点***\n");
		printf("MY_step :%d\n",steps_my);
		printf("CPU_step:%d\n",steps_cpu);

		if(steps_my >= 30){
			break;
		}else if (steps_cpu >= 30){
			break;
		}else{
			continue;
		}
	}
	
	if(steps_my >= 30)
		printf("\nあなたの優勝♪ おめでと〜\n");
	else if(steps_cpu >= 30)
		printf("\nCPUの勝ちです〜 負けずに再チャレンジ!!\n");
	
	
	return 0;
}


これで大丈夫だと思います。。。
だけど、まだまだ無駄な個所がた〜〜〜っくさんあると思いますので、
仕組みが分かったらいろいろ試してみてくださいね♪
あと、最初のじゃんけんの判定ですが、3以上は全てパーになっています。
ここに、数値の判定条件を入れてみてはいかがでしょうか?
0,1,2以外は、再入力を要求するようにすればもっとゲームらしく
なると思いますよ♪

まだエラーから抜け出せない雪猫からでした☆ミ

No.5040

Re:プログラミングでグリコゲームを作りたいのですが・・・
投稿者---プログ(2003/02/06 18:45:56)


ありがとうございます。実は、明日プログラミングの発表なのです。自分なりにもう一度作ってみてがんばります。
また、いきづまるかもしれないけど・・・