간단한 프로그램
야구게임 구현하기
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.결과