게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
신나는 c언어 질문
게시물ID : computer_5796짧은주소 복사하기
작성자 : 씐난다
추천 : 0
조회수 : 1251회
댓글수 : 5개
등록시간 : 2011/05/02 02:01:13
야구게임을 짜봤는데 컴파일 에러는 없는데 숫자를 입력한후 줄바뀌자마자
야구게임.exe의 작동이 중지되었습니다 하고 문제가 생깁니닷 뭐가 문제이죠??
그리고 어떤 경우 이런 현상이 일어나는가용
오유 괴수분들 부탁해요...

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>

#define MAX_ANS 3  //답의 개수
#define MAX_COUNT 10  //총 시도할수있는 횟수

void game_start();  //게임을 시작하는 함수
void make_ans();  //답을 만드는 함수
void input_ans();  //답을 입력하는 함수(0~9까지의 수가 아니면 경고음)
void check_ans();  //답을 체크하는 함수

char answer[MAX_ANS];  //컴퓨터 답
char my_deci[MAX_ANS];  //내가 입력한 답

int strike=0;
int ball=0;
int out=0;

int main(void){
int conti;
puts("********************* 야구게임 made by xxx *********************");
puts("게임설명");
puts("0에서 9까지의 세 수를 입력하여 컴퓨터가 생각한 수를 맞추는 게임.");
puts("총 10번의 기회가 있으며 입력한 숫자와 순서가 맞으면 strike,");
puts("숫자는 맞지만 순서가 틀리면 ball, 숫자가 틀리면 out이 출력됩니다.");
puts("");

while(1){
game_start();                                //게임을 시작해줌
puts("새로운 게임을 하시겠습니까?? y/n");
conti=getche();                              //처음 게임이 끝나고 y or n 을 눌러서
if(conti!='y') printf("\a");                 //더할껀지 말껀지 결정
else if(conti=='n') break;
}

return 0;
}

void game_start(){
int i;
int count=0;

puts("게임을 시작합니다.");

make_ans();                    //답을 만들고

for(i=0;i<MAX_COUNT;i++){
printf("%d번째 도전!!\n",count+1);
puts("세 수를 연속해서 입력하세요.");
input_ans();               //세 수를 입력
puts("");
check_ans();               //답을 체크
if(strike==3){
printf("축하합니다. %d번만에 정답을 맞추셨습니다!!!",count+1);
break;
}
else{
printf("%dstrike %dball %dout 입니다.",strike,ball,out);
count++;
}
}
if(count==10)
printf("정답을 찾는데 실패하셨습니다. 정답은 %d %d %d 입니다.",answer[0],answer[1],answer[2]);
}

void make_ans(){
int i,j;

srand((unsigned)time(NULL));

for(i=0;i<MAX_ANS;i++)
answer[i]=rand()%10;       //0~9까지 답에 채워놓고
for(j=1;j<MAX_ANS;j++){
while(1){
if(answer[0]==answer[j])   //겹치는게있으면
answer[j]=rand()%10;   //안겹칠때까지 새로운 값을 다시 채워넣음
else break;
}
}
}

void input_ans(){
int i;

for(i=0;i<MAX_ANS;i++){
while(1){
my_deci[i]=getch();      //getche 쓰면 알파벳 누르면 나오길래 getch로 바꿈...
if(my_deci[i]<'0'||my_deci[i]>'9')
printf("\a");        //0~9아닌거 누르면 경고음!
else break;
}
}
printf("%c %c %c",my_deci[0],my_deci[1],my_deci[2]);  //여기서 출력!
}

void check_ans(){
int i,j;

for(i=0;i<MAX_ANS;i++){
if(my_deci[i]==answer[i])          //순서와 숫자가 맞으면 strike 증가
strike++;
else 
for(j=0;j<MAX_ANS;i++){
if(my_deci[i]==answer[j]) ball++;      //숫자가 맞는게 있으면 ball 증가
else out++;                            //순서도 안맞고 숫자도 맞는게 없으면 out 증가
}
}
}
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호