제가 가르치는 학생들 참고자료로 만든 가위바위보 게임입니다.
1인칭이고요. 컴퓨터 플레이어는 최소 1명부터 최대 255명(char)까지로
조정해서 할수 있습니다.(4명만되도 거의 비김 ^^ 아시죠)
승패는 나의 관점에서만 처리하도록 했습니다.
로직 자체는 기초과정중심으로 if, for, while문으로만 만들었습니다.
다른곳은 볼꺼없고 여러명의 컴퓨터 유저들과의 승패 처리부분만 참고하세요.
워낙 기본적로직으로만 구현해놓았습니다. 초보자 입장에서 볼수있도록.
버그신고는debuger@gmail.com으로 보내주시고요. 이거 할당시 워낙
실력이 허접해서 문제가 있을수도 있습니다. 127기 님들에게 조금이나마
도움이 될까 걍 올립니다. 그럼 열심히들 하시고 저희보다 훨씬낳은 실력을
가지실거라 믿습니다. 그럼 즐코딩 하세요.(장샘이 즐쓰지말랬는데....ㅈㅅ OTL)
wikix 문법을 잘몰라 주석등은 고치기 해서 보세요. ㅈㅅ.
127기 (if, for, while)참고자료 [제작 : 김경진]
[소스]==================================================================
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#define GAWE 1 // 가위
#define BAWE 2 // 바위
#define BOWOO 3 // 보
#define MAXUSER 4 // 최대 컴퓨터 유저
#define OUTFLAG 4 // 나가기
#define GAMECNT 3 // 1 가위 2 바위 3 보 (전체 3가지 경우의 수)
unsigned char me; // 내가 낸 가위바위보
unsigned char p[MAXUSER]; // 컴퓨터들이 낸 가위바위보
unsigned char win, moo, lose; // 나의 승패값을 가진 변수들
unsigned char Twin, Tmoo, Tlose; // 한판이 진행되는동안의 상황의 승부값을 가지는 임시변수
void main() {
srand((unsigned)time(NULL));
while(1)
{
system("cls"); // 화면갱신
// 가위 바위 보 입력 (나, 플레이어 1~3)
printf("입력1.가위/ 2.바위/ 3.보/ 4.나가기 : ");
scanf("%d", &me);
if (me == OUTFLAG) // 나가기
{
printf("나가기를 누르셨습니다.\n");
break;
}
for(int cnt=0; cnt < MAXUSER; cnt++)
{
p[cnt] = (rand()%GAMECNT) + 1; // 컴퓨터들의 가위바위보 값 셋팅
}
// 승패 판정
for(cnt=0; cnt < MAXUSER; cnt++)
{
if(me == GAWE) // 내가 가위 를 냈을경우
{
if(cnt < 1) printf("당신은 가위를 내셨습니다.\n");
switch(p[cnt])
{
case GAWE: // 컴퓨터가 가위를 냈을경우
++Tmoo;
break;
case BAWE: // 컴퓨터가 바위를 냈을경우
++Tlose;
break;
case BOWOO: // 컴퓨터가 보를 냈을경우
++Twin;
break;
}
}
else if(me == BAWE) // 내가 바위 를 냈을경우
{
if(cnt < 1) printf("당신은 바위를 내셨습니다.\n");
switch(p[cnt])
{
case GAWE: // 컴퓨터가 가위를 냈을경우
++Twin;
break;
case BAWE: // 컴퓨터가 바위를 냈을경우
++Tmoo;
break;
case BOWOO: // 컴퓨터가 보를 냈을경우
++Tlose;
break;
}
}
else if(me == BOWOO) // 내가 보 를 냈을경우
{
if(cnt < 1) printf("당신은 보를 내셨습니다.\n");
switch(p[cnt])
{
case GAWE: // 컴퓨터가 가위를 냈을경우
++Tlose;
break;
case BAWE: // 컴퓨터가 바위를 냈을경우
++Twin;
break;
case BOWOO: // 컴퓨터가 보를 냈을경우
++Tmoo;
break;
}
}
}
//가위 바위 보 승패 판정[학생들이 제일 어려워했던부분]
if(((Twin > 0) && (Tmoo >= 0)) && (Tlose == 0)) ++win; /// 나의 승리조건
else if((Twin == 0) && ((Tmoo >= 0) || (Tlose > 0))) ++lose; // 나의 패 조건
else ++moo; // 나의 무승부__
printf("승 : %d / 패 : %d / 무 : %d \n", win, lose, moo); // 결과 출력
Twin = Tmoo = Tlose = 0; // 임시 승패상황변수 초기화
//컴퓨터들이 낸 가위 바위 보출력 화면
for(cnt=0; cnt < MAXUSER; cnt++)
{
switch(p[cnt])
{
case GAWE:
printf("플레어어%d께서 가위를 내셨습니다.\n", cnt+1);
break;
case BAWE:
printf("플레어어%d께서 바위를 내셨습니다.\n", cnt+1);
break;
case BOWOO:
printf("플레어어%d께서 보를 내셨습니다.\n", cnt+1);
break;
}
}
getch();
}
}