728x90
컴퓨터가 랜덤으로 뽑은 3개 숫자로 야구게임하기 !
[ 적용조건 ]
▷ 사용자는 1 ~ 9까지 중 3개의 숫자를 뽑아 컴퓨터가 랜덤으로 뽑은 숫자 3개와 비교 ( 중복 X ).
▷ 숫자의 자리와 값이 모두 같으면 strike, 자리는 다르지만 3개의 숫자 중 포함이 되어 있으면 ball.
▷ 3자리 숫자의 자리와 값이 모두 같으면 홈런, 모두 다르면 아웃 !
실행코드
#include <iostream>
#include <time.h>
#include <random>
// 프로젝트. 야구 게임
using std::cout;
using std::cin;
using std::endl;
int main() {
int num1, num2, num3, num;
int comNum[3] = { 0, }, inNum[3] = { 0, }, check[10] = { 0, };
int strike = 0, ball = 0, playCnt = 1;
cout << "◈ ◈ LET'S PLAY BASEBALL GAME ◈ ◈" << endl;
// 3개 숫자 랜덤 추출.
std::srand(time(NULL));
for (int i = 0; i < 3; i++) {
do {
num = std::rand() % 9 + 1;
} while (check[num] == 1);
comNum[i] = num;
check[num] = 1;
}
while (1) {
cout << "\n1 ~ 9 사이의 숫자 3개를 입력 하시오. (이외의 숫자 : 종료)" << endl;
cin >> num1 >> num2 >> num3;
//중복체크
if (num1 == num2 || num2 == num3 || num1 == num3) {
cout << "중복 숫자가 있습니다." << endl;
}
else if (num1 < 1 || num2 < 1 || num3 < 1 || num1 > 9 || num2 > 9 || num3 > 9) {
cout << "게임을 종료하였습니다." << endl;
break;
}
else {
inNum[0] = num1;
inNum[1] = num2;
inNum[2] = num3;
strike = 0;
ball = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (comNum[i] == inNum[j]) {
if (i == j) {
strike++;
}
else {
ball++;
}
}
}
}
if (strike == 3) {
cout << "\n★★★ 홈런 !!! 승리했습니다. ★★★" << endl;
cout << playCnt << "번 만에 맞추셨습니다." << endl;
break;
}
else if (strike == 0 && ball == 0) {
cout << "\n▶▶▶Strike : 0, Ball : 0 → 아웃입니다 ◀◀◀ " << endl;
break;
}
else {
cout << "Strike : " << strike << " Ball : " << ball << endl;
}
playCnt++;
}
}
}
실행결과
느낀 점
: 프로그램을 구현하고 테스트 할 때는 임시로 숫자로 보이게 해서 기능 구현을 완료하였는데,
위에 결과 화면을 캡처할 때는 나도 직접 게임에 참여해서 재밌게 빠져들며 테스트해 볼 수 있었다 ! :D
그리고 이번에는 3개 숫자가 중복이 안되게끔 구현하였는데, 추가로 중복허용 기능으로 구현해 봐도 또 새로울 것 같다.
728x90
반응형
'BE > C++' 카테고리의 다른 글
[C++] 마방진 만들기 (1) | 2023.11.09 |
---|---|
[C++] 배열을 이용한 로또당첨 숫자 맞추기 (2) | 2023.10.26 |
[C++] 타임어택 끝말잇기 게임 (0) | 2023.10.26 |
[C++] 랜덤함수를 이용한 베스킨라빈스31 게임 (0) | 2023.10.26 |
[C++] dynamic_cast (타입 캐스트 연산자) (0) | 2023.09.15 |
댓글