다시 태어난 뉴우~숫자야구!!!
~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; } }
이 코드를 다시한번 리팩토링하여 보세요. 프로그램을 조금 더 이해하기 쉽게 그리고 코드의 모양을 좀더 이쁘게 바꿀 수 있지 않을까요? 이미 작성했던 코드를 다시 작성한다거나, 기존에 자신이 작성했던 코드를 리팩토링한다면 많은 것을 얻을 수 있을 것입니다. 임인택