간단한 프로그램 함수로 구현하기 14

가위바위보 게임 만들기

난수 발생 함수를 사용하여 컴퓨터와 대전이 가능한 가위바보 게임을 만들어 보세요.

 

@참고 사항

게임을 위한 각 기능들을 별도의 함수로 만들도록 한다.

게임을 위해 필요한 기능으로는 사용자 입력, 컴퓨터 입력, 판정, 결과 출력 등이 있다.

각 기능은 다음과 같은 삼수로 구현한다.

함수1 : 사용자로부터 입력을 받기 위한 함수이다.

사용자로부터 0, 1, 2, 3의 값을 입력 받을 수 있는데 1, 2, 3은 각 가위, 바위, 보에 대응되는 정숫값이고, 0이 입력되면 결과를 출력한 후 프로그램을 종료한다.

단, 지정된 번호 이외의 값이 입력될 경우 오류 메시지를 출력한다.

함수2 : 난수 발생 함수를 사용하여 1~3의 값 중 임의의 값을 생성하며 이에 따라 컴퓨터의 가위, 바위, 보를 결정한다.

함수3: 해당 게임에 대한 승패를 결정하는 함수이다.

함수4: 최종적으로 사용자의 승, 무승부, 패에 대한 횟수를 출력한다.

필요한 경우, 전역 변수를 사용하지만 최소한으로 한다.

 

@ 실습 및 프로그래밍 절차

- 승부, 무승부수, 패수를 기록하기 위한 변수와 사용자의 가위, 바위, 보 / 컴퓨터의 가위, 바위, 보 등 필요한 변수를 선언한다.

- 함수2를 사용하여 컴퓨터의 가위, 바위, 보를 생성한다.

- 함수1을 사용하여 사용자로부터 가위, 바위, 보를 입력받는다.

- 함수3을 사용하여 현재 게임에 대한 승패를 판단하고 결과를 출력한다. 또한 이에 따라 승수, 무승부수, 패수를 갱신한다.

- 사용자가 0 이하의 값을 입력하면 최종적으로 승수, 무승부수, 패수를 출력하고 프로그램을 종료한다.

 

@실행 예

 

 

 

C 언어 랜덤 참고

 

rand()와 srand() (tistory.com)

 

rand()와 srand()

1. 기본 개념 rand() 임의의 난수 하나를 생성한다. 범위는 0~RAND_MAX, 0~32767(0x7fff) 이다. srand() 시간 값을 매개로 난수를 생성한다. time(NULL) 현재 시간을 초단위로 변경해 반환    2. 기본 사용법 

basiclike.tistory.com

 

 

 

 


 

 

간단한 프로그램 함수로 구현하기 15

 

 

슬롯머신 만들기

슬롯머신 게임 만들기: 마찬가지로 난수 발생 함수를 사용하여 3개의 숫자를 기반으로 하는 슬롯머신 프로그램을 만들어 보세요

@참고 사항

- 한 번의 게임에서 1~9 사이의 숫자 3개가 나온다.

이 숫자들의 조합에 따라 1등, 2 등, 3등, 4등이 결정되는데 각 등수에 대한 규칙은 스스로 결정한다.

예를 들어,

모두 7이 나오면 1등,

동일한 숫자 3개가 나오면 2등,

동일한 숫자 2개 가 나오면 3등,

이외에는 4등이 된다.

- 각 등수에 따라 배팅한 금액에 대한 배율이 결정되는데, 등수 별 배율도 각자 결정토록 한다.

예를 들어,

1등은 배팅 금액의 5배,

2등은 3배,

3등은 2배가 되며

4등은 배팅 금액 을 모두 잃게 된다.

- 프로그램 구현을 위해서 InputMoney 함수와 Run 함수를 만든다.

InputMoney 함수는 사용자로부터 금액을 입력받는다.

Run 함수는 해당 금액을 사용하여 슬롯머신 게임을 수행한다.

@실습 및 프로그래밍 절차

- 사용자 배팅 금액을 입력받는 InpuMoney 함수를 만든다.

해당 함수에서는 100원 미 만의 금액을 입력받도록 한다.

- Run 함수에서는 rand 함수를 사용하여 19 사이의 정수 3개를 생성하고,

규칙에 따 라서 등수 및 금액을 산출할 수 있도록 한다.

- main 함수에서는 InputMoney 함수와 Run 함수를 사용하여 슬롯머신 게임을 수행하며

사용자 입력에 따라 게임을 반복적으로 수행한다.

 

@실행 예

 

 

 

 


 

 

간단한 프로그램 함수로 구현하기 16

달력만들기

 

 

년월을 (원하는 방식으로) 입력받아

해당 년도와 월을 출력하세요.

 

 

* 윤년 계산하세요.

