#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int RCP(int i, int j)
{
char *arr[3]={"바위", "가위", "보"};
if(i<j)
{
if(i==1 && j==3)
{
printf("당신은 바위 선택, 컴퓨터는 보 선택, 당신이 졌습니다! \n");
return 0; //패배시 -1 리턴
}
printf("당신은 %s 선택, 컴퓨터는 %s 선택, 당신이 이겼습니다! \n", arr[i-1], arr[j-1]);
return 1; //승리 시 1 리턴
}
else if(i>j)
{
if(i==3 && j==1)
{
printf("당신은 보 선택, 컴퓨터는 바위 선택, 당신이 이겼습니다! \n");
return 1;
}
printf("당신은 %s 선택, 컴퓨터는 %s 선택, 당신이 졌습니다! \n", arr[i-1], arr[j-1]);
return 0;
}
else if(i==j)
{
printf("당신은 %s 선택, 컴퓨터는 %s 선택, 비겼습니다! \n", arr[i-1], arr[j-1]);
return -1; //무승부 시 -1 리턴
}
}
int main(void)
{
int com,result,choose,win=0, draw=0;
//srand((int)time(NULL));
while(1)
{
srand((int)time(NULL));
com = rand()%3+1;
printf("바위는 1, 가위는 2, 보는 3: ");
scanf("%d \n", &choose);
result=RCP(choose, com);
if(result==1) win++;
else if(result==-1) draw++;
else if(result==0) break;
}
printf("\n 게임의 결과 : %d승, %d무", win, draw);
return 0;
}
아직 놓치는게 많더라구..
댓글보고 살짝 손보니까 전보단 나아졌는데 아직 이상해
일단 첫 입력을 두번받고
다음 반복때 자주 프로그램이 꺼져(그냥 cmd자체가 종료됨)
뭐가 문제일까.. 독학 코린이 넘모 힘들다
아직 이딴거만들고있는거 보면 너는 답이없다 ㅋㅋ
너도 첨할땐 저랬으면서 먼 답이 없다야 열심히 잘하면 될듯
흑흑 넘모하노.. 아직 코린이야
\n을 없애셈
scanf("%d \n", &choose);을 scanf("%d",&choose);로
왜 2번 인가했는데, 님이 입력할때 \n을 추가해줘서 그래요. 입력 방식에 맞춰서 \n이 들어가도록 되거든요 쉽게 설명 하면 입력이 3:5일 때 3월5일로 출력하는 코드는 scanf("%d:%d,&month,&day); printf("%d월%d일",month,day); 이런식으로요 \n을 넣는다는건 이런의미로 입력받겠다는 뜻이라 님이 2번입력받는다고 착각하신듯
\n은 라인개행문자라 님이 아무꺼나 입력하면 개행이 되니까요
라인개행문자: 다음 줄로 넘기는 문자
와 대박 고마워ㅜㅜ 함수호출하면서 자동 줄변환 일어나는거지?
꺼지는건 printf("당신은 %s 선택, 컴퓨터는 %s 선택, 당신이 졌습니다! \n", arr[i-1], arr[j-1]); return 0; 에 return 0;이 들어가서 그래요 이걸 지우면 되는데, 승 무를 계속 출력되게 하려면 코드를 수정해야할듯
위의 이겼습니다랑 무승부가 안끝나는 이유는 return 1;이랑 return -1; 이 return 0;이랑 다른 의미라 그래요 return 0;은 정상작동이되었다는 의미고 1;은 작동은 되었는데, 어디가 문제가 있다는 의미고, -1은 코드에 문제가 있다는 뜻인데, 요즘은 잘 사용안하는 코드라 형식적으로 이렇다 정도로만 아시면 될것같아요
네네 위의 함수호출하면서 자동 줄변환이 일어난다고생각하시면 될것같아요
진짜 고마워요.. 내 생각대로 되지는 않네 ㅜ 재능없는건 통감하는데 그냥 접을까여.. 노력도 노력이지만 재능도 중요하다는데
scanf 할때 띄어쓰기+\n 빼고 그냥 %d만 쓰셈