とりあえず、動いたやつを張っておく。
プログラミングの世界へ、ようこそ。
まず、配列(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;
}