C언어

본문 바로가기
사이트 내 전체검색


C언어
C언어

3. 가위바위보 게임(1)

페이지 정보

작성자 관리자 댓글 0건 조회 336회 작성일 22-10-03 08:47

본문

3. 가위바위보 게임(1)

조건문과 rand함수를 활용한 가위바위보게임을 만들어 보겠습니다.


1. 사용자와 컴퓨터 입력받기


사용자는 scanf()함수로 입력받고, 컴퓨터는 rand()함수로 임의의 수를 선택합니다.

 srand(time(NULL)); 명령은 컴퓨터가 임의의 수를 선택할 때 규칙적인 선택을 없애기 위해 사용합니다. 

사용자는 입력받고, 컴퓨터는 임의의 수를 선택했다면, 사용자와 컴퓨터의 입력을 출력합니다.


(1) 소스코딩


파일명 main.c

#include <stdio.h>

#include <stdlib.h>

#include<time.h>


int main(int argc, char *argv[]) {


    int you, com;

    

    // 사용자 입력받기 

    printf("가위(1), 바위(2), 보(3)를 입력하세요 : ");

    scanf("%d", &you);

// 컴퓨터 : 가위,바위,보 선택하기 

    srand(time(NULL));

    com = rand() % 3 + 1;

// 출력하기

printf("YOU  vs  COM \n"); 

if(you == 1) printf("가위");

else if (you ==2) printf("바위");

else if (you ==3) printf("보");

printf("  vs  "); 

if(com == 1) printf("가위");

else if (com ==2) printf("바위");

else if (com ==3) printf("보");

printf("\n");


// 게임 판정하기


return 0;

}


(2) 실행하기 


가위(1), 바위(2), 보(3)를 입력하세요 : 1

YOU  vs  COM

가위  vs  보


여러번 실행하여 다르게 입력해봅니다.



2. 가위바위보 게임 판정하기


위 소스를 수정합니다. 

아래부분에 조건문을 활용하여 게임의 결과를 판정합니다.


(1) 소스코딩


#include <stdio.h>

#include <stdlib.h>

#include<time.h>


int main(int argc, char *argv[]) {


    int you, com;

    

    // 사용자 입력받기 

    printf("가위(1), 바위(2), 보(3)를 입력하세요 : ");

    scanf("%d", &you);

// 컴퓨터 : 가위,바위,보 선택하기 

    srand(time(NULL));

    com = rand() % 3 + 1;

// 출력하기

printf("YOU  vs  COM \n"); 

if(you == 1) printf("가위");

else if (you ==2) printf("바위");

else if (you ==3) printf("보");

printf("  vs  "); 

if(com == 1) printf("가위");

else if (com ==2) printf("바위");

else if (com ==3) printf("보");

printf("\n");

// 게임 판정하기  

/*

경우의 수는 이겼다, 졌다, 비겼다.

3가지 경우이므로 if() 조건문을 통해 조건을 입력한다.

비겼을 때 draw!를 출력하고, 

이겼을 때 You WIn !를 출력한다.

졌을 때는 You Lost!를 출력한다.

*/


if(you == com) 

printf("draw !\n");

else if(you == 1 && com == 3 || you == 2 && com == 1 || you == 3 || com ==2)

printf("You Win ! \n");

else 

printf("You Lost ! \n");

return 0;

}



(2) 실행하기


가위(1), 바위(2), 보(3)를 입력하세요 : 1

YOU  vs  COM

가위  vs  가위

draw !


가위(1), 바위(2), 보(3)를 입력하세요 : 2
YOU  vs  COM
바위  vs  가위
You Win !

여러번 실행하여 결과를 확인합니다.


3. 게임 판정하기(2)

기본적인 판정방법은 이기는 경우의 수를 모두 조건문에 추가하는 것입니다.
you == 1 && com == 3 : 사용자가 가위이고 컴퓨터가 보일때
you == 2 && com == 1 : 사용자가 바위이고 컴퓨터가 가위일때
you == 3 && com == 2 : 사용자가 보이고 컴퓨터가 바위일때 사용자가 이기게 된다.

규칙성을 이용하여 최적화하는 방법이 있다.
 가위(1), 바위(2), 보(3) 순서를 보면 가위는 바위에게 지고, 바위는 보에게 지고, 보는 가위에게 지는 규칙성이 있다.
이것을 수식으로 표현하여 수정하면 다음과 같다.

if (com == you) printf("draw. \n");
else if (com > (you + 1)%3) printf("You Win. \n");
else printf("You Lost. \n");


댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.