//Daun..
//2011 03
/*4자리숫자로 야구게임
아직은 문자를 입력하면 애러뜸!*/
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
int main()
{
cout <<"\n\n신나는 야구게임!\n\n"; //처음 게임의 제목 입력
cout <<"규칙 : 각자리 숫자는 1-9까지 입니다.\n.총4자리 숫자입니다.\n또한, 각자리수는 전부 달라야합니다.\n\n\n\n"; //규칙설명문구 생성
srand(time(0)); //값 랜덤 생성
int number[4]; //number=컴퓨터가 준 값
int put[4]; //put=입력하는 값의 각 자리수
int putin; //putin=처음입력값
int s,ball; //s=strike갯수,ball=ball갯수,z=버릴꺼(내컴이 똥컴이라해논거)
int b[4]; //ball갯수 더할때 사용할꺼->근데 4로 쓰는게 맞나?
while(1){
for(int t=0;t<=3;t++){
number[t]=rand()%9 +1;
}
if(number[0]!=number[1]&&number[0]!=number[2]&&number[0]!=number[3]&&number[1]!=number[2]&&number[1]!=number[3]&&number[2]!=number[3]){
break;
}
} /*while문-1값을 대입함으로써 항상 돌아가도록 만들엇고,
number은 각각의 자리의 숫자를 컴퓨터가 만들어 준것이다.
단, 각 자리숫자는 모두 달라야 하기 때문에
if절을 이용해서 각자리 숫자가 전부 다른경우 for문을 끝내라는 조건을
달아주었다.*/
cout << number[0]<<number[1]<<number[2]<<number[3] <<endl;//정답 테스트를위해 적어줌->본래에는 지워야함.!!!!!!!!!!!!!!!!!!
cout << "숫자를 입력해 주세요.\n";//숫자를 입력하라는 문구 출력
while(1){
cin >> putin; //숫자를 입력.
put[0]=putin/1000; //1000자리숫자를 put[0]에 입력
put[1]=(putin%1000)/100; //100자리숫자를 put[1]에 입력
put[2]=putin%100/10; //10자리숫자를 put[2]에입력
put[3]=putin%10; //1자리숫자를 put[3]에입력
if(putin>=1000 && putin<10000 && put[0]!=put[1] && put[0]!=put[2]&& put[0]!=put[3] && put[1]!=put[2] && put[1]!=put[3] && put[2]!=put[3]){
// if문을 이용하여 양의 4자리인경우에만 계산을 하라고 함, 각자리수가 다 다른숫자만입력하게 만듬
if(put[0]==number[0]&&put[1]==number[1]&&put[2]==number[2]&&put[3]==number[3]){
cout << "정답입니다!!>_<\n\n 게임이 끝났습니다.\n";
break;
} /*만약 정답을 맞췃을경우에 게임이 끝낫다는 문구와함께
while문을 빠져나오라는 명령을 내립니다*/
else{
b[0]=0;
b[1]=0;
b[2]=0;
b[3]=0;
s=0; /*이것이 처음에는 중요하지 않아 보이나
한번 else과정을 거치고 났을때 남아잇던 값들을 초기화 시키는 역활을 합니다.*/
for(int q=0; q<4;q++){
if(number[q]==put[q]){
s++;
} //for문을 이용하여 strike의 갯수를 파악합니다.
}
if(number[0]==put[1] || number[0]==put[2] ||number[0]==put[3]){
b[0]++;
} //대입한 수의 첫번째 자리 숫자가 ball이 성립하는지 검토합니다.
if(number[1]==put[0] || number[1]==put[2] || number[1]==put[3]){
b[1]++;
} //대입한 수의 두번째 자리 숫자가 ball이 성립하는지 검토합니다.
if(number[2]==put[0] || number[2]==put[1] || number[2]==put[3]){
b[2]++;
} //대입한 수의 세번째 자리 숫자가 ball이 성립하는지 검토합니다.
if(number[3]==put[0] || number[3]==put[1] || number[3]==put[2]){
b[3]++;
} //대입한 수의 세번째 자리 숫자가 ball이 성립하는지 검토합니다.
ball=b[0]+b[1]+b[2]+b[3];//각각 구해논 ball의 갯수를 합합니다.
cout << s << "스트라이크" << ball << "볼" << "입니다.\n\n"<<"***다시입력하세요.\n";//최종적인 문구 출력
} /*else 문의 끝. 정답을 맞추지 못하엿을경우에
계산해야 할것들이 들어있습니다.*/
} /*while문의 끝. 1을 대입함으로써 항상 돌아가도록 만들었으며
이때의 while의 역활은 숫자를 계속해서 대입하라는 문구가 뜨는 역활입니다.
또한 대입시 strike와 ball을 표시해주는것도 있습니다.*/
else {
cout << "4자리 각자리수가 다 다른 정수만 가능합니다.\n 숫자를 다시 입력해 주세요,\n";
} //4자리 정수가 아닌경우에 출력할 값
}
return 0;
}
/*
4자리 숫자로 하는 야구게임
너무 어려워서 처음에는 3자리숫자로 먼저 시작햇다...
그러고나서 바꾸니 금세 하더라;....
처음으로 만든 거대한 코드라서 ㅇ만들고나니 완전 두근두근 신남신남이엿지요
*/
'Code > c/c++' 카테고리의 다른 글
[C++ Code]주소값출력하기 (0) | 2011.07.28 |
---|---|
[C++ Code]재귀함수 (0) | 2011.07.28 |
[C++ Code]스위치연습 (0) | 2011.07.28 |
[C++ Code]소수출력하기 (0) | 2011.07.28 |
[C++ Code]포인터없이 최대값출력하기 (0) | 2011.07.28 |