-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.c
84 lines (76 loc) Β· 3.93 KB
/
main.c
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
/*
___ ___ _____
| \/ || _ |
_ _ ___ ___ | . . || | | | _ _ ___ ___
| | | |/ __| / _ \| |\/| || | | || | | |/ __| / _ \
| |_| |\__ \| __/| | | |\ \_/ /| |_| |\__ \| __/
\__,_||___/ \___|\_| |_/ \___/ \__,_||___/ \___|
______ _ _____ ___ ___ _ _ _ _
| ___ \| | / /| \/ | |_ || | | || | | |
| |_/ /| |/ / | . . | | || |_| || | | |
| ___ \| \ | |\/| | | || _ || |/\| |
| |_/ /| |\ \| | | | _ /\__/ /| | | |\ /\ /
\____/ \_| \_/\_| |_/( ) \____/ \_| |_/ \/ \/
|/
useMOuseλ λ§μ°μ€λ§μ μ¬μ©νμ¬μ κ²μμ νλ μ΄ ν μ μλλ‘ λ§λ κ²μμ
λλ€.
*/
#include<stdio.h> // μ¬λ¬ νμ μ
μΆλ ₯ ν¨μκ° ν¬ν¨λ ν€λ νμΌ
#include<stdlib.h> // C μΈμ΄μ νμ€ λΌμ΄λΈλ¬λ¦¬
#include<Windows.h> // μλμ° API ν¨μλ₯Ό μ 곡νλ ν€λ νμΌ
#include<conio.h> // μ½μ μ
μΆλ ₯ ν¨μλ₯Ό μ 곡νλ ν€λ νμΌ
#include<time.h> // μκ° κ΄λ ¨ ν¨μλ₯Ό μ 곡νλ ν€λ νμΌ
#include "ConsoleControl.h" //μ½μ κ΄λ ¨ μ μ΄ ν¨μ ν€λ νμΌ
#include "ImageLayer.h" //1409λ―ΌμΉν μ΄λ―Έμ§ μ μ΄ ν¨μ ν€λ νμΌ
#include "Stages.h" // κ²μ λ° νλ©΄, μ€ν
μ΄μ§λ€μ΄ ννλμ΄ μλ ν¨μ ν€λ νμΌ
#include "fileIO.h" // νμΌ μ
μΆλ ₯μ μ μ΄νλ ν¨μ ν€λ νμΌ
#include "SoundControl.h" // μ¬μ΄λ μΆλ ₯ κ΄λ ¨ μ μ΄ ν¨μ ν€λ νμΌ
static HWND hWnd;
static HINSTANCE hlnst;
#define MOUSE_NONE 0
#define LEFT_BUTTON 1
#define RIGHT_BUTTON 2
#define SAME_BUTTON 3
#define SCROLLED 4
#define SELECT_BUTTON 5
#define Idx_AvoidObstacle1P 0 // νμ± νΌνκΈ° 1P κ²μμ λν μΈλ±μ€
#define Idx_AvoidObstacle2P 1 // νμ± νΌνκΈ° 2P κ²μμ λν μΈλ±μ€
#define Idx_HitTheMouse 2 // λ§μ°μ€λ₯Ό κ΄΄λ‘νλΌ κ²μμ λν μΈλ±μ€
#define CONSOLE_WIDTH 180
#define CONSOLE_HEIGHT 50
int main() { // main ν¨μλ μ¬λ¬κ°μ§ μ€ν
μ΄μ§λ€μ κ΄κ³κ° gotoλ¬ΈμΌλ‘ μ°κ²°λμ΄ μμ΅λλ€.
setDisplaySize(CONSOLE_WIDTH, CONSOLE_HEIGHT); // μ½μμ°½ ν¬κΈ° μ€μ
CursorView(FALSE); // 컀μ μ¨κΈ°κΈ°
MouseInputActivate(); // λ§μ°μ€ μ
λ ₯ νμ±ν
startPage: // μμ νλ©΄
switch(StartStage()){ // μμ νμ΄μ§μμ 1(κ²μ μμ)μ μ ννλ©΄ κ²μ μ ννλ©΄μΌλ‘ , 2(κ²μ μ€λͺ
)λ₯Ό μ ννλ©΄ κ²μ μ€λͺ
νμ΄μ§λ‘ κ°λλ€.
case 1:goto selectGame; break; // μμ νμ΄μ§ β κ²μ μ ν νλ©΄
case 2:goto gameExplain; break; // μμ νμ΄μ§ β κ²μ μ€λͺ
νλ©΄
}
gameExplain: // κ²μ μ€λͺ
νλ©΄
switch (GameExplainStage()) { // κ²μ μ€λͺ
νμ΄μ§μμ 1(κ²μ μμ)μ μ ννλ©΄ λ€μ μμ νλ©΄μΌλ‘ , 2(κ²μ μ ν)λ₯Ό μ ννλ©΄ κ²μ μ ν νμ΄μ§λ‘ κ°λλ€.
case 1:goto startPage; break; // κ²μ μ€λͺ
νλ©΄ β μμ νμ΄μ§
case 2:goto selectGame; break; // κ²μ μ€λͺ
νλ©΄ β κ²μ μ ν νλ©΄
}
selectGame: // κ²μ μ ν νλ©΄
switch (SelectGameStage()) { // κ²μ μ ν νμ΄μ§μμ 0(λλμ κ°κΈ°)μ μ ννλ©΄ κ²μ μ ννλ©΄μΌλ‘ , n(κ° κ²μλ€)λ₯Ό μ ννλ©΄ κ·Έ κ²μμ΄ μ€νλ©λλ€.
case 0:goto startPage; break; // κ²μ μ ν νλ©΄ β μμ νμ΄μ§
case 1:goto avoidObstacle_1p; break; // κ²μ μ ν νλ©΄ β μ΄μμ νΌν΄λΌ 1P
case 2:goto avoidObstacle_2p; break; // κ²μ μ ν νλ©΄ β μ΄μμ νΌν΄λΌ 2P
case 3:goto hit_the_mouse; break; // κ²μ μ ν νλ©΄ β λ§μ°μ€λ₯Ό κ΄΄λ‘νλΌ
}
avoidObstacle_1p: // μ΄μμ νΌν΄λΌ 1P
switch (ShowScoreStage(AvoidObstacle_1P(), Idx_AvoidObstacle1P)) { // ShowScoreStageλ κ²μμμ return νλ μ€μ½μ΄λ₯Ό λ°νμΌλ‘ μ€νλ©λλ€.
case 1: goto startPage; break; // μ΄μμ νΌν΄λΌ 1P β μμ νμ΄μ§
case 2: goto avoidObstacle_1p; break; // μ΄μμ νΌν΄λΌ 1P β μ΄μμ νΌν΄λΌ 1P (λ€μνκΈ°)
}
avoidObstacle_2p: // μ΄μμ νΌν΄λΌ 2P
switch (ShowScoreStage(AvoidObstacle_2P(), Idx_AvoidObstacle2P)) { // ShowScoreStageλ κ²μμμ return νλ μ€μ½μ΄λ₯Ό λ°νμΌλ‘ μ€νλ©λλ€.
case 1: goto startPage; break; // μ΄μμ νΌν΄λΌ 2P β μμ νμ΄μ§
case 2: goto avoidObstacle_2p; break; // μ΄μμ νΌν΄λΌ 2P β μ΄μμ νΌν΄λΌ 2P (λ€μνκΈ°)
}
hit_the_mouse: // λ§μ°μ€λ₯Ό κ΄΄λ‘νλΌ
switch (ShowScoreStage(HitTheMouseGameStage(),Idx_HitTheMouse)) {// ShowScoreStageλ κ²μμμ return νλ μ€μ½μ΄λ₯Ό λ°νμΌλ‘ μ€νλ©λλ€.
case 1: goto startPage; break; // λ§μ°μ€λ₯Ό κ΄΄λ‘νλΌ β μμ νμ΄μ§
case 2: goto hit_the_mouse; break; // λ§μ°μ€λ₯Ό κ΄΄λ‘νλΌ β λ§μ°μ€λ₯Ό κ΄΄λ‘νλΌ (λ€μνκΈ°)
}
}