간단한 프로그램

야구게임 구현하기

ShadowEye 2021. 6. 9. 23:18

1. 야구게임 규칙??

- 컴퓨터가 고른 중복되지않은 3자리의 숫자를 맞추는 게임.

- 자리수는 맞지않지만 플레이어가 입력한 숫자가 컴퓨터가 고른숫자에 존재하면 볼

- 자리수와 숫자가 맞으면 스트라이크

- 최대한 빠른시간 내에 컴퓨터의 볼을 맞춰라

 

2. 사용된 키워드

- 중복되지 않는 난수발생기

- 컴퓨터의 랜덤값을 저장하는 자료구조 (여기서는 배열을 사용)

 

3.코드

void BaseBallGame() {
	int playerPos[3], comPos[3], result[3];
	bool playerNumUsed[9] = {};
	bool comNumUsed[9] = {};
	int strike = 0;
	int ball = 0;
	int match = 1;
	srand(time(NULL));
	//컴퓨터 랜덤 값 구하기
	int computerRandomPos = 0;
	while (computerRandomPos < 3)
	{
		int randNum = rand() % 8;
		if (comNumUsed[randNum] == false)
		{
			comPos[computerRandomPos] = randNum;
			comNumUsed[randNum] = true;
			computerRandomPos++;
		}
	}


	while (strike < 3)
	{
		cout << match << " 매치" << endl;
		//숫자 사용한지 안한지 확인하는 배열 초기화
		for (size_t i = 0; i < 9; i++)
		{
			playerNumUsed[i] = false;
			comNumUsed[i] = false;
		}

		//디버그용
		//cout << "컴퓨터값" << comPos[0] << " , " << comPos[1] << " , " << comPos[2] << endl;
		for (size_t i = 0; i < 3; i++)
		{
			bool isInputing = true;

			while (isInputing)
			{
				cout << "0부터 8까지수중 하나를 입력해주세요 : " << i + 1 << "번째 수 : ";
				cin >> playerPos[i];
				if (0 <= playerPos[i] && playerPos[i] < 9)
				{
					if (playerNumUsed[playerPos[i]] == false)
					{
						playerNumUsed[playerPos[i]] = true;
						isInputing = false;
					}
					else {
						cout << "입력한값이 이미 존재합니다. 다시 입력해주세요" << endl;
					}
				}
				else {
					cout << "입력한값이 설정범위를 벗어났습니다. 다시 입력해주세요" << endl;
				}
				cout << endl;
			}
		}

		for (size_t i = 0; i < 3; i++)
		{
			cout << i + 1 << "번쨰 라운드" << endl;
			cout << "플레이어 공 " << playerPos[i] << " 이므로 ";
			if (comPos[i] == playerPos[i])
			{
				cout << "스트라이크" << endl;
			}
			else {
				bool isBall = false;
				for (size_t j = 0; j < 3; j++)
				{
					if (comPos[j] == playerPos[i])
					{
						cout  << "볼" << endl;
						isBall = true;
						break;
					}
				}
				if (!isBall)
				{
					cout << "아무것도 아님" << endl;
				}
			}
			cout << endl;
		}
		match++;
		cout << endl;
	}

	cout << "3 스트라이크 게임오버 아웃~~~~~" << endl;
	cout << "=============================" << endl;
	cout << "전적 총 " << match << "매치";
}

4.결과

Acedemy_20210608_3.cpp
0.01MB