씨언어 야구 게임 코드 에러좀-초급프로그래머-수준정도 되는 프로그래밍인데..ㅠㅠ
개럭시
무쟈게 긴 ㅋㅋ 어쩌다보니.. 야구 게임인데 컴퓨터랑 사람이랑 번갈아가면서 하는건데.,.컴퓨터 인공지능이..생각되로 안되네요..왜그럴까요?..#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)++;
}
}
}
}
-
봄바람
가입인사 부터 하는게 어떨까요?
-
착히
헐 쩌는 소스코드다..
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2685477 | 소수점이하 출력하는거요 | 널위해 | 2025-02-18 |
2685449 | printf배우고있는데요 궁금한게있어요 (8) | 꽃큰 | 2025-02-18 |
2685393 | c언어 질문이요.... | 붕붕 | 2025-02-18 |
2685365 | 윈도우7에서 visual studio c++6.0 (1) | 빛길 | 2025-02-17 |
2685317 | segmentation fault가 나요 | 가람 | 2025-02-17 |
2685292 | 다중스택질문 | 올해1살 | 2025-02-17 |
2685231 | C언어와 닷넷에 대해서 질문!! (2) | 설아 | 2025-02-16 |
2685206 | VisualBasic 과 DEV++ 의 장단점과 만든 파일 호환 가능하나요? | 에드워드 | 2025-02-16 |
2685154 | 배열 크기조절 | 해찬솔 | 2025-02-15 |
2685124 | 수정이거 제가 뭐가 잘못한거죠 ? | 아이돌 | 2025-02-15 |
2685096 | 포인터의 고수분들 모두 보세요!! 제발 ㅠ_ㅠ 헷갈려헷갈려..갈려헷.. (7) | 치킨마루 | 2025-02-15 |
2685045 | 전처리기 질문 | 치에미 | 2025-02-14 |
2685016 | 오류 좀 확인해 주시면 감사하겠습니다 | 초코맛사탕 | 2025-02-14 |
2684917 | 알고리즘을 이용한 행렬의 전치// 문제다운 문제네요. | 뿡뿡 | 2025-02-13 |
2684868 | 양방향 연결리스트에서 실행도중 죽는 이유좀 찾아주세요. (2) | 예다움 | 2025-02-13 |
2684844 | 시계프로그램인데 도저히 모르겠어요ㅠ (1) | 비내리던날 | 2025-02-12 |
2684812 | 레포트좀도와주세요ㅠㅠ (2) | 갈매빛 | 2025-02-12 |
2684780 | 채팅창 흉내내보려고하는데요 ㅜ.ㅜ (1) | 바름 | 2025-02-12 |
2684729 | 내일 시험인데 메모리 그리는것좀 도와주세요 ㅠ (1) | 상처주지마 | 2025-02-11 |
2684701 | 버퍼 관련 질문 3가지 (이전거랑 달라요) | 한국녀 | 2025-02-11 |