ページ 11

じゃんけん

Posted: 2021年6月02日(水) 02:40
by 大熊
以下の仕様に従うコードとすること:1度の実行で,1度だけじゃんけんを行う.プログラムを実行する度に異なる結果が得られる(⇔見本コードと同様にtime関数をsrand関数に渡して乱数系列を変更する).完成後の実行ファイルを何度も実行すれば,次ページの全ての動作例を再現できる.次ページの動作例の表示内容を再現する.キーボードからの入力値が1, 2, 3以外の場合は反則である旨をメッセージ表示する.うまく勝敗が表示されません。手直しをお願いします


コード:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
  int hand_com,hand_YOU;
    
  srand(time(NULL)); rand();

    hand_com = rand() % 3 + 1;
    hand_YOU = rand() % 3 + 1;
    printf("*** じゃんけんします ***\n\n");

    if (hand_com == 1)
        printf("COM: グー\n");
    else if (hand_com == 2)
        printf("COM: チョキ\n");
    else
        printf("COM: パー\n");
    if (hand_YOU == 1)
        printf("YOU: グー\n");
    else if (hand_YOU == 2)
        printf("YOU: チョキ\n");
    else
        printf("YOU: パー\n");

    if(hand_YOU==1)
    { printf("YOU:グー\n");
      if(hand_com==1)
    {printf("あいこ!");
    }
    else if(hand_com==2)
    {
     printf("hand_com:チョキ\n");
     printf("あなたの勝ち!");
    }
    else if(hand_com==3)
    {
      printf("hand_com:パー!\n");
      printf("あなたの負け!\n");
    }
    else if(hand_YOU==2)
    {
      printf("hand_YOUチョキ\n");
      if(hand_com==1)
      {printf("hand_comグー\n");
       printf("負け!\n");
      }
    else if(hand_com==2)
    {
      printf("hand_comチョキ\n");
      printf("あいこ!\n");
    }
    else if(hand_com==3)
    {
      printf("hand_comパー\n");
      printf("勝利!\n");
    }
    }
    else if(hand_com==3)
    {
      printf("hand_YOUパー\n");

      if(hand_com==1)
      {
        printf("hand_comグー\n");
        printf("勝利\n");
      }
      
    
    else if(hand_com==2)
    {
      printf("hand_comチョキ\n");
      printf("負け\n");
    }
    else if(hand_com==3)
    {
      printf("hand_comパー\n");
      printf("あいこ!\n");
    }
    printf("\n*** 終了 ***\n");
    return 0;
}


}
    
}
 

Re: じゃんけん

Posted: 2021年6月03日(木) 01:25
by box
なんでプレイヤーの手もランダムに決めさせるんですかね?
手で入力したいんじゃないんですか?

コード:

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

int main(void)
{
    int player, computer;

    srand((unsigned int) time(NULL));
    computer = rand() % 3 + 1;
    do {
        printf("your hand(1:stone, 2:scissors, 3:paper) > ");
        scanf("%d", &player);
        if (player != 1 && player != 2 && player != 3) {
            printf("bad hand\n");
        }
    } while (player != 1 && player != 2 && player != 3);

    // printf("%d %d\n", player, computer);
    if (player == computer) {
        printf("same hand\n");
    }
    else if (player == 1 && computer == 2 ||
        player == 2 && computer == 3 ||
        player == 3 && computer == 1) {
        printf("player win!\n");
    }
    else {
        printf("computer win!\n");
    }
    return 0;
}