씨언어 야구 게임 코드 에러좀-초급프로그래머-수준정도 되는 프로그래밍인데..ㅠㅠ
개럭시
무쟈게 긴 ㅋㅋ 어쩌다보니.. 야구 게임인데 컴퓨터랑 사람이랑 번갈아가면서 하는건데.,.컴퓨터 인공지능이..생각되로 안되네요..왜그럴까요?..#includestdio.h
#includestdlib.h
#includetime.hvoid landom(int landom_num[]);
void compare(int user_num[],int landom_num[],int*p_strike,int*p_ball);
int findStrike(int *foranswer, int *answer)
{
int s = 0;
for(int i=0; i3; i++)
{
if(answer[i] == foranswer[i])
s++;
}
return s;
}int findball(int *foranswer, int *answer)
{
int b = 0;
for(int i=0; i3; i++)
{
for(int j=0; j3; j++)
{
if((i != j) && (answer[i] == foranswer[j]))
b++;
}
}return b;
}
void findforanswer(int (* table)[4], int &choice, int *foranswer)
{
foranswer[0] = table[choice][0];
foranswer[1] = table[choice][1];
foranswer[2] = table[choice][2];
}void first(int (*table)[4], int &total)
{int num = 9; //1~9 까지 (0~9까지로 바꾸려면, +1 을 제거하고 9까지)
for(int i=0; inum; i++)
{
for(int j=0; jnum; j++)
{
for(int k=0; knum; k++)
{
if(i!=j && i!=k && j!=k)
{
table[total][0] = i+1;
table[total][1] = j+1;
table[total][2] = k+1;
if(i==j || i==k || j==k)
{
table[total][3] = -1;
}else
{
table[total][3] = 1;
}total++;
}
}
}
}
}void after(int (* table)[4], int *foranswer, int &com_strike, int &com_ball, int total)
{
if((com_strike == 0) && (com_ball == 0)) //아웃처리
{
//foranswer 의 값을 table 에서 찾아 -1 처리
for(int i=0; itotal; i++)
{
if( table[i][0] == foranswer[0] || table[i][0] == foranswer[1] || table[i][0] == foranswer[2] || table[i][1] == foranswer[0] || table[i][1] == foranswer[1] || table[i][1] == foranswer[2] || table[i][2] == foranswer[0] || table[i][2] == foranswer[1] || table[i][2] == foranswer[2])
{
table[i][3] = -1;
}
}
}//같은 strike & ball 값을 가지는 table 값을 찾아서 판단값을 -1 로 결정for(int i=0; itotal ; i++)
{
int s=0, b=0;
s=findStrike(foranswer, table[i]);
b=findball(foranswer, table[i]);
if((s!=com_strike) || (b!=com_ball))
{
table[i][3] = -1;
}
}
}void remove(int (* table)[4], int &total)
{
for(int z=0; ztotal; z++)
for(int i=0; itotal; i++)
{
for(int j=0; jtotal; j++)
{
if(table[j][3] == -1)
{
table[j][0] = table[total-1][0];
table[j][1] = table[total-1][1];
table[j][2] = table[total-1][2];
table[j][3] = table[total-1][3];
table[total-1][3] = -1;
total--;
}
}
}}int main(void) {int landom_num[3],user_num[3];
int strike,ball;
int table[720][4]; //720 = 0~9 :: 504 = 1~9
int total = 0;
int choice = 0;
int answer[3];
int foranswer[3];
int com_strike = 0,com_ball = 0;
int re = 1;
int num = 0;
srand((int)time(NULL));landom(landom_num);//랜덤숫자 발생
printf( 안녕세요 숫자야구에 오신걸 환영합니다.\n\n\n);printf(컴퓨터가 풀어야할 정답을 입력해 주세요 \n(숫자 3개 빈칸으로 띄어쓰기 (1~9 사이숫자)) : );
scanf(%d %d %d, &answer[0], &answer[1], &answer[2]);while(1){
first(table, total);
num++;
choice=rand()%total;
findforanswer(table, choice, foranswer);
printf(================================================\n[%d] 컴퓨터의 선택 : %d %d %d \n, num, foranswer[0], foranswer[1], foranswer[2]);
com_strike = findStrike(foranswer, answer);
com_ball = findball(foranswer, answer);
printf( ------%d strike, %d ball-----\n, com_strike, com_ball);
after(table, foranswer,com_strike,com_ball, total);
remove(table, total);
if(total == 0)
{
printf(\n\n================================================\n입력된 값이 정확한지 확인해 주십시오\n================================================\n);
break;
}
printf((USER) 3개 숫자 입력:);
scanf(%d %d %d,&user_num[0],&user_num[1],&user_num[2]);while(!(user_num[0]!=user_num[1]&&user_num[0]!=user_num[2]&&user_num[1]!=user_num[2])){ //중복숫자 금지용
{
printf(숫자가 중복되었습니다. 중복되지않는 숫자3개를 입력해주세요:);
scanf(%d %d %d,&user_num[0],&user_num[1],&user_num[2]);
}
}
compare(user_num,landom_num,&strike,&ball);printf(%d스트라이크 %d볼\n\n,strike,ball);
if(com_strike == 3){
printf(컴퓨터는 %d번만에 성공하였습니다.\n, num);
printf(%d,total);}}
&return 0;
}
void landom(int landom_num[]){
int i;
srand((int)time(NULL));
for(i=0;i3;i++)
landom_num[i]=rand()%9+1;
while(landom_num[0]==landom_num[1]||landom_num[0]==landom_num[2]||landom_num[1]==landom_num[2]){ //중복 될경우 재생성 되게 했습니다.
landom_num[0]=rand()%9+1;
landom_num[1]=rand()%9+1;
landom_num[2]=rand()%9+1;
}
}
void compare(int user_num[],int landom_num[],int *p_strike,int *p_ball){
int i,j;
(*p_ball)=0;
(*p_strike)=0;for(i=0;i3;i++)
{
for(j=0;j3;j++)
{
if (user_num[i]==landom_num[j]){
if(i==j){
(*p_strike)++;
(*p_ball)--; }
(*p_ball)++;
}
}
}
}
-
봄바람
가입인사 부터 하는게 어떨까요?
-
착히
헐 쩌는 소스코드다..
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2676182 | 숫자 순서대로 배열하는법 | 권뉴 | 2024-11-24 |
2676152 | 기본적인거 하나 질문드립니다. | 개미 | 2024-11-24 |
2676124 | 함수선언관련 질문이에요~...털썩..수정완료 (2) | 가지 | 2024-11-24 |
2676092 | C언어 책 (2) | 아서 | 2024-11-24 |
2676065 | 웹사이트 또는 메신저 등에서 원하는 텍스트를 검사하는방법?? (1) | 모든 | 2024-11-23 |
2676033 | 배열 기초연습중 발생하는 에러 ㅠㅜ... | Creative | 2024-11-23 |
2676005 | keybd_event 게임 제어 | 영글 | 2024-11-23 |
2675900 | 진짜기본적인질문 | 글길 | 2024-11-22 |
2675845 | 수정좀해주세요ㅠㅠㅠ | 해골 | 2024-11-21 |
2675797 | 병합 정렬 소스 코드 질문입니다. (2) | 도래솔 | 2024-11-21 |
2675771 | 큐의 활용이 정확히 어떻게 되죠?? | 해긴 | 2024-11-21 |
2675745 | 도서관리 프로그램 질문이요 | 도리도리 | 2024-11-20 |
2675717 | 2진수로 변환하는것! (3) | 동생몬 | 2024-11-20 |
2675599 | for문 짝수 출력하는 법 (5) | 널위해 | 2024-11-19 |
2675575 | Linux 게시판이 없어서.. | 첫삥 | 2024-11-19 |
2675545 | 구조체 이용할 때 함수에 자료 넘겨주는 것은 어떻게 해야 하나요? | 아연 | 2024-11-19 |
2675518 | 사각형 가로로 어떻게 반복해서 만드는지좀.. 내용 | 신당 | 2024-11-18 |
2675491 | !느낌표를 입력하는것은 어떻게합니까~~?ㅠㅠ (5) | 사지타리우스 | 2024-11-18 |
2675411 | 파일입출력으로 받아온 파일의 중복문자열을 제거한 뒤 파일출력 | 앨버트 | 2024-11-17 |
2675385 | 링크드리스트 주소록 질문드립니다. (1) | 겨루 | 2024-11-17 |