easy software

C언어 난수를 이용한 가위 바위 보 게임 본문

C언어/기타

C언어 난수를 이용한 가위 바위 보 게임

JAVA 웹개발자 2015. 1. 31. 16:23

안녕하세요. 저번 글에 이어서 이번에도 난수를 이용한 예제를 보여드리겠습니다.

 

제목처럼 가위 바위 보 게임인데요, 규칙은 아래와 같습니다.

 

 

1. 사용자로부터 바위1 가위2 보3 중에서 하나를 입력받는다.

 

2. 컴퓨터는 난수 생성을 통해 바위1 가위2 보3 중에서 하나를 선택한다.

 

3. 이 둘을 비교해서 승자와 패자를 가려준다.

 

4. 프로그램의 진행은 사용자가 질 때까지 무한반복한다.

 

5. 마지막에서는 승과 무승부횟수를 출력해준다.

 

 

처음에 이 문제를보고, 난수생성함수와 승패결정 함수를 각각 만들고

 

main에서는 함수호출과 간단한 비교만 해주려고 하다가

 

저같이 C언어에 익숙하지 않은 분들은 헷갈려 하실 수 있다는 생각이 들어서

 

함수를 생성하지않고 main에 절차적으로 코드를 나열했습니다.

 

 

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

 

int main(void){

 

     int input, a;
     int draw = 0, win = 0;

 

     //사용자가 질 때 까지 반복
     while (1){
          printf("바위는 1, 가위는 2, 보는 3: ");
          scanf_s("%d", &input);

  

//srand()와 time()을 이용해서 1~3까지 난수생성
srand((int)time(NULL));
a = rand() % ((3 - 1) + 1) + 1;

 

          //비겼을 때
          if (input == a){


               //난수가 바위이면
               if (a == 1){
                    printf("당신은 바위, 컴퓨터는 바위 선택, 비겼습니다.");
                    draw++;
               }


               //난수가 가위이면
               else if (a == 2){
                    printf("당신은 가위, 컴퓨터는 가위 선택, 비겼습니다.");
                    draw++;
               }


               //난수가 보자기이면
               else{
                    printf("당신은 보자기, 컴퓨터는 보자기 선택, 비겼습니다.");
                    draw++;
               }
          }

 

          //사용자가 이겼을 때
          else if (input > a){


               if (input == 1 && a == 2){
                    printf("당신은 바위, 컴퓨터는 가위 선택, 이겼습니다.");
                    win++;
               }


               else if (input == 2 && a == 3){
                    printf("당신은 가위, 컴퓨터는 보자기 선택, 이겼습니다.");
                    win++;
               }


               else{
                    printf("당신은 보자기, 컴퓨터는 바위 선택, 이겼습니다.");
                    win++;
               }
          }

 

          //사용자가 졌을 때
          else{


               if (input == 1 && a == 3){
                    printf("당신은 바위, 컴퓨터는 보자기 선택, 졌습니다.");
                    break;
               }


               else if (input == 2 && a == 1){
                    printf("당신은 가위, 컴퓨터는 바위 선택, 졌습니다.");
                    break;
               }


               else{
                    printf("당신은 보자기, 컴퓨터는 가위 선택, 졌습니다.");
                    break;
               }
          }


          printf("\n\n");
     }

 

     printf("\n\n");
     printf("게임의 결과 : %d승, %d무", win, draw);

     return 0;
}

 

 

코드가 어떻게 보면 상당히 길고 복잡해 보이네요...

 

제가 주석을 적절히 달아놨고, 간단한 키워드(if, while, break)만 사용했기 때문에

 

코드를 해석하시기는 무척 쉬울 거라 판단됩니다.(아니라면 댓글달아주세요)

 

위의 코드에서 핵심은 적절한 if문과(다른 방법을 사용해도 됩니다),

 

적절한 난수 생성을 하시면 재미있는 게임을 만드실 수 있습니다.

Comments