베스킨라빈스 31 게임
2015. 3. 24. 02:14ㆍ엘키스공간/엘키스코딩공방
728x90
728x90
1. 과제 내용
술자리에서 자주 하는 베스킨라빈스 31 게임을 만든다.
입력 1~3까지 숫자.
먼저 31이 출력되는 쪽이 패배.(컴퓨터 vs 플레이어)
2. 결과 영상
3. 설계
- 마인드맵
큰 가지
입력 - 선정하기(누가 먼저?), 게임하기(1~3입력, 사용자가 숫자 직접입력?)
출력 - 컴퓨터 숫자 고르기(랜덤함수, 1~3 생성), 결과 화면, 게임방법설명(칠절한 프로그램씨)
AI - 알고리즘, 무적의 강제종료(30에 컴퓨터 차례면 종료)
기타 - 아이스크림 먹고싶다.
- 수도코드
처음 짜보는 수도 코드였어서 부족한 점이 많았다.
정말 정말 필요한 부분만 적은 간략한 작성이다.
- 순서도
순서도는 조금만 더 세부적으로 그리면 좋을 것 같다.
4. 구현 코드
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 | #include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> #define THIRTYONE 31 #define TRUE 1 /* 작성일 : 2015.03.13 작성자 : 조민혁 프로그램 설명: 베스킨 라빈스 게임을 작성하기. input - 플레이어 1~3까지의 숫자 output - 플레이어의 베스킨 라빈스 숫자, 컴퓨터의 베스킨 라빈스 숫자. */ enum { MYTRUN = 1, COMTURN = 2}; void LetsBaskin(const int baskinNum, int* curTurn); void PrintWinner(const int curTurn); void main(void) { // 변수 초기화 : int curTurn = 0; // 현재 턴 - enum 열거체로 MYTURN, COMTURN int startTurn = 0; // 시작 턴 받을 변수 int selectBaskinNum = 0; // 사용자가 입력할 수 (1~3) int randBaskinNum = 0; // 컴퓨터가 입력할 수 (1~3) 랜덤으로 int curNum = 1; // 현재 베스킨 수 int i = 0; // for문 반복자 // 시작 질의. 응답 printf_s("누가 먼저 시작할까요? 1. 나 2. 컴퓨터 : "); // 시작질의에 맞게 시작 1,2 가 아닐 때 예외처리 while(TRUE) { scanf_s("%d", &startTurn); if(startTurn == MYTRUN || startTurn == COMTURN) { curTurn = startTurn; break; } puts("다시 입력해주세요."); } // 현재 번호가 31 이상이 되면 루프문 종료 while (curNum < THIRTYONE + 1) { if (curTurn == MYTRUN) { printf_s("몇 개 출력하시겠습니까?(1~3개까지 가능합니다.) : "); // 받는 숫자 예외처리 1 <= input <= 3 while(TRUE) { scanf_s("%d", &selectBaskinNum); if (selectBaskinNum >= 1 && selectBaskinNum <= 3) { break; } printf("범위를 벗어났습니다. 다시 입력해주세요. (1~3) : "); } puts("\n================= 나의 턴"); LetsBaskin(selectBaskinNum, &curNum); curTurn = COMTURN; } else { // 랜덤함수 생성 srand( (unsigned int)time( NULL)); LetsBaskin(rand() %3 +1, &curNum); curTurn = MYTRUN; puts("================= 컴퓨터 턴\n"); } } // 승자 출력 PrintWinner(curTurn); system("pause"); } void LetsBaskin(const int baskinNum, int* curNum) // 입력 수, 현재 수를 받아서 출력 { int i = 0; printf(" 숫자 : "); for ( i = 0; i < baskinNum; i++) { // 31이 넘어갈 때 예외처리 if(*curNum > 31) break; // 배스킨 라빈스 숫자 출력 printf_s("%d ", (*curNum)++); } puts(""); } void PrintWinner(const int curTurn) // 마지막에 입력된 턴이 승자 { if (curTurn == MYTRUN) { puts(" 당신의 승리입니다.\n"); } else { puts(" 컴퓨터 승리입니다.\n"); } } | cs |
728x90
반응형
'엘키스공간 > 엘키스코딩공방' 카테고리의 다른 글
큐로 메시지 큐 구현하기 (0) | 2015.06.10 |
---|---|
큐 구현하기 (0) | 2015.06.10 |
[코딩] 스택 구현하기 (1) | 2015.06.10 |
가위바위보 게임 만들기 (0) | 2015.03.24 |
발전하는 성적표 관리 시스템 (0) | 2015.03.24 |
반복문 (0) | 2015.03.23 |
문자열 함수 구현해보기 (2) | 2015.03.10 |