열혈강의C 컴퓨터와 가위바위보 질문!
비치
질문 제목 : 뭐가 잘못된거죠...질문 요약 :뭐가 잘못된거죠...질문 내용 :
사용자는 입력을 통해 하나를 내는거고 컴퓨터는 난수를 통해 랜덤으로 하나내서 가위바위보를 하는거에요..
사용자가 질경우엔 그냥 게임종료하고요
일단소스에요↓
#includestdio.h
#includeconio.h
#includetime.h
#includestdlib.h
int main()
{
int su; // 플레이어 입력값
int win=0; // 이긴수
int lose=0; // 진수
int draw=0; // 비긴수
int com; // 컴퓨터 입력값
int gamesu=0; // 진행한 게임수
for(;lose!=1;)
{
gamesu++;
for(;1;)
{
printf(가위는 0 바위는 1 보는 2 이에요 어떤걸 낼건가요 ? );
scanf(%d,&su);
printf(\n);
if(su==0)
{
printf(You = 가위 ,);
break;
}
else if(su==1)
{
printf(You = 바위 ,);
break;
}
else if(su==2)
{
printf(You = 보 ,);
break;
}
else
continue;
}
RAND_MAX==2; // 랜덤값을 0,1,2중 하나로 되게 지정
srand((int)time(NULL)); // 랜덤값 하나생성
com=rand(); // 생성된 랜덤값을 컴퓨터에 줌
if(com==0)
printf(Com = 가위);
else if(com==1)
printf(Com = 바위);
else if(com==2)
printf(Com = 보);
printf(\n);
if(su==com)
{
printf(비겼습니다 전적에 1무가 추가됩니다);
draw++;
}
else if(sucom)
{
if(com-su==2) // 2차이는 큰쪽이 짐
{
printf(당신이 이겼습니다 전적에 1승이 추가됩니다);
win++;
}
else // 1차이는 큰쪽이 언제나 승리
{
printf(당신이 졌습니다 전적에 1패가 추가되고 더이상 게임을 진행할수없습니다);
lose++;
}
}
else
{
if(su-com==2) // 2차이는 큰쪽이 짐
{
printf(당신이 졌습니다 전적에 1패가 추가되고 더이상 게임을 진행할수없습니다);
lose++;
}
else // 1차이는 큰쪽이 언제나 승리
{
printf(당신이 이겼습니다 전적에 1승이 추가됩니다);
win++;
}
}
printf(\n\n);
}
printf(\n당신은 총 %d번 게임을 진행하였고 전적은 %d승%d무1패입니다,gamesu,win,draw);
getch();
return 0;
}
그리고 컴파일결과 ↓
컴퓨터가 뭘 냈는지 출력도 안되고 가위바위보중 어떤걸 내도 사용자가 졌다고 하네요...
문제점좀 알려주세요...
-
고딩
그렇군요 감사합니다 ㅎㅎ 해결됬어요
-
초시계
RAND_MAX==2;
RAND_MAX 는 헤더파일에 정의되어 있는 상수로서 값은 32767입니다. 32767 == 2; 이므로 0; 이고 아무 의미가 없습니다.
0,1,2의 값을 가지도록 하려면 com=rand()%3을 해주세요.