Download presentation
Presentation is loading. Please wait.
1
제3장 게임기본모듈 Page 153 ~ 182
2
3.6 메뉴의 선택과 진행 1 2
3
3.6 메뉴의 선택과 진행 메뉴 선택에 의해 처리할 부분을 함수로 만들고, 번호를 선택하면 해당 함수를 호출하는 것
프로그램 실행 -> 화면에 메뉴 출력 -> 메뉴 번호 입력(반복문 while문) -> 해당 번호 함수 호출하여 출력(선택문 switch case문) -> 처리 종료 후 메뉴로 복귀 프로그램이 3개의 메뉴로 구성(3번은 종료) 메뉴 표시 함수 menu_display(메뉴 출력, 번호 입력, 입력된 번호 반환) 1번 메뉴 함수 hamburger(1번 메뉴 처리부분) 2번 메뉴 함수 spaghetti(2번 메뉴 처리부분) switch case문에서 default는 숫자 1, 2이외의 숫자, 문자 입력 시 벗어나 while문에 의해 메뉴 출력 선택된 메뉴 함수 호출시 이전에 표시된 메뉴 부분을 지움 호출한 함수를 처리하고 main으로 돌아가기 전에 프로그램 실행을 멈추기 위한 함수 press_any_key
4
[예제 361]메뉴 프로그램 메뉴로 진행하는 프로그램
5
[예제 361]메뉴 프로그램 #include <stdio.h>
#include <conio.h> //getch함수 #include <windows.h> //system(“cls”) int menu_display(void); void hamburger(void); void spaghetti(void); int main(void) { int c; while((c=menu_display()) != 3) //c가 3이면 실행 종료 switch(c) case 1 : hamburger(); break; case 2 : spaghetti(); break; default : break; //기타 숫자 입력, 메뉴 출력 } return 0;
6
[예제 361]메뉴 프로그램 int menu_display(void) { int select; system("cls"); printf("간식 만들기\n\n"); printf("1. 햄버거 \n"); printf("2. 스파게티\n"); printf("3. 프로그램 종료\n\n"); printf("메뉴번호 입력>"); select=getch()-48; //문자 1, 2의 아스키 코드 49, 50 return select; }
7
[예제 361-1]하위 메뉴 프로그램 하위 메뉴 프로그램
8
[예제 361-1]하위 메뉴 프로그램 void hamburger(void) { system("cls"); printf("햄버거 만드는 방법\n"); printf("중략\n"); press_any_key(); } void spaghetti(void) printf("스파게티 만드는 방법\n"); void press_any_key(void) printf("\n\n"); //2번 새로운 행 printf("아무키나 누르면 메인 메뉴로..."); getch();
9
3.6.6 메인메뉴와 서브메뉴 1 2
10
3.6.6 메인메뉴와 서브메뉴 서브 메뉴란 메인 메뉴를 선택하면 나타나는 다른 메뉴
서브 메뉴를 사용하면 전 단계인 메인 메뉴로 돌아가는 부분이 필요 메인 메뉴: 1.햄버거, 2.스파게티, 3.프로그램 종료 서브메뉴 햄버거: 1.치킨버거, 2.치즈버거, 3.메인메뉴로 이동 서브메뉴 스파게티: 1.토마토스파게티, 2.크림스파게티, 3.메인메뉴로 이동
11
3.6.6 메인메뉴와 서브메뉴 main menu_display sub_main01 sub_menu_display1
12
[예제 362] 서브있는 메뉴프로그램 #include <stdio.h> #include <conio.h> #include <stdlib.h> int menu_display(void); int sub_menu_display01(void); //햄버거에 대한 서브 메뉴 출력과 번호 입력 int sub_menu_display02(void); //스파게티에 대한 서브 메뉴 출력과 번호 입력 void sub_main01(void); //햄버거에 대한 서브 메뉴 제어 void sub_main02(void); //스파게티에 대한 서브 메뉴 제어 void chicken_burger(void); void cheese_burger(void); void tomato_spaghetti(void); void cream_spaghetti(void); void press_any_key(void); //아무키나 누르면 이전 메뉴로 int main(void) { int c; while((c=menu_display())!=3) switch(c) case 1 : sub_main01(); break; case 2 : sub_main02(); break; default : break; } return 0;
13
[예제 362]서브있는 메뉴 프로그램 int menu_display(void) { int select; system("cls"); printf("간식 만들기\n\n"); printf("1. 햄버거 \n"); printf("2. 스파게티\n"); printf("3. 프로그램 종료\n\n"); printf("메뉴번호 입력>"); select=getch()-48; //문자 1, 2의 아스키 코드 49, 50 return select; }
14
[예제 362]서브있는 메뉴 프로그램 void sub_main01(void) { int c; while((c=sub_menu_display01())!= 3) switch(c) case 1 : chicken_burger(); break; case 2 : cheese_burger(); break; default : break; }
15
[예제 362]서브있는 메뉴 프로그램 int sub_menu_display01(void) { int select; system("cls"); printf("햄버거 만들기\n\n"); printf("1. 치킨버거\n"); printf("2. 치즈버거\n"); printf("3. 메인 메뉴로 이동\n\n"); printf("메뉴번호 입력>"); select=getch()-48; return select; }
16
[예제 362]서브있는 메뉴 프로그램 void chicken_burger(void) { system("cls"); printf("치킨버거 만드는 방법\n"); printf("중략\n"); press_any_key(); } void cheese_burger(void) printf("치즈버거 만드는 방법\n");
17
[예제 362]서브있는 메뉴 프로그램 void sub_main02(void) { int c; while((c=sub_menu_display02())!= 3) switch(c) case 1 : tomato_spaghetti();break; case 2 : cream_spaghetti(); break; default : break; }
18
[예제 362]서브있는 메뉴 프로그램 int sub_menu_display02(void) { int select; system("cls"); printf("스파게티 만들기\n\n"); printf("1. 토마토 스파게티 \n"); printf("2. 크림 스파게티 \n"); printf("3. 메인 메뉴로 이동\n\n"); printf(“메뉴번호 입력>"); select=getch()-48; return select; }
19
[예제 362]서브있는 메뉴 프로그램 void tomato_spaghetti(void) { system("cls"); printf("토마토 스파게티 만드는 방법\n"); printf("중략\n"); press_any_key(); } void cream_spaghetti(void) printf("크림 스파게티 만드는 방법\n");
20
[예제 362]서브있는 메뉴 프로그램 void press_any_key(void) { printf("\n\n"); printf("아무키나 누르면 이전 메뉴로..."); getch(); }
21
[Report 309] 다음과 같은 메뉴에 의해 실제 값을 입력받아 해당 연산을 처리하는 프로그램을 작성 메인 메뉴 서브 메뉴
사칙 연산 1. 덧셈(+)연산 뺄셈(-)연산 3. 나눗셈(/)연산 곱셈(*)연산 5. 나머지(%)연산 메인 메뉴로 이동 2. 로그 연산 자연로그(log)연산 상용(log10)연산 메인 메뉴로 이동 3. 종료
22
3.7 난수 생성 난수(Random number) : 특정한 배열순서나 규칙을 가지지 않는 임의의 수
함수 rand()를 사용하며 헤더파일 <stdlib.h> 포함, 0≤rand()≤32767 사이의 정수 난수 1개 발생 함수와 관련된 라이브러리 함수(난수 초기화) void srand(unsigned int seed); 같은 난수 생성: 인수를 같은 상수 사용 다른 난수 생성: 인수를 현재시간 설정, 함수 time(NULL) 사용하며 헤더파일 <time.h> 포함
23
[예제 371] 난수 15개 출력 함수 srand의 초기값 10으로 설정하여 난수 15개 출력
24
[예제 371] 난수 15개 출력 #include <stdio.h> #include <stdlib.h> int main() { int i; srand(10); for(i=1;i<=15;i++) printf("%2d:%5d\n", i, rand()); return 0; }
25
[예제 372] 난수 15개 출력 함수 srand의 초기값 10으로 설정하여 난수 10개 출력하여 예제_371과 비교
26
[예제 373] 난수 15개 출력 3번 비교 함수 srand의 초기값을 시간으로 설정 함수 time 사용(헤더파일 <time.h> 포함), 매 실행마다 다른 값 출력 확인 ->함수 srand의 초기값을 시간으로 설정하여 난수 15개 출력, 3번 반복 실행 비교
27
[예제 373] 난수 15개 출력 3번 비교 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int i; srand(time(NULL)); for(i=1;i<=15;i++) printf("%2d:%5d\n", i, rand()); return 0; }
28
3.7.2 주어진 범위 난수 생성 %연산자 사용 정수 난수 생성 범위 프로그램 연산식 값의 범위 연산식 1~6 1~45
0~99 10~30 rand()%6+1; rand()%45+1; rand()%100; rand()%21+10;
29
[예제 374] 주사위 프로그램 주사위 10번 시행 시 눈금의 출력
30
[예제 374] 주사위 프로그램 #include <stdio.h> #include <stdlib.h> #include <time.h> //함수 time 사용 헤더파일 int main() { int i; srand(time(NULL)); for(i=1;i<=10;i++) printf("%2d:%2d\n", i, rand()%6+1); return 0; }
31
[예제 375] 로또번호 생성 로또 당첨번호 6개 생성, rand()%45+1;
32
[예제 375] 로또번호 생성 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int i, j, lotto; srand(time(NULL)); for(i=0;i<=5;i++) lotto=rand()%45+1; printf("%2d\n", lotto); } return 0;
33
[Report 310] 주사위 빈도수 함수 rand를 이용하여 1~6 사이의 주사위 눈금 1000개를 생성하고, 각 눈금의 빈도수에 대한 확률을 구하는 프로그램 작성
Similar presentations