본문 바로가기
C 언어/C 문제 풀이

[C] 문제 6 (컴퓨터와 가위바위보 3판 2선승제)

by 후야- 2024. 3. 15.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
	// 가위바위보 게임
	/*
		컴은 랜덤하게 아이템(가위,바위,보) 을 내고,
		유저는 입력을 통해서 아이템(가위,바위,보) 을 낸다.
		둘을 비교해서 승패를 가르는 게임

		입력 : 가위 0, 바위 1, 보 2

		가위는 보를 이긴다
		바위는 가위를 이긴다
		보는 바위를 이긴다

		3판 2선승제 가위바위보 게임을 작성하시오
	*/

	// com , player
	// com 랜덤으로 만들기
	// player 입력(입력은 0 , 1 , 2)
	// player 출력 작성
	// 만약 player가  0(가위)을 냈을 때
	//		com == 0
	//			비겼습니다
	//		com == 1
	//			졌습니다.
	//		com == 2
	//			이겼습니다.	
	// count 반복을 해야함
	// 승리할때마다 count 1나씩증가
	// count 2 개 이상이면 승리 // 그외 패배
	// 만약 두번 이겼다면 승리    
	//		그외 패배			

	int com, player = 0;
	int i;
	int count = 0;
	for (i = 0; i < 3; ++i)
	{
		srand(time(NULL));
		com = rand() % 3;   // 컴퓨터 랜덤 (0 가위 , 1 바위, 2 보)

		printf("무엇을 내시겠습니까? <<가위 0 / 바위 1 / 보 2>> : ");
		scanf_s("%d", &player);

		if (player == 0)   // player 가 가위 0 냈을 경우
		{
			if (com == 0)  // com 이 가위 0 냈을 경우
			{
				printf("비겼습니다.\n");
			}
			else   // com 이 가위를 내지 않았을 경우
			{
				if (com == 1)  // com 이 바위 1 냈을 경우
				{
					printf("졌습니다.\n");
				}
				else     // com 이 0 가위 , 1 바위를 내지 않았을 경우
				{
					if (com == 2)    // com 이 2 보를 냈을 경우
					{
						printf("이겼습니다.\n");
						count++;
					}
				}
			}
		}
		if (player == 1)   // 플레이어가 바위 1 냈을 경우
		{
			if (com == 0)
			{
				printf("이겼습니다.\n");
				count++;
			}
			else
			{
				if (com == 1)
				{
					printf("비겼습니다.\n");
				}
				else
				{
					if (com == 2)
					{
						printf("졌습니다.\n");
					}
				}
			}
		}
		if (player == 2)   // 플레이어가 2 보를 냈을 경우
		{
			if (com == 0)
			{
				printf("졌습니다.\n");
			}
			else
			{
				if (com == 1)
				{
					printf("이겼습니다.\n");
					count++;
				}
				else
				{
					if (com == 2)
					{
						printf("비겼습니다.\n");
					}
				}
			}
		}
	}

	if (count == 2)
	{
		printf("\n****>> %d판을 이겼어요 승리!! <<****\n", count);
	}
	else
	{
		printf("\n****>> 졌어요 ㅠㅠ <<****\n");
	}
	return 0;
}

2승 못했을 경우

 

2승 했을 경우