じゃんけん

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

じゃんけん

#1

投稿記事 by ddd » 3年前

ここからの勝敗判定がわかりません。
また、あいこの場合勝敗がつくまで繰り返し方も教えてほしいです。

コード:


#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main()
{
	int n = 0;
	int c = 0;
	int gcp = 0;//相手
	int you;
	
	


	srand(time(NULL));
	printf("何人\n");
	scanf_s("%d", &n);
	printf("%d人でします\n", n);

	you = (rand() % 3);
	switch (you)
	{
	case 0:printf("あなたの手はグー\n");  break;
	case 1:printf("あなたの手はチョキ\n");  break;
	case 2:printf("あなたの手はパー\n");  break;
	}


	while (c < n-1)
	{
		gcp = (rand() % 3);
		
		c = c + 1;
		switch (gcp)
		{
		case 0:printf("敵の手はグー\n");  break;
		case 1:printf("敵の手はチョキ\n");  break;
		case 2:printf("敵の手はパー\n");  break;
		}
	}
	
	

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: じゃんけん

#2

投稿記事 by みけCAT » 3年前

オフトピック
内容からhhdhさんのn人でじゃんけんの続きと考えられますが、投稿者の名前が異なります。
いい加減な名前を使う行為、および名前を複数利用して質問する行為はフォーラムルール違反です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ddd

Re: じゃんけん

#3

投稿記事 by ddd » 3年前

申し訳ありません。以後気お付けます。

アバター
あたっしゅ
記事: 663
登録日時: 13年前
住所: 東京23区
連絡を取る:

Re: じゃんけん

#4

投稿記事 by あたっしゅ » 3年前

 とりあえず、2人の時は、

viewtopic.php?t=452
ジャンケンプログラムを作ろう!- ミクプラの過去ログ(ja)

これ。

 3人とかの時は、グーの数、チョキの数、パーの数を数えてみて、

1)グー、チョキ、パー全部あればあいこ、
2)グーしかなければあいこ、
3)チョキしかなければあいこ、
4)パーしかなければあいこ

負けた人が減っていくので、残りが一人になるまで、とか自分が負けるまで繰り返す、てな感じで。
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。

中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。

アバター
あたっしゅ
記事: 663
登録日時: 13年前
住所: 東京23区
連絡を取る:

Re: じゃんけん

#5

投稿記事 by あたっしゅ » 3年前

とりあえず、動いたやつを張っておく。

プログラミングの世界へ、ようこそ。
まず、配列(array アレイ)という観念を学んでください。

コード:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

const char* janken[3] = {
	"グー",
	"チョキ",
	"パー"
};

bool checkDraw(int* te)
{
	if ((te[0] > 0) && (te[1] > 0) && (te[2] > 0)) {
		printf("あいこ\n");
		return true;
	}
	if ((te[0] == 0) && (te[1] == 0)) {
		printf("あいこ\n");
		return true;
	}
	if ((te[1] == 0) && (te[2] == 0)) {
		printf("あいこ\n");
		return true;
	}
	if ((te[0] == 0) && (te[2] == 0)) {
		printf("あいこ\n");
		return true;
	}

	return false;
}


int main()
{
	int n = 0;
	int c = 0;
	//int gcp = 0; //相手
	//int you;     // 自分は「プレイヤー[0]」== gcp[0]

	srand(time(NULL));
	printf("何人\n");
	scanf_s("%d", &n);
	getchar();
	printf("%d人でします\n", n);

	int* gcp = (int*)malloc( sizeof(int)*n );

	while (n > 1) {
		for (int i = 0; i < n; i++) {
			gcp[i] = (rand() % 3);

			printf("プレイヤー[%d]の手は%s\n", i, janken[gcp[i]]);
		}
		{
			int te[3] = {};

			te[0] = 0;
			te[1] = 0;
			te[2] = 0;

			for (int i = 0; i < n; i++) {
				te[gcp[i]]++;
			}
			for (int i = 0; i < 3; i++) {
				printf("%sは%d人 ", janken[i], te[i]);
			}

			if (checkDraw(te)) {
				// なし
			}
			else {
				if (te[0] == 0) {
					printf("%sの勝ち\n", janken[1]);
					if (gcp[0] == 2 ) {
						n = 0;
					}
					else {
						n = n - te[2];
					}
				}
				if (te[1] == 0) {
					printf("%sの勝ち\n", janken[2]);
					if (gcp[0] == 0) {
						n = 0;
					}
					else {
						n = n - te[0];
					}
				}
				if (te[2] == 0) {
					printf("%sの勝ち\n", janken[0]);
					if (gcp[0] == 1) {
						n = 0;
					}
					else {
						n = n - te[1];
					}
				}
			}
			getchar();
		}
	}
	if (n == 0) {
		printf("プレイヤー[0]の負け\n");
	}
	else {
		printf("プレイヤー[0]の勝ち\n");
	}

	free( gcp );
	return EXIT_SUCCESS;
}

VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。

中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。

返信

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