씨언어 야구 게임 코드 에러좀-초급프로그래머-수준정도 되는 프로그래밍인데..ㅠㅠ
개럭시
무쟈게 긴 ㅋㅋ 어쩌다보니.. 야구 게임인데 컴퓨터랑 사람이랑 번갈아가면서 하는건데.,.컴퓨터 인공지능이..생각되로 안되네요..왜그럴까요?..#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)++;
}
}
}
}
-
봄바람
가입인사 부터 하는게 어떨까요?
-
착히
헐 쩌는 소스코드다..
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |
2691678 | C언어 함수 질문이요~!!! | 연보라 | 2025-04-15 |
2691650 | 반복문 | 돋가이 | 2025-04-15 |
2691618 | 링크드리스트 개념 질문이예요 (3) | 맨마루 | 2025-04-15 |
2691592 | 동적할당 이용 배열선언 질문입니다.ㅠㅠ (3) | 허리달 | 2025-04-15 |
2691542 | /=의 용도를 알려주세요 ㅠㅠ! (2) | 아라 | 2025-04-14 |