C/C++ 언어 rand() 함수를 사용한 묵찌빠 게임 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <stdio.h> // 표준 입출력을 사용하기 위해
#include <stdlib.h> // 랜덤 함수를 사용하기 위해
#include <time.h> // 랜덤함수의 기준을 시간으로 설정하기 위해
 
void Win(int);  // Win함수 선언
void Lose(int);  // Lose함수 선언
int Random(void); // Random함수 선언
 
int main() {
  int a = 0// 도전자의 선택을 입력 받기 위한 변수 a 선언
  int b = 0// 컴퓨터의 선택을 입력 받기 위한 변수 b 선언
 
  // 순서를 정하기 위한 turn 변수 선언 초기값을 0으로 하여 도전자 부터 시작
  int turn = 0;
 
  printf("신나는 묵찌빠 게임~ \n하는법은 알지?\n");
 
  // 게임을 시작을 우선하기 위해 do while문 사용
  do { // 시작
    printf("1(가위), 2(바위), 3(보), 0(종료) 중 하나를 입력하십시오.\n");
    printf("입력 : ");
    fflush(stdin); // 엔터 입력이 남았을 경우 겹치게 되므로 입력을 비워준다.
    scanf("%d", &a); // 도전자의 입력을 받는다.
 
    b = Random(); // 컴퓨터의 입력을 랜덤하게 받는다.
 
    if (a == 1) { // 도전자의 선택이 가위 이고
      if (b == 1) { // 컴퓨터의 선택이 가위 이면
        printf("도전자 = 가위\n컴퓨터 = 가위\n\n");
        Win(turn); // Win함수 호출 파라미터로 turn이 들어간다.
        // 턴에 따라 승리자가 다르다.
      }
      else if (b == 2) { // 컴퓨터의 선택이 바위 이면
        printf("도전자 = 가위\n컴퓨터 = 바위\n\n");
        Lose(turn); // Lose함수 호출 파라미터로 turn이 들어간다.
        // 컴퓨터가 이겼다.
 
        turn = 1// 컴퓨터가 이겼으므로 컴퓨터 턴
      }
      else if (b == 3) { // 컴퓨터의 선택이 보 이면
        printf("도전자 = 가위\n컴퓨터 = 보\n\n");
        Lose(turn); // Lose함수 호출 파라미터로 turn이 들어간다.
        // 도전자가 이겼다.
 
        turn = 0// 도전자가 이겼으므로 도전자 턴
      }
    }
    else if (a == 2) { // 컴퓨터의 선택이 가위 이면
      if (b == 1) { // 컴퓨터의 선택이 가위 이면
        printf("도전자 = 바위\n컴퓨터 = 가위\n\n");
        Lose(turn); // Lose함수 호출 파라미터로 turn이 들어간다.
        // 도전자가 이겼다.
 
        turn = 0// 도전자가 이겼으므로 도전자 턴
      }
      else if (b == 2) { // 컴퓨터의 선택이 바위 이면
        printf("도전자 = 바위\n컴퓨터 = 바위\n\n");
        Win(turn); // Win함수 호출 파라미터로 turn이 들어간다.
        // 턴에 따라 승리자가 다르다.
      }
      else if (b == 3) { // 컴퓨터의 선택이 보 이면
        printf("도전자 = 바위\n컴퓨터 = 보\n\n");
        Lose(turn); // Lose함수 호출 파라미터로 turn이 들어간다.
        // 컴퓨터가 이겼다.
 
        turn = 1// 컴퓨터가 이겼으므로 컴퓨터 턴
      }
    }
    else if (a == 3) { // 컴퓨터의 선택이 보 이면
      if (b == 1) { // 컴퓨터의 선택이 가위 이면
        printf("도전자 = 보\n컴퓨터 = 가위\n\n");
        Lose(turn); // Lose함수 호출 파라미터로 turn이 들어간다.
        // 컴퓨터가 이겼다.
 
        turn = 1// 컴퓨터가 이겼으므로 컴퓨터 턴
      }
      else if (b == 2) { // 컴퓨터의 선택이 바위 이면
        printf("도전자 = 보\n컴퓨터 = 바위\n\n");
        Lose(turn); // Lose함수 호출 파라미터로 turn이 들어간다.
        // 도전자가 이겼다.
 
        turn = 0// 도전자가 이겼으므로 도전자 턴
      }
      else if (b == 3) { // 컴퓨터의 선택이 보 이면
        printf("도전자 = 보\n컴퓨터 = 보\n\n");
        Win(turn); // Win함수 호출 파라미터로 turn이 들어간다.
        // 턴에 따라 승리자가 다르다.
      }
    }
    else if (a == 0// 0을 선택했다면
      return 0// 종료 한다
 
    else // 1,2,3,0이 아닌 값을 입력 하였다면
      printf("잘못 입력하셨습니다.\n");
 
  } while(1); // 0으로 종료가 선택 될때 까지 무한 반복 1은 참이므로
 
  return 0;
}
 
// 컴퓨터의 값을 결정하는 함수
int Random(void// 반환하는 값은 정수형이다.
{
  int value = 0;
 
  srand(time(NULL)); // 랜덤 값을 시간으로 설정한다.
  value = rand() % 3 + 1// value에 3으로 나눈 나머지 + 1 즉, 1~3까지의 값
 
  return value; // 정수형 value를 반환 한다.
}
 
// 졌을 때 출력을 위해서
void Lose(int turn) // 파라미터로 턴을 받는다.
{
  if(turn==0// 턴이 0이면 도전자의 턴이다.
  {
    // 졌다면 컴퓨터의 턴이 된다.
    printf("컴퓨터의 공격 입니다. !\n\n");
  }
  else // 턴이 1이라면 컴퓨터의 턴이다.
  {
    // 졌다면 도전자의 턴이 된다.
    printf("도전자의 공격 입니다. !\n\n");
  }
}
 
 
// 승리자 출력을 위해서
void Win(int turn) // 파라미터로 턴을 받는다.
{
  if(turn==0// 도전자의 턴이였다면
  {
    // 도전자가 승리한 것이다.
    printf("도전자의 승리 입니다. !\n\n");
  }
  else // 컴퓨터의 턴이였다면
  {
    // 컴퓨터가 승리한 것이다.
    printf("컴퓨터의 승리 입니다. !\n\n");
  }
}
 
 
cs


C/C++ 언어 rand() 함수를 사용한 묵찌빠 게임 



+ Recent posts