Chapter. 14

김동현·2022년 11월 10일
0

혼자 공부하는 C언어

목록 보기
14/15
post-thumbnail

문제

컴퓨터와 가위, 바위, 보 게임을 하기위한 프로그램을 작성하여라. 단 컴퓨터는 항상 랜덤하게 가위, 바위, 보를 선택한다.
 

1차 시도

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

int main(void)
{
while(1)
{
    char c1;
    char c2;
    printf("가위(s) 바위(r) 보(p) 게임을 시작합니다\n");
    printf("가위 바위 보를 선택하세요");
    scanf("%c",&c1);
    c2=(char)rand()%3; //컴퓨터의 값이 정해짐
    //0: 가위 1: 바위 2: 보
    if(c1=='s'&c2=='0')
    {
        printf("당신은 가위를 냈고 컴퓨터는 가위를 냈습니다.\n");
        printf("당신은 비겼습니다\n");
    }
            else if(c1=='s'&c2=='1')
            {
                
                printf("당신은 가위를 냈고 컴퓨터는 바위를 냈습니다.\n");
                printf("당신은 졌습니다\n");
            }
                else if(c1=='s'&c2=='2')
                {
                    printf("당신은 가위를 냈고 컴퓨터는 보를 냈습니다.\n");
                    printf("당신은 이겼습니다\n");
                }
    
    if(c1=='r'& c2=='0')
    {
        printf("당신은 바위를 냈고 컴퓨터는 가위를 냈습니다.\n");
        printf("당신은 이겼습니다\n");}
            else if(c1=='r'& c2=='1')
            {
                printf("당신은 바위를 냈고 컴퓨터는 바위를 냈습니다.\n");
                printf("당신은 비겼습니다\n");
            }
                else if (c1=='r'&c2=='2')
                {
                    printf("당신은 바위를 냈고 컴퓨터는 보를 냈습니다.\n");
                    printf("당신은 졌습니다\n");
                 }
    
    if(c1=='p'&c2=='0')
    {
        printf("당신은 보를 냈고 컴퓨터는 가위를 냈습니다.\n");
        printf("당신은 졌습니다\n");}
            else if(c1=='p'&c2=='1')
            {
                printf("당신은 보를 냈고 컴퓨터는 바위를 냈습니다.\n");
                printf("당신은 이겼습니다\n");
            }
                else if (c1=='p'&c2=='2')
                {
                   
                    printf("당신은 보를 냈고 컴퓨터는 보를 냈습니다.\n");
                    printf("당신은 비겼습니다\n");
                }
    }

        printf("다음에 또 만나요");
        return 0;   
}

  

2차 시도

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

int main(void){
    char c1;
    int c2;
    printf("\n가위(s) 바위(r) 보(p) 게임을 시작합니다\n");
    while(1){
        printf("가위 바위 보를 선택하세요");
        scanf("%c",&c1);
        c2=(int)rand()%3; //컴퓨터의 값이 정해짐
        //0: 가위 1: 바위 2: 보
        if(c1=='s'&&c2==0)
        {
            printf("당신은 가위를 냈고 컴퓨터는 가위를 냈습니다.\n");
            printf("당신은 비겼습니다\n");
        }
        else if(c1=='s'&&c2==1)
        {
            printf("당신은 가위를 냈고 컴퓨터는 바위를 냈습니다.\n");
            printf("당신은 졌습니다\n");
        }
        else if(c1=='s'&&c2==2)
        {
            printf("당신은 가위를 냈고 컴퓨터는 보를 냈습니다.\n");
            printf("당신은 이겼습니다\n");
        }
        
        if(c1=='r'&&c2==0)
        {
            printf("당신은 바위를 냈고 컴퓨터는 가위를 냈습니다.\n");
            printf("당신은 이겼습니다\n");}
        else if(c1=='r'&&c2==1)
        {
            printf("당신은 바위를 냈고 컴퓨터는 바위를 냈습니다.\n");
            printf("당신은 비겼습니다\n");
        }
        else if (c1=='r'&&c2==2)
        {
            printf("당신은 바위를 냈고 컴퓨터는 보를 냈습니다.\n");
            printf("당신은 졌습니다\n");
        }
        
        if(c1=='p'&&c2==0)
        {
            printf("당신은 보를 냈고 컴퓨터는 가위를 냈습니다.\n");
            printf("당신은 졌습니다\n");}
        else if(c1=='p'&&c2==1)
        {
            printf("당신은 보를 냈고 컴퓨터는 바위를 냈습니다.\n");
            printf("당신은 이겼습니다\n");
        }
        else if (c1=='p'&&c2==2)
        {
            printf("당신은 보를 냈고 컴퓨터는 보를 냈습니다.\n");
            printf("당신은 비겼습니다\n");
        }
    }
    printf("다음에 또 만나요");
    return 0;   
}

  

3차 시도

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

int main(void)

