출처 : 반크_세계유산 석굴암
문제]
1단계는 이항식으로 더하기.
2단계는 삼항식으로 더하기.
3단계는 사항식으로 더하기.
4단계는 오항식으로 더하기.
4단계후 난이도는 10씩 숫자를 증가할 수 있도록 한다.
매 문제는 같은 위치에서 나올 수 있도록 한다.
단계마다 5개의 문제를 맞추면 다음 단계로 진행여부를 물어본다.
작업이 끝나면 화면을 깨끗이하고 결과를 기준으로 능력자 여부를 출력한다.
능력자는 문제를 다 맞추었거나 난이도가 100을 넘으면 능력자로 인정한다.
프로그램]
//Dev-C++ 5.11로 작업함.
//두뇌 개발 프로그램 Ver 0.2
//더하기 게임
//반복문, 배열, 함수를 활용하기
#include <stdio.h>
#include <stdlib.h> //srand(), rand()
#include <time.h> //time()
#include <windows.h>//SetConsoleCursorPosition(),GetStdHandle(), COORD
//커서 위치 함수
void gotoxy(int x, int y)
{
COORD Pos={x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Pos);
}
//지우기 함수
void Clear(int y1, int y2, int y3)
{
gotoxy(10,y1); printf(" ");
gotoxy(10,y2); printf(" ");
gotoxy(10,y3); printf(" ");
}
//문제를 출력한다.
void Question_Print(int *R,int n)
{
int i;
for(i=0;i<=n;i++)
if(i<n) printf("%d + ",R[i]);
else printf("%d = ",R[i]);
}
int main()
{
int arr[5]={0};//문제 발생 변수
int player_answer;//문제에 대한 정답변수
int Result;//발생 문제의 정답변수
int count;//stage별 맞춘 개수 변수
int total_count;//전체 문제를 세는 변수
int win;//맞춘개수 변수
int stage, stageN;//게임의 단계를 체크하는 변수
int N;//문제의 난이도를 결정하는 변수
int i;//반복변수, 인덱스 변수
char ch;//게임 계속여부를 결정하는 변수
char Name[20];//게임어의 이름을 입력하는 변수
//무작위로 문제를 발생할 수 있도록 초기값 설정
srand(time(NULL));
gotoxy(10,0); printf("[ 남녀노소 누구나 두뇌 개발 프로젝트! ]");
gotoxy(10,1); printf(" === 더하기 게임을 시작합니다. === ");
gotoxy(10,3); printf("Player의 이름을 입력하여 주세요 : ");
gets(Name);
//2초를 기다린다.
gotoxy(10,5); printf("문제를 읽어오고 있습니다.");
gotoxy(10,7);
for(i=1;i<=20;i++)
{
Sleep(200);
printf("▶");
}
//화면을 깨끗이 한다.
system("cls");
N=10;
win=0;
stageN=0;
total_count=0;
while(1)
{
gotoxy(10,2); printf("▶ %d단계]\n",++stageN);
stage=0;
while(1)
{
while(1)
{
gotoxy(10,3); printf("▶ %d-%d단계를 시작합니다.\n",stageN,++stage);
count=0;
while(1)
{
total_count++;//발생되는 문제의 개수를 센다.
//문제를 발생한다.
for(i=0;i<=stage;i++) arr[i]=rand()%N;
//발생한 문제를 출력한다.
gotoxy(10,5); Question_Print(arr,stage);
//발생한 문제의 정답을 Player가 입력한다.
scanf("%d%*c",&player_answer);
//출제된 문제의 답을 구한다.
Result=0;
for(i=0;i<=stage;i++) Result += arr[i];
//정답이 맞는 지 체크한다.
if(Result==player_answer)
{
win++;//문제를 맞추면 카운터를 센다.
count++;//단계별 5문제를 맞출 때까지 카운터한다.
gotoxy(10,7); printf("축하합니다! 정답입니다.");
Sleep(2000);//2초 기다린다.
Clear(7,8,9);
}
else
{
gotoxy(10,7); printf("아! ");
Question_Print(arr,stage);
printf("%d 이였습니다.",Result);
gotoxy(10,8); printf("좀 더 집중해 보세요.");
gotoxy(10,9); printf("화이팅!!!");
Sleep(2000);
Clear(7,8,9);
}
//Player가 몇 개를 맞추었는 지 알려준다.
gotoxy(10,11); printf("현재 %d개를 맞추었습니다.",count);
gotoxy(10,12);
printf("5개를 맞추면 %d - %d단계를 통과합니다.",stageN,stage);
if(count==5) break;
gotoxy(10,5); printf(" ");
}
//몇 단계를 해결했는 지 알려준다.
gotoxy(10,14); printf("축하합니다. %d-%d단계를 통과하였습니다.",stageN,stage);
//계속여부 체크하는 부분
while(1)
{
gotoxy(10,16); printf("다음 단계로 진행할까요(y/n)? ");
scanf("%c%*c",&ch); //%*c : enter key
if(ch=='y' || ch=='Y' || ch=='n' || ch=='N') break;
gotoxy(10,17); printf("y, Y, n, N만 입력하세요.");
gotoxy(10,18); printf("다시 입력하세요...");
Sleep(2000);//2초 기다린다.
Clear(16,17,18);
}
if(stage==4 || ch=='n' || ch=='N') break;
system("cls");
}
if(stage==4 || ch=='n' || ch=='N') break;
system("cls");
}
if(ch=='n' || ch=='N') break;
N+=10;//난이도를 높인다.
system("cls");
}
//게임을 끝낸 최종 결과를 출력한다.
system("cls");
gotoxy(5,3);
printf("%s님은 ",Name);
printf("총 %d개의 문제 중 ",total_count);
printf("%d개의 문제를 맞추었습니다.", win);
if(N>=100 || total_count==win)
{
gotoxy(5,5);
printf("%s님은 능력자입니다.",Name);
}
else
{
gotoxy(5,5);
printf("꾸준히 노력하면 %s님도 능력자가 될 수 있습니다.",Name);
}
gotoxy(5,7); printf("수고하셨습니다.");
return 0;
}
결과]
게임시작화면]
이름을 입력하고 Enter하면 문제불러오기]
1단계]
1-1단계 문제출제]
5문제를 다 맞추면 계속여부 물어보기]
계속 다음단계로 진행할 때]
1-2단계 문제(3항식)]
작업을 끝내기 위해 n을 입력]
게임이 끝나면 결과를 출력한다]
대한민국의 아름다운 영토, 독도의 봄
'프로그램 > C언어 1000제' 카테고리의 다른 글
C언어 135제] 문제와 같은 모래시계를 작성하시오. (0) | 2022.06.09 |
---|---|
C언어 134제] 와우패스 JOB 삼성소프트웨어 역량테스트 매트릭스 응용 (0) | 2022.05.13 |
C언어 132제] 게임 프로젝트 1. 두뇌 개발 프로젝트 Ver 0.2 (0) | 2022.03.16 |
C언어 131제] 게임 프로젝트 1. 두뇌 개발 프로젝트 Ver 0.1 (0) | 2022.03.15 |
C언어 130제] C언어 콘서트 CHAPTER 14 Programming 4 p548 (0) | 2022.02.11 |
댓글