UniOn 님의 소스를 플레이하기 편하게 수정해 보았습니다.
UniOn님에게 양해를 좀 구하고,, 올립니다.
삭제를 요청한다면 삭제하겠습니다.
미흡한 실력이지만 그냥 올려봅니다.
별로 쓸모 없어도 봐주세요...
#include <stdio.h>
#include <windows.h>
int main()
{
unsigned int man = 0, computer = 0, M = 0, judge = 0;
static int table[3][3] = { {0,0,0}, {0,0,0}, {0,0,0} },
hist[3] = { 0, 0, 0 };
static char *hand[3] = { "가위", "바위", "보" };
for(;;)
{
system("cls"); //매번 화면을 지움
if( table[M][0] > table[M][1] && table[M][0] > table[M][2])
computer = 1;
else if(table[M][1] > table[M][2])
computer = 2;
else
computer = 0;
printf( "0:가위, 1:바위, 2:보, 다른키:게임종료\n" );
printf( "키를 눌러 선택하세요... : " );
man = getch(); //키를 1자 입력
man -= 0x30; //문자를 정수로
if( !(man == 0 || man == 1 || man == 2) ) //키검사
{
system( "cls" ); //화면 지움
printf( "\n\n게임을 종료하시겠습니까?\nq:종료, 다른키:종료취소" );
man = getch();
if( man != 'q' )
continue;
else
return 0;
}
system( "cls" ); //화면 지움
printf("\n\n플레이어의 선택 : %s\n", hand[man] ); //선택 프린트
printf("컴퓨터의 선택 : %s\n\n", hand[computer] );
judge = ( computer - man + 3 ) %3;
switch(judge) //판단
{
case 0:
printf( "무승부\n\n" );
break;
case 1:
printf( "플레이어의 패\n\n" );
break;
case 2:
printf( "플레이어의 승리\n\n" );
break;
default:
printf( "예외상황 발생\n\n" ); //예외처리
exit(-1);
}
hist[judge]++;
table[M][man]++;
M=man;
printf( " %d승 %d무 %d패\n\n", hist[2], hist[0], hist[1] ); //전적 프린트
sleep(2000); //잠시대기
}
}
//키 입력시 오버도 안나고, 다른키를 눌러서 나오는 오류도 없습니다.
//전적 프린트시 무 와 패 가 바뀌어서 프린트 되는것도 고쳤습니다. |