ページ 1 / 1
じゃんけん
Posted: 2020年6月08日(月) 20:38
by ddd
ここからの勝敗判定がわかりません。
また、あいこの場合勝敗がつくまで繰り返し方も教えてほしいです。
コード:
#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;
}
}
Re: じゃんけん
Posted: 2020年6月09日(火) 07:32
by みけCAT
オフトピック
内容からhhdhさんの
n人でじゃんけんの続きと考えられますが、投稿者の名前が異なります。
いい加減な名前を使う行為、および名前を複数利用して質問する行為は
フォーラムルール違反です。
Re: じゃんけん
Posted: 2020年6月09日(火) 09:08
by ddd
申し訳ありません。以後気お付けます。
Re: じゃんけん
Posted: 2020年6月11日(木) 20:15
by あたっしゅ
とりあえず、2人の時は、
viewtopic.php?t=452
ジャンケンプログラムを作ろう!- ミクプラの過去ログ(ja)
これ。
3人とかの時は、グーの数、チョキの数、パーの数を数えてみて、
1)グー、チョキ、パー全部あればあいこ、
2)グーしかなければあいこ、
3)チョキしかなければあいこ、
4)パーしかなければあいこ
負けた人が減っていくので、残りが一人になるまで、とか自分が負けるまで繰り返す、てな感じで。
Re: じゃんけん
Posted: 2020年6月11日(木) 21:29
by あたっしゅ
とりあえず、動いたやつを張っておく。
プログラミングの世界へ、ようこそ。
まず、配列(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;
}