열혈강의 C 410p 도전5
가위 바위 보 게임을 만들어 보자. 사용자로부터 가위 바위 보 중 하나를 입력받는다. 그리고 난수 생성 함수를 이용하여 컴퓨터는 가위 바위 보 중에서 하나를 선택하게 한다.
그리고 이둘을 비교해 승자와 패자를 가려주는 프로그램을 만들어보자.
조건 1) 사용자가 질 때 까지 반복해야 한다.
옵션 1) 결기결과를 출력하도록 해보자.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#pragma warning(disable:4996) // scanf 보안 경고 제거용
int fight(int n,int *r);
int randnum();
int main(void) {
int num;
int chek = 0;
int result[3]={0}; // 결과 저장용 배열
while (result[2] < 1) { // 패가 기록될 경우 중단
printf("가위는 1, 바위는 2, 보는 3 : ");
scanf("%d", &num);
*result= fight(num,result);
}
printf("\n경기 결과: %d승 %d무 %d패\n", result[0], result[1], result[2]);
return 0;
}
/* 비교하는 함수 */
int fight(int n,int *r) {
int com = randnum();
if (n == 1) { // 내가 가위를 낸 경우
if (com == 1) {
printf("당신은 가위선택, 컴퓨터는 가위선택. 비겼습니다.\n");
r[1]++;
return *r;
}
else if (com == 2) {
printf("당신은 가위선택, 컴퓨터는 바위선택. 당신이 졌습니다!\n");
r[2]++;
return *r;
}
else {
printf("당신은 가위선택, 컴퓨터는 보선택. 당신이 이겼습니다!\n");
r[0]++;
return *r;
}
}
else if (n == 2) { // 내가 바위를 낸 경우
if (com == 1) {
printf("당신은 바위선택, 컴퓨터는 가위선택. 당신이 이겼습니다!\n");
r[0]++;
return *r;
}
else if (com == 2) {
printf("당신은 바위선택, 컴퓨터는 바위선택. 비겼습니다!\n");
r[1]++;
return *r;
}
else {
printf("당신은 바위선택, 컴퓨터는 보선택. 당신이 졌습니다!\n");
r[2]++;
return *r;
}
}
else if (n == 3) { // 내가 보를 낸 경우
if (com == 1) {
printf("당신은 보선택, 컴퓨터는 가위선택. 당신이 졌습니다!\n");
r[2]++;
return *r;
}
else if (com == 2) {
printf("당신은 보선택, 컴퓨터는 바위선택. 당신이 이겼습니다!\n");
r[0]++;
return *r;
}
else {
printf("당신은 보선택, 컴퓨터는 보선택. 비겼습니다!\n");
r[1]++;
return *r;
}
}
else { // 입력이 잘못 되었을때
printf("잘못 입력 하셨습니다 !!\n");
return *r;
}
}
/* 무작위 수 생성 함수 */
int randnum(void) {
srand((int)time(NULL));
return (rand() % 3) + 1;
}
쫌더 간결하게 하고싶었지만 바쁜관계로 대충 짜 보았습니다.
쫌더 쉽고 복잡하지않게 만들어 주세요.
'C' 카테고리의 다른 글
C언어 스트림(stream)의 활용 - 문자 단위 입출력 함수 (0) | 2014.07.26 |
---|---|
C언어 스트림(stream)의 이해 (0) | 2014.07.25 |
C언어 배열 90도씩 회전시켜 출력하기 (0) | 2014.07.20 |
C언어 형(Type)이 존재하지 않는 void 포인터 (0) | 2014.07.19 |
C언어 함수 포인터 변수 (0) | 2014.07.18 |