본문 바로가기
C

C언어 가위 바위 보 게임( 조건문까지만 사용)

by 코드덕후 2022. 8. 31.
728x90

코딩덕후@Youtube.com에서 강의를 하고 있습니다.

 

소스는 까페와 블로그를 통해서 오픈됩니다.

https://cafe.naver.com/coducks/18

 

가위바위보게임 프로젝트 소스

대한민국 모임의 시작, 네이버 카페

cafe.naver.com

 

https://youtu.be/KkC2fjVE0k0

방송에 사용된 소스

 

가위바위보 일반 버전

/*
	가위 , 바위 , 보 
	컴퓨터는 랜덤하게 선택합니다. rand()

	유저가
	비겼을때 같다 유저 == 컴 
	이겼을때 유저에 따라서 판단
	졌을때 

	가위일때
	바위일때
	보일때
*/
#include <stdio.h>
#include <stdlib.h> //< rand() 0~32767
#include <time.h>	//< ctime
//< 초기화 init()
void init(void);
//< 비겼다 , 이겼다 졌다 판단
void isWin(int user, int com,char **msg);
//< 화면출력 render()
void renderMenu(void);

int main(void)
{
	//< 유저선택,컴퓨터선택 
	int user, com;
	//< 가위,바위,보 문자열로 정보 0, 1, 2 
	char* msg[3] = { "가위","바위","보" };

	//< 초기화
	init();
	//< 컴퓨터 선택(랜덤하게)
	com = rand() % 3; 
	//< 메뉴출력
	renderMenu();
	//< 유저선택
	scanf_s("%d", &user);
	//< 판단
	isWin(user, com,msg);
	return 0;
}

//< 초기화 init()
void init(void)
{
	//< 랜덤하게 출력되는 rand()의 시드를 바꿔주는 함수
	srand(time((unsigned int)0));
}

//< 비겼다 , 이겼다 졌다 판단
void isWin(int user, int com, char** msg)
{
	//< 승패판단
	//< 비겼을때
	if (user == com)
	{
		printf("USER : [%s] VS COM : [%s] 비겼습니다.\n", msg[user], msg[com]);
	}
	//< 유저가 가위일때
	else if (user == 0)
	{
		//< 컴이 바위일때 / 보일때
		if (com == 1)
			printf("USER : [%s] VS COM : [%s] 컴승리.\n", msg[user], msg[com]);
		else
			printf("USER : [%s] VS COM : [%s] 유저승리.\n", msg[user], msg[com]);
	}//< 유저가 바위일때
	else if (user == 1)
	{
		//< 컴이 보 / 가위
		if (com == 2)
			printf("USER : [%s] VS COM : [%s] 컴승리.\n", msg[user], msg[com]);
		else
			printf("USER : [%s] VS COM : [%s] 유저승리.\n", msg[user], msg[com]);
	}//< 유저가 보일때
	else if (user == 2)
	{
		//< 컴이 가위 / 바위
		if (com == 0)
			printf("USER : [%s] VS COM : [%s] 컴승리.\n", msg[user], msg[com]);
		else
			printf("USER : [%s] VS COM : [%s] 유저승리.\n", msg[user], msg[com]);
	}
	else
	{
		puts("잘못된 입력을 하셨습니다,~바보 프로그램 종료");
	}

}

//< 화면출력 render()
void renderMenu(void)
{
	puts("◆□◇ 컴선택 완료 ◆□◇");
	//printf("COM선택 : %s\n", msg[com]);
	//< 유저선택 메뉴 출력
	puts(">> 당신의 선택은?");
	printf("가위(0),바위(1),보(2) >> ");
}

 

패턴 가위바위보 버전 

/*
	가위 , 바위 , 보
	컴퓨터는 랜덤하게 선택합니다. rand()

	유저가
	비겼을때 같다 유저 == 컴
	이겼을때 유저에 따라서 판단
	졌을때

	가위일때
	바위일때
	보일때
*/
#include <stdio.h>
#include <stdlib.h> //< rand() 0~32767
#include <time.h>	//< ctime
//< 초기화 init()
void init(void);
//< 비겼다 , 이겼다 졌다 판단
void isWin(int user, int com, char** msg);
//< 화면출력 render()
void renderMenu(void);

int main(void)
{
	//< 유저선택,컴퓨터선택 
	int user, com;
	//< 가위,바위,보 문자열로 정보 0, 1, 2 
	char* msg[3] = { "가위","바위","보" };


	//< 초기화
	init();
	//< 컴퓨터 선택(랜덤하게)
	com = rand() % 3;
	//< 테스트용 컴출력
	//printf("COM선택 : %s\n", msg[com]);
	//< 메뉴출력
	renderMenu();
	//< 유저선택
	scanf_s("%d", &user);
	//< 판단
	isWin(user, com, msg);
	return 0;
}

//< 초기화 init()
void init(void)
{
	//< 랜덤하게 출력되는 rand()의 시드를 바꿔주는 함수
	srand(time((unsigned int)0));
}

//< 비겼다 , 이겼다 졌다 판단
void isWin(int user, int com, char** msg)
{
	//< 승패판단
	//< 비겼을때
	if (user == com)
	{
		printf("USER : [%s] VS COM : [%s] 비겼습니다.\n", msg[user], msg[com]);
	}
	//< 유저가 승리 : 3/ 4/ 5입력시 결과가 다르게 나올수 있음
	else if ((user + 2) % 3 == com)
	{
		printf("USER : [%s] VS COM : [%s] 유저승리.\n", msg[user], msg[com]);
	}
	else
	{
		printf("USER : [%s] VS COM : [%s] 컴승리.\n", msg[user], msg[com]);
	}
}

//< 화면출력 render()
void renderMenu(void)
{
	puts("◆□◇ 컴선택 완료 ◆□◇");
	
	//< 유저선택 메뉴 출력
	puts(">> 당신의 선택은?");
	printf("가위(0),바위(1),보(2) >> ");
}

중간에 주석처리된 테스트용 컴출력을 풀면 화면에 컴퓨터의선택을 출력해서 테스트용으로 

가능합니다.

 

플레이화면 입니다.

 

728x90
반응형
LIST

댓글