다시 태어난 뉴우~숫자야구!!!
~cpp
#include <iostream>
#include <ctime>
using namespace std;
void ballcount();
void strcount();
void manual();
void selection();
void game();
void loading();
void judgment();
int strike, ball, select, count;
int main()
{
selection();
judgment();
cout << endl << "제작: 강희경 두둥~!!" << endl;
loading();
return 0;
}
void ballcount()
{
if(ball == 3)
cout << "쓰리 볼~ " <<endl;
else if(ball == 2)
cout << "투 볼~ "<<endl;
else if(ball == 1)
cout << "원 볼~ "<<endl;
else
cout << endl;
}
void strcount()
{
if(strike == 3 )
cout << "쓰리 스트라이크~ " <<endl;
else if(strike == 2)
cout << "투 스트라이크~ ";
else if(strike == 1)
cout << "원 스트라이크~ ";
}
void manual()
{
cout << "☞숫자야구: 컴퓨터가 랜덤하게 3자리의 숫자를 정하면" << endl;
cout << " 사용자는 그 숫자를 맞추는 것입니다." << endl;
cout << "☞스트라이크: 자리수와 숫자를 둘 다 맞춤," << endl;
cout << " 쓰리스트라이크는 경기 종료~" << endl;
cout << "☞볼: 숫자는 맞췃으나 자리수가 틀림" << endl;
cout << "☞아웃: 다 틀림" << endl;
cout << "☞예: 컴퓨터가 123을 고르면 521는 원스트라이크 원볼," << endl;
cout << " 567은 아웃 !, 123은 쓰리스트라이크!" << endl;
cout << "---------------------------------------------------" << endl;
selection();
}
void selection()
{
char dustbox[10];
cout << "1. 게임 설명 2. 게임 하기" << endl;
cout << "3. 종료" << endl;
cout << "☞ 선택 해주세요:_\b";
if(cin >> select )
{
cout << "---------------------------------------------------" << endl;
game();
}
else
{
cout << "잘못 입력하셨습니다." << endl;
}
}
void game()
{
switch(select)
{
case 1 :
manual();
break;
case 2 :
count = 1;
do{
srand(time(0));
int num = rand() % 899 + 100;
int num_m[3];
num_m[0] = num % 10;
num_m[1] = (num/10) % 10;
num_m[2] = num/100;
if(num_m[0] != num_m[1] && num_m[0] != num_m[2]
&& num_m[1] != num_m[2])
{
cout << "컴퓨터가 숫자를 고르고 있습니다." << endl;
loading();
do
{
cout << endl << "메뉴로 돌아가시려면"
<<" 아무 글자키나 누르세요";
cout << endl << count << "번째 시도☞ "
<< "답을 맞춰 BOA요: ___\b\b\b";
int answer;
if(cin >> answer)
{
if((answer >100) && (answer < 1000))
{
int ans_m[3];
ans_m[0] = answer % 10;
ans_m[1] = (answer/10) % 10;
ans_m[2] = answer/100;
strike = 0;
ball = 0;
for(int i = 0; i<3; i++)
{
for(int j = 0; j<3; j++)
{
if(ans_m[i] == num_m[j])
{
if(i==j)
{
strike++;
}
else
ball++;
}
}
}
count++;
cout << endl;
strcount();
ballcount();
if(strike == 0 && ball == 0)
cout << "아 웃"<<endl;
}
else
cout << "\a잘못 입력하셨군요!!"
<< endl;
}
else
{
cout << "종료합니다." << endl;
count = 0;
strike = 3;
}
}while(strike!= 3);
}
}while(strike!= 3);
break;
case 3 : cout << "종료합니다." << endl;
break;
default : cout << "\a잘못 입력하셨습니다." << endl;
cout << "다시 입력해주세요." << endl << endl;
selection();
}
}
void loading()
{
for(int i = 0; i < 50000000; i++)
{
if(i == 10000000)
cout << "■";
else if(i == 20000000)
cout << "■";
else if(i == 30000000)
cout << "■";
else if(i == 40000000)
cout << "■";
else if(i == 45000000)
cout << "■" << endl;
}
}
void judgment()
{
if(count != 0 && count <= 6)
{
cout << count-1 << "번만에 맞췄습니다." << endl;
cout << "로또에 도전!!!" << endl;
}
else if(count > 5 && count <= 11)
{
cout << count-1 << "번만에 맞췄습니다." << endl;
cout << "참 잘했어요~" << endl;
}
else if(count > 11)
{
cout << count-1 << "번만에 맞췄습니다." << endl;
cout << "초딩!! 즐~" << endl;
}
}
이 코드를 다시한번
리팩토링하여 보세요. 프로그램을 조금 더 이해하기 쉽게 그리고 코드의 모양을 좀더 이쁘게 바꿀 수 있지 않을까요? 이미 작성했던 코드를 다시 작성한다거나, 기존에 자신이 작성했던 코드를
리팩토링한다면 많은 것을 얻을 수 있을 것입니다.
임인택