#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char const *argv[])
{
int com, user;
int const win = 0, draw = 1, lose = 2;
int result[3] = {0, 0, 0};
char desc[3][10] = {"가위", "바위", "보"};
srand(time(NULL));
printf("***********************\n");
printf("* 가위바위보 게임 *\n");
printf("***********************\n");
while (1)
{
com = rand() % 3;
printf("\n\n가위(1), 바위(2), 보(3), 종료(4)를 입력하세요 : ");
scanf(" %d", &user);
// 종료
if (user == 4)
exit(0);
// 원하는 입력 아닐 경우 재입력 요구
if (user < 1 || user > 4)
continue;
// 배열 사용 위해 1 감소
// 가위 0 바위 1 보 2
user--;
// 비긴 경우
if (com == user)
{
result[draw]++;
printf("컴퓨터는 %s를 내었고 사용자는 %s를 내어 비겼습니다. (%d승 %d무 %d패)",
desc[com], desc[user], result[win], result[draw], result[lose]);
}
// 이긴 경우
else if ((com == 0 && user == 1) || (com == 1 && user == 2) || (com == 2 && user == 0))
{
result[win]++;
printf("컴퓨터는 %s를 내었고 사용자는 %s를 이겼습니다. (%d승 %d무 %d패)",
desc[com], desc[user], result[win], result[draw], result[lose]);
}
// 진 경우
else
{
result[lose]++;
printf("컴퓨터는 %s를 내었고 사용자는 %s를 내어 졌습니다. (%d승 %d무 %d패)",
desc[com], desc[user], result[win], result[draw], result[lose]);
}
}
return 0;
}
처음 접근은 사용자 입력에 따라 조건을 비교하기 위한 것으로 접근했다. 그래서 사용한 것이 사용자 입력에 따른 조건은 switch 문을 사용하고 각 상황에 따라 이기거나 지거나 비긴 경우는 if 문으로 처리했다. switch case 한 경우만 입력한 후에 이미 코드가 복잡해질 여지가 보였다. 작동 확인만을 위해 작성을 완료하고 조건의 대상을 바꿨다.
승, 무, 패와 가위, 바위, 보와 같은 문자 처리도 배열로 해결했다.
'개발' 카테고리의 다른 글
HeidiSQL, 데이터베이스 GUI 관리 툴 (0) | 2021.11.11 |
---|---|
스프링부트에서 JSP 사용하기 (0) | 2021.11.09 |
[이클립스] JAVA EE web.xml 저장시 오래 걸리는 현상 (0) | 2021.09.28 |
[이클립스] enum 멤버 자동 정렬 정지 (0) | 2021.09.16 |
[JAVA] String.format의 %%%ds 의미 (0) | 2021.09.14 |
nodejs, NPM 설치 (0) | 2020.12.14 |
쉽게 활용 가능한 무료 사진 API (0) | 2020.11.30 |
JSON 문서 보기 좋은 크롬 확장 프로그램 JSONView (0) | 2020.03.30 |