그레고리력의 윤년 규칙은 다음과 같습니다.

  • 서력 기원 연수가 4로 나누어 떨어지는 해는 윤년으로 한다. (1988년, 1992년, 1996년, 2004년, 2008년, 2012년, 2016년, 2020년, 2024년, 2028년, 2032년, 2036년, 2040년, 2044년 ...)
  • 서력 기원 연수가 4, 100으로 나누어 떨어지는 해는 평년으로 한다. (1900년, 2100년, 2200년, 2300년, 2500년...)
  • 서력 기원 연수가 4, 100, 400으로 나누어 떨어지는 해는 윤년으로 둔다. (2000년, 2400년...)

 

 

@실행 예

* 정렬 해서 깔끔하게 출력하세요.

 

 

*기원후 1년 1월 1일, 월요일

예) 입력: 1년 3월 달력을 보여줘

1월의 31일과 2월의 28일을 더하고, 일주일 7일로 나누면, 나머지 3(월,화,수)은 2월 마지막에 출력된 요일들입니다.

3월 1일을 출력하는 시작일은 나머지 3의 다음날인 (목요일)입니다.



 

 


 

 

간단한 프로그램 함수로 구현하기 17

숫자 야구 만들기

 

 

방법은 개발자가 선택하세요.

입력받은 값은, 예외가 없도록 만들어 주세요.

 

 

게임을 시작하면, 컴퓨터가 랜덤한 숫자를 0~9 사이에 중복되지 않게 순서를 정해서 저장합니다.

매 라운드, 사용자에게 예상한 숫자 3개를 입력 받습니다.

사용자가 입력한 숫자와 랜덤한 숫자가 맞고, 입력 순서까지 맞으면 1strike,

사용자가 입력한 숫자와 랜덤한 숫자는 맞지만, 입력 순서가 맞지 않으면1ball,

숫자가 맞지 않고, 위치도 맞지 않으면 out

 

 

입력 후 결과에 대해 strike, ball, out 을 출력합니다.

9라운드까지 진행됩니다.

 

 

@실행 예



 

 


 

 

간단한 프로그램 함수로 구현하기 18

 

로또 키오스크 만들기

방법은 개발자가 선택하세요.

입력받은 값은, 예외가 없도록 만들어 주세요.

 

자동, 반자동, 수동 선택하세요.

최대 1~5개의 로또를 선택 하세요.

입금과 잔돈을 결재하고, 결재 결과로 영수증을 출력하세요

영수증에 발행일시(현재), 추첨일(해당 주 토요일), 지급기한(1년)을 출력하세요.

 

 

@실행 예

 

 

#include <stdio.h>
#include <time.h>

#define RESETTEXT "\x1B[0m" // Set all colors back to normal.
#define FOREMAG "\x1B[35m"  // Magenta
#define FORERED "\x1B[31m"  // Red

#define DAY_OF_WEEK_SIZE 7
const static char *DAY_OF_WEEK[DAY_OF_WEEK_SIZE] = {
    "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

// struct tm *localtime(const time_t *timeval);

// struct tm {
//         int tm_sec;   //초
//         int tm_min;   //분
//         int tm_hour;  //시
//         int tm_mday;  //일
//         int tm_mon;   //월(0부터 시작)
//         int tm_year;  //1900년부터 흐른 년
//         int tm_wday;  //요일(0부터 일요일)
//         int tm_yday;  //현재 년부터 흐른 일수
//         int tm_isdst;
// };

int main()
{
    time_t current;
    time(&current);
    struct tm *t = localtime(&current);

    printf("\n\n1.\n");
    switch (t->tm_wday)
    {
    case 0:
        printf("일요일 ");
        break;
    case 1:
        printf("월요일 ");
        break;
    case 2:
        printf("%s", DAY_OF_WEEK[t->tm_wday]);
        break;
    case 3:
        printf("수요일 ");
        break;
    case 4:
        printf("목요일 ");
        break;
    case 5:
        printf("금요일 ");
        break;
    case 6:
        printf("토요일 ");
        break;
    }


    printf("\n\n2.\n");
    printf("%d:%d:%d\n", t->tm_hour, t->tm_min, t->tm_sec);
    printf("1년 365일 중 %d일째", t->tm_yday + 1);

    
    printf("\n\n3.\n");
    printf("        💰 Lotto 6/45 💰");
    printf(FOREMAG);
    printf("\n");
    printf("발행일:");
    printf("%d", t->tm_year + 1900);
    printf("/");
    printf("%02d", t->tm_mon + 1);
    printf("/");
    printf("%02d", t->tm_mday);
    printf("(");
    printf("%s", DAY_OF_WEEK[t->tm_wday]);
    printf(") ");
    printf("%02d", t->tm_hour);
    printf(":");
    printf("%02d", t->tm_min);
    printf(":");
    printf("%02d", t->tm_sec);
    printf("\n");
    printf(RESETTEXT);

    return 0;
}

 

 

 

 


 

 

간단한 프로그램 함수로 구현하기 19

트리 만들기

 

https://youtube.com/shorts/UTUkjwar4II?si=XakQcFOHMysh8YK7

 

 

 


 

 

간단한 프로그램 함수로 구현하기 20

풍차 돌리기

(입력 없이 그냥 모양만 비슷하게 해도 됨, 출력 정렬 사용 안됨)