ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 가위바위보 프로그램
    프로그래밍/C and C++ 2005. 7. 13. 06:53

    제가 가르치는 학생들 참고자료로 만든 가위바위보 게임입니다.


    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();


     }

    }

    댓글