{

    char c1;
    int c2;
    printf("가위(s) 바위(r) 보(p) 게임을 시작합니다\n");
    printf("가위 바위 보를 선택하세요");
    scanf("%c",&c1);
    c2=rand()%3; //컴퓨터의 값이 정해짐
                       //0: 가위 1: 바위 2: 보
    if(c1=='s'&&c2==0)
    {
        printf("당신은 가위를 냈고 컴퓨터는 가위를 냈습니다.\n");
        printf("당신은 비겼습니다\n");
    }
            else if(c1=='s'&&c2==1)
            {
                
                printf("당신은 가위를 냈고 컴퓨터는 바위를 냈습니다.\n");
                printf("당신은 졌습니다\n");
            }
                else if(c1=='s'&&c2==2)
                {
                    printf("당신은 가위를 냈고 컴퓨터는 보를 냈습니다.\n");
                    printf("당신은 이겼습니다\n");
                }
    
    if(c1=='r'&& c2==0)
    {
        printf("당신은 바위를 냈고 컴퓨터는 가위를 냈습니다.\n");
        printf("당신은 이겼습니다\n");}
            else if(c1=='r'&& c2==1)
            {
                printf("당신은 바위를 냈고 컴퓨터는 바위를 냈습니다.\n");
                printf("당신은 비겼습니다\n");
            }
                else if (c1=='r'&&c2==2)
                {
                    printf("당신은 바위를 냈고 컴퓨터는 보를 냈습니다.\n");
                    printf("당신은 졌습니다\n");
                 }
    
    if(c1=='p'&&c2==0)
    {
        printf("당신은 보를 냈고 컴퓨터는 가위를 냈습니다.\n");
        printf("당신은 졌습니다\n");}
            else if(c1=='p'&&c2==1)
            {
                printf("당신은 보를 냈고 컴퓨터는 바위를 냈습니다.\n");
                printf("당신은 이겼습니다\n");
            }
                else if (c1=='p'&&c2==2)
                {
                   
                    printf("당신은 보를 냈고 컴퓨터는 보를 냈습니다.\n");
                    printf("당신은 비겼습니다\n");
                }

        printf("다음에 또 만나요");
        return 0;   
}

위의 코드 상태

  1. 가위 바위 보 를 넣으면 일단 출력까지는 하는 상태 But, 9를 넣었을 때 종료되지 않는다.
  2. 가위 바위 보 를 넣어도 계속해서 반복되지 않고, 한번 출력하면 바로 종료되는 상태
     

문제점을 찾아봅시다.

💡 C2는 컴퓨터의 출력값을 의미한다. 결국엔 0, 1, 2 의 랜덤 값을 뱉어내는 것이고 내가 임의로 0, 1, 2 를

가위, 바위, 보 로 설정한 것이다. 어차피 출력값은 0, 1, 2의 숫자이기에 궅이 char형이 아닌 int형으로 바꾸는게 낫다.

💡 논리 연산자는 &가 아니고 &&이다. &&은 모두가 참일 때만 참인 연산자이다. 💡 getchar(); → 버퍼에 남아있는 개행 문자를 제거하는 것이다.

  

최종 결과!

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

int main(void)

{
printf("가위(s) 바위(r) 보(p) 게임을 시작합니다\n");
while(1)
{
char c1;
int c2;
  
    printf("가위 바위 보를 선택하세요:");
    scanf("%c",&c1);
		getchar();
    c2=rand()%3; //컴퓨터의 값이 정해짐
                       //0: 가위 1: 바위 2: 보
    if(c1=='s'&&c2==0)
    {
        printf("당신은 가위를 냈고 컴퓨터는 가위를 냈습니다.\n");
        printf("당신은 비겼습니다\n");
    }
            else if(c1=='s'&&c2==1)
            {
                
                printf("당신은 가위를 냈고 컴퓨터는 바위를 냈습니다.\n");
                printf("당신은 졌습니다\n");
            }
                else if(c1=='s'&&c2==2)
                {
                    printf("당신은 가위를 냈고 컴퓨터는 보를 냈습니다.\n");
                    printf("당신은 이겼습니다\n");
                }
    
    if(c1=='r'&& c2==0)
    {
        printf("당신은 바위를 냈고 컴퓨터는 가위를 냈습니다.\n");
        printf("당신은 이겼습니다\n");}
            else if(c1=='r'&& c2==1)
            {
                printf("당신은 바위를 냈고 컴퓨터는 바위를 냈습니다.\n");
                printf("당신은 비겼습니다\n");
            }
                else if (c1=='r'&&c2==2)
                {
                    printf("당신은 바위를 냈고 컴퓨터는 보를 냈습니다.\n");
                    printf("당신은 졌습니다\n");
                 }
    
    if(c1=='p'&&c2==0)
    {
        printf("당신은 보를 냈고 컴퓨터는 가위를 냈습니다.\n");
        printf("당신은 졌습니다\n");}
            else if(c1=='p'&&c2==1)
            {
                printf("당신은 보를 냈고 컴퓨터는 바위를 냈습니다.\n");
                printf("당신은 이겼습니다\n");
            }
                else if (c1=='p'&&c2==2)
                {
                   
                    printf("당신은 보를 냈고 컴퓨터는 보를 냈습니다.\n");
                    printf("당신은 비겼습니다\n");
                }

    if(c1=='9')
        break;            
}
   
        printf("다음에 또 만나요");
        return 0;   
}




profile
디자인과 개발을 모두 할줄 아는 능력있는 개발자가 되고싶습니다.

0개의 댓글