U E D R , A S I H C RSS

숫자야구/강희경

다시 태어난 뉴우~숫자야구!!!
~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 << "☞볼: 숫자는 맞&#52675;으나 자리수가 틀림" << 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;
	}
}
	    


이 코드를 다시한번 리팩토링하여 보세요. 프로그램을 조금 더 이해하기 쉽게 그리고 코드의 모양을 좀더 이쁘게 바꿀 수 있지 않을까요? 이미 작성했던 코드를 다시 작성한다거나, 기존에 자신이 작성했던 코드를 리팩토링한다면 많은 것을 얻을 수 있을 것입니다. 임인택
오케바리 --강희경
DeleteMe) 어째 어투가 창준이형의 그것이랑 비슷하군.


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.1765 sec