반응형


<C언어로 가위바위보 프로그램 만들기>

가위 바위 보 게임을 만들어 보자. 

사용자로부터 가위 바위 보 중에서 하나를 입력받는다. 그리고 컴퓨터는 난수 생성을 통해서 가위 바위 보 중에서 하나를 선택하게 한다.

둘을 비교해서 승자와 패자를 가려주는 프로그램을 작성해보자. 단, 프로그램의 진행은 사용자가 질때까지 계속되어야하고, 마지막에 가서는 게임의 결과(a승 b무)까지 출력해 주도록 하자. 


1 바위 2 가위 3 보 의 가정하에

컴퓨터가 1~3까지 난수를 생성하기위해 3으로나눈나머지의수 012가 나오도록한뒤, +1을 해주어 1,2,3중 하나의 난수가 발생한다.


이후 내가 입력한 숫자와 컴퓨터의 숫자를 합하여 짝수인경우와 홀수인경우를 보면

무승부인경우를 제외하여 

짝수인경우는 1-3 3-1 바위와 보의 경우로 큰수가 이기게된다.

홀수인경우는 2-1, 2-3, 1-2,3-2의 경우로 작은수가 이기게된다.





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
 
int main()
{
    int num;
    int com;
    int comwin=0;
    int win=0;
    int zim=0;
 
    while(comwin==0)
    {
        printf("바위1, 가위2, 보3 :");
        scanf("%d",&num);
 
        srand((int)time(NULL));
        com=rand()%4;
 
        com=com+1;
 
        if(com==num)
        {
            printf("비겼습니다.\n");
        }
        else if((com+num)%2==0)
        {
            if(com>num)
            {
                printf("컴퓨터가 %d,당신이 %d 컴퓨터가 이겼습니다.\n",com,num);
                comwin=1;
                zim++;
            }
            else
            {
                printf("컴퓨터가 %d,당신이 %d 당신이 이겼습니다.\n",com,num);
                win++;
            }            
        }
        else if((com+num)%2==1)
        {
            if(com>num)
            {
                printf("컴퓨터가 %d,당신이 %d 당신이 이겼습니다.\n",com,num);
                win++;
            }
            else
            {
                printf("컴퓨터가 %d,당신이 %d 컴퓨터가 이겼습니다.\n",com,num);
                comwin=1;
                zim++;
            }                    
        }
        
    }
    
    printf("%d승 %d패",win,zim);
}
 
cs
<실행결과>




<가위바위보 표시해주기>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
 
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
 
int main()
{
    int num;//사용자의 선택
    int com;//컴퓨터의 난수
    int comwin=0// 사용자가 질때까지 하기위한 변수
    int win=0//승
    int zim=0//패
    int same=0//무
 
    while(comwin==0//cowin이 0과 같다면 반복한다.(컴퓨터가이긴경우 cowin1로 바꿈)
    {
        printf("바위1, 가위2, 보3 :");
        scanf("%d",&num); //사용자의 선택을 받는다.
 
        srand((int)time(NULL)); //time으로 시드를줌
        com=rand()%3//0~2까지 난수를 발생
 
        com=com+1;//컴퓨터의 난수를 1~3으로
 
        if(com==num) //만약 컴퓨터에서 생성된 난수와 사용자의 선택이 같다면
        {
            printf("비겼습니다.\n"); //비겼습니다 출력
            same++//same 변수(무승부횟수변수)증가
        }
        else if((com+num)%2==0//만약 컴퓨터난수와사용자선택의 합이 짝이라면,
        {
            if(com>num) //컴퓨터가 더 큰수라면,
            {
                printf("컴퓨터가 %d번 보,당신이 %d번 바위 컴퓨터가 이겼습니다.\n",com,num);
                comwin=1//cowin변수가 1이됨
                zim++//zim변수증가
            }
            else //컴퓨터가 더 큰수가 아니라면,
            {
                printf("컴퓨터가 %d번 바위,당신이 %d번 보 당신이 이겼습니다.\n",com,num);
                win++//win변수증가
            }            
        }
        else //같지도않고, 두수의합이 짝수도 아니라면(홀수라면)
        {
            if(num==2//만약 사용자가 2번을 골랐다면,
            {
 
                if(com>num) //com이 3이라면,
                {
                    printf("컴퓨터가 %d번 보,당신이 %d번 가위 당신이 이겼습니다.\n",com,num);
                    win++;
                }
                else //com이 3이 아니라면(1이라면)
                {
                    printf("컴퓨터가 %d번 바위,당신이 %d번 가위 컴퓨터가 이겼습니다.\n",com,num);
                    comwin=1//cowin변수가 1이됨
                    zim++//zim변수증가
                }     
            }
                
            else //사용자가 2도아니고 두수의합이 홀수라면, 2-1의경우 2-3의경우
            {
 
                if(com>num)
                {
                    printf("컴퓨터가 %d번 가위,당신이 %1d번 바위 당신이 이겼습니다.\n",com,num);
                    win++;
                }
                else
                {
                    printf("컴퓨터가 %d번 가위,당신이 %d번 보 컴퓨터가 이겼습니다.\n",com,num);
                    comwin=1;
                    zim++;
                }     
            }            
 
        }
        
    }
    
    printf("%d승 %d패 %d무",win,zim,same);
}
 
cs

<실행결과>




반응형

+ Recent posts