일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java
- HTML5
- C언어 구조체
- 텍스트 파일 읽기
- placehoder
- 자바
- 포인터
- C언어 파일입출력
- Google reCaptcha
- jsp
- C언어 메모리
- C언어 배열
- TCP/IP 소켓
- C언어 매크로
- Spring email
- 구글 reCaptcha
- Naver SmartEditor
- 날짜
- C언어
- URL 다운로드
- SQL
- GUI
- Vim
- gcc
- Spring google
- Oracle
- 오라클
- C언어 변수
- C언어 함수
- 역순
- Today
- Total
easy software
C언어 난수를 이용한 가위 바위 보 게임 본문
안녕하세요. 저번 글에 이어서 이번에도 난수를 이용한 예제를 보여드리겠습니다.
제목처럼 가위 바위 보 게임인데요, 규칙은 아래와 같습니다.
1. 사용자로부터 바위1 가위2 보3 중에서 하나를 입력받는다.
2. 컴퓨터는 난수 생성을 통해 바위1 가위2 보3 중에서 하나를 선택한다.
3. 이 둘을 비교해서 승자와 패자를 가려준다.
4. 프로그램의 진행은 사용자가 질 때까지 무한반복한다.
5. 마지막에서는 승과 무승부횟수를 출력해준다.
처음에 이 문제를보고, 난수생성함수와 승패결정 함수를 각각 만들고
main에서는 함수호출과 간단한 비교만 해주려고 하다가
저같이 C언어에 익숙하지 않은 분들은 헷갈려 하실 수 있다는 생각이 들어서
함수를 생성하지않고 main에 절차적으로 코드를 나열했습니다.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void){
int input, a;
int draw = 0, win = 0;
//사용자가 질 때 까지 반복
while (1){
printf("바위는 1, 가위는 2, 보는 3: ");
scanf_s("%d", &input);
//srand()와 time()을 이용해서 1~3까지 난수생성
srand((int)time(NULL));
a = rand() % ((3 - 1) + 1) + 1;
//비겼을 때
if (input == a){
//난수가 바위이면
if (a == 1){
printf("당신은 바위, 컴퓨터는 바위 선택, 비겼습니다.");
draw++;
}
//난수가 가위이면
else if (a == 2){
printf("당신은 가위, 컴퓨터는 가위 선택, 비겼습니다.");
draw++;
}
//난수가 보자기이면
else{
printf("당신은 보자기, 컴퓨터는 보자기 선택, 비겼습니다.");
draw++;
}
}
//사용자가 이겼을 때
else if (input > a){
if (input == 1 && a == 2){
printf("당신은 바위, 컴퓨터는 가위 선택, 이겼습니다.");
win++;
}
else if (input == 2 && a == 3){
printf("당신은 가위, 컴퓨터는 보자기 선택, 이겼습니다.");
win++;
}
else{
printf("당신은 보자기, 컴퓨터는 바위 선택, 이겼습니다.");
win++;
}
}
//사용자가 졌을 때
else{
if (input == 1 && a == 3){
printf("당신은 바위, 컴퓨터는 보자기 선택, 졌습니다.");
break;
}
else if (input == 2 && a == 1){
printf("당신은 가위, 컴퓨터는 바위 선택, 졌습니다.");
break;
}
else{
printf("당신은 보자기, 컴퓨터는 가위 선택, 졌습니다.");
break;
}
}
printf("\n\n");
}
printf("\n\n");
printf("게임의 결과 : %d승, %d무", win, draw);
return 0;
}
코드가 어떻게 보면 상당히 길고 복잡해 보이네요...
제가 주석을 적절히 달아놨고, 간단한 키워드(if, while, break)만 사용했기 때문에
코드를 해석하시기는 무척 쉬울 거라 판단됩니다.(아니라면 댓글달아주세요)
위의 코드에서 핵심은 적절한 if문과(다른 방법을 사용해도 됩니다),
적절한 난수 생성을 하시면 재미있는 게임을 만드실 수 있습니다.
'C언어 > 기타' 카테고리의 다른 글
C언어 전화번호 관리 프로그램에 File IO 기능을 추가하여 효율개선 (1) | 2015.04.24 |
---|---|
C언어 구조체배열, 포인터, strcmp, strcpy를 이용한 전화번호 관리 프로그램 (0) | 2015.03.08 |
C언어 rand() / srand()와 time.h를 사용하여 난수를 출력해보자 (0) | 2015.01.31 |
C언어 rand()함수를 이용하여 의사난수 출력하기 (0) | 2015.01.29 |
C언어 공식을 코드로 변경해보자! (0) | 2015.01.11 |