Etc/C
rsp_game(묵찌빠 게임)
구운 감자
2025. 1. 26. 18:48
main.c
#include "rsp.h"
int main()
{
main_rsp();
return 0;
}
rps.h
#define _CRT_SECURE_NO_WARNINGS
#define LINE printf("--------------------------------------------------------------\n");
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int input_num();
int randnum_computer();
void main_rsp();
void repeat(player_num, computer_num);
void main_repeat(int* player_num, int* computer_num);
int player_winrsp(player_num, computer_num);
void computer_winrsp(computer_num, player_num);
void show_rsp();
rsp.c
#include "rsp.h"
char str[4][10] = {"종료", "가위", "바위", "보"};
// 0: 종료 1: 가위 2: 바위 3: 보
void show_rsp()
{
for (int i = 0; i < 4; i++)
printf("%d. %s\t", i, str[i]);
}
// 입력
int input_num()
{
int input_playernum;
scanf("%d", &input_playernum);
return input_playernum;
}
// 컴퓨터 랜덤함수 1,2,3
int randnum_computer()
{
srand(time(NULL));
int input_computernum;
input_computernum = rand() % 3 + 1;
return input_computernum;
}
// 구문반복
void repeat(player_num, computer_num)
{
if (player_num == 1 || computer_num == 1)
printf("찌에 찌에 . . .\n");
else if (player_num == 2 || computer_num == 2)
printf("묵에 묵에 . . .\n");
else if (player_num == 3 || computer_num == 3)
printf("빠에 빠에 . . .\n");
}
// 컴퓨터 우선권
void computer_winrsp(computer_num, player_num)
{
do
{
repeat(computer_num);
main_repeat(&player_num, &computer_num);
if (computer_num == player_num)
{
printf("컴퓨터 승리!\n\n");
break;
}
else if (player_num - computer_num == 1 || player_num - computer_num == -2)
break;
} while (1);
if (player_num - computer_num == 1 || player_num - computer_num == -2)
player_winrsp(player_num, computer_num);
}
// 플레이어 우선권
int player_winrsp(player_num, computer_num, win_count)
{
do
{
repeat(player_num);
main_repeat(&player_num, &computer_num);
if (computer_num == player_num)
{
win_count++;
printf("플레이어 승리!\n\n");
break;
}
else if (computer_num - player_num == 1 || computer_num - player_num == -2)
break;
} while (1);
if (computer_num - player_num == 1 || computer_num - player_num == -2)
computer_winrsp(computer_num, player_num);
return win_count;
}
// 반복
void main_repeat(int* player_num, int* computer_num)
{
printf("무엇을 내시겠습니까? >> ");
*player_num = input_num();
*computer_num = randnum_computer();
if (*player_num == 0)
printf("\n종료하겠습니다.\n");
else
printf("컴퓨터 : %s!\t플레이어 : %s!\n\n", str[*computer_num], str[*player_num]);
}
// 메인 틀 반복
void main_rsp()
{
int player_num, computer_num;
show_rsp();
printf("\n\n");
int game_count = 1;
int win_count = 0;
double win_percentage;
// 묵찌빠 게임 계속 반복
do
{
printf("%d번째 판 시작 하겠습니다.\n", game_count);
LINE;
//가위바위보 비길 시 반복
do
{
printf("안내면 진다 가위바위 . . .\n");
main_repeat(&player_num, &computer_num);
if (player_num == 0)
break;
} while (player_num == computer_num);
if (player_num == 0)
break;
//1<2, 2<3, 3<1
// 플레이어 우선
if (player_num - computer_num == 1 || player_num - computer_num == -2)
win_count = player_winrsp(player_num, computer_num, win_count);
// 컴퓨터 우선
else if (computer_num - player_num == 1 || computer_num - player_num == -2)
computer_winrsp(computer_num, player_num);
game_count++;
} while (1);
game_count -= 1;
win_percentage = ((double)win_count / game_count) * 100;
LINE;
printf("총 %d판을 하였고 승률은 %.2f%%입니다.\n", game_count, win_percentage);
}
output
0. 종료 1. 가위 2. 바위 3. 보
1번째 판 시작 하겠습니다.
--------------------------------------------------------------
안내면 진다 가위바위 . . .
무엇을 내시겠습니까? >> 1
컴퓨터 : 바위! 플레이어 : 가위!
묵에 묵에 . . .
무엇을 내시겠습니까? >> 1
컴퓨터 : 바위! 플레이어 : 가위!
묵에 묵에 . . .
무엇을 내시겠습니까? >> 1
컴퓨터 : 보! 플레이어 : 가위!
찌에 찌에 . . .
무엇을 내시겠습니까? >> 3
컴퓨터 : 가위! 플레이어 : 보!
찌에 찌에 . . .
무엇을 내시겠습니까? >> 3
컴퓨터 : 바위! 플레이어 : 보!
빠에 빠에 . . .
무엇을 내시겠습니까? >> 2
컴퓨터 : 보! 플레이어 : 바위!
빠에 빠에 . . .
무엇을 내시겠습니까? >> 2
컴퓨터 : 가위! 플레이어 : 바위!
묵에 묵에 . . .
무엇을 내시겠습니까? >> 1
컴퓨터 : 바위! 플레이어 : 가위!
묵에 묵에 . . .
무엇을 내시겠습니까? >> 1
컴퓨터 : 가위! 플레이어 : 가위!
컴퓨터 승리!
2번째 판 시작 하겠습니다.
--------------------------------------------------------------
안내면 진다 가위바위 . . .
무엇을 내시겠습니까? >> 3
컴퓨터 : 보! 플레이어 : 보!
안내면 진다 가위바위 . . .
무엇을 내시겠습니까? >> 3
컴퓨터 : 보! 플레이어 : 보!
안내면 진다 가위바위 . . .
무엇을 내시겠습니까? >> 2
컴퓨터 : 가위! 플레이어 : 바위!
묵에 묵에 . . .
무엇을 내시겠습니까? >> 2
컴퓨터 : 바위! 플레이어 : 바위!
플레이어 승리!
3번째 판 시작 하겠습니다.
--------------------------------------------------------------
안내면 진다 가위바위 . . .
무엇을 내시겠습니까? >> 0
종료하겠습니다.
--------------------------------------------------------------
총 2판을 하였고 승률은 50.00%입니다.