-
Notifications
You must be signed in to change notification settings - Fork 0
/
AsmFlappyBird2.Inc
199 lines (160 loc) · 4.19 KB
/
AsmFlappyBird2.Inc
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
include windows.inc
include user32.inc
include kernel32.inc
include shell32.inc
include comctl32.inc
include gdi32.inc
include comdlg32.inc
include masm32.inc
includelib user32.lib
includelib kernel32.lib
includelib shell32.lib
includelib comctl32.lib
includelib gdi32.lib
includelib comdlg32.lib
includelib masm32.lib
includelib msvcrt.lib
printf PROTO C :ptr sbyte, :VARARG
WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
ResetBuff PROTO :DWORD
DeBuff PROTO
DeBuff2 PROTO :dword
BoardProc PROTO hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
BoardProc2 PROTO hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
InitParam PROTO
EndGame PROTO
SetupDie PROTO
SetupFly PROTO
SaveFile PROTO
ReadModelFile PROTO
TimerProc PROTO hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
IDB_BG equ 100
IDB_TUBE equ 101
IDB_BIRD equ 102
IDB_BIRD2 equ 104
IDB_BIRD3 equ 105
IDB_BIRD4 equ 106
IDB_BAR equ 103
IDB_BIRD_SKILL equ 107
IDD_DIALOG equ 1000
IDC_BOARD equ 1001
IDC_BOARD2 equ 1002
IDM_MENU equ 10000
IDM_FILE_EXIT equ 10001
IDM_OPEN equ 10002
IDM_SAVE equ 10003
IDM_MODE equ 10004
DisturbMod equ 2
FinDisturbMod equ 5
MTIMER equ 25 ;系统时钟
OBJECT struct
x dd ?
y dd ?
wide dd ?
OBJECT ends
.const
ClassName db 'DLGCLASS',0
AppName db 'Flappy Bird',0
AboutMsg db 'Flppy Bird',13,10,'Copyright ? ljc 2021',0
ExitAsk db 'Are you sure ?',0
startStr db 'HIT X TO START', 0
startStr2 db 'HIT SPACE TO START', 0
fmtStr db '%lu',0
lastFmtStr db 'Last: %lu', 0
maxFmtStr db 'Max: %lu', 0
totFmtStr db 'Tot: %lu', 0
lifeStr db 'Life: %lu', 0
speedStr db 'Speed: %lu', 0
nowStr db 'Now: %lu', 0
disturbStr db 'Skill: %lu', 0
DisturTip db 'Press Z use prime skill',0
DisturTip2 db 'Press M use prime skill',0
FinDisturbStr db 'Press Q use final skill!', 0
FinDisturbStr2 db 'Press L use final skill!', 0
DebugFinSkillStr db 'FinSkill %lu', 0
winStr db 'You Win!',0ah,0
lostStr db 'You Lost!',0ah,0
.data?
couthelp byte '请输入两�?整数�?',0ah,0
hInstance dd ?
CommandLine dd ?
hWnd dd ?
hBoard dd ?
hBoard2 dd ?
OldBoardProc dd ?
OldBoardProc2 dd ?
bgIml dd ?
birdIml dd ?
birdIml2 dd ?
birdIml3 dd ?
birdIml4 dd ?
birdSkill dd ?
tubeIml dd ?
barIml dd ?
gStatus dd 0 ; 0-die 1-flying
speed dd ?
speed2 dd ?
cPoint dd 0 ; current point
lPoint dd 0 ; last point
maxPoint dd 0 ; max point
totPoint dd 0
cPoint2 dd 0 ; current point
lPoint2 dd 0 ; last point
maxPoint2 dd 0 ; max point
totPoint2 dd 0
rseed dd ?
; Tube:
; switch when the first disappear
;维护两根管子
upTube OBJECT 4 dup(<>)
downTube OBJECT 4 dup(<>)
upTube2 OBJECT 4 dup(<>)
downTube2 OBJECT 4 dup(<>)
; Bottom (Ground)
bottomY dd 384
bottomX dd 0
bottomY2 dd 384
bottomX2 dd 0
; Bird:
; in every loop, birdAc = min(birdAc + gravityAc, birdMaxAc);
; birdY = min(max(birdAC + birdAC, 0), birdBottom)
; If hit the buttom, birdAc = jumpAc
; 鸟位�?信息
birdX dd ?
birdY dd ?
birdX2 dd ? ; new
birdY2 dd ?
; 鸟生命�?
birdLife sdword ?
birdLife2 sdword ?
prebirdLife sdword ?
prebirdLife2 sdword ?
NormSpeed dd 4
NormAravityAc dd 1
NormJumpAc dd -7
birdAc dd 0
birdAc2 dd 0 ; new
birdMaxAc dd 8
birdBottom dd 361
gravityAc dd 2
gravityAc2 dd 2
jumpAc dd -14
jumpAc2 dd -14
cflap dd 1 ; 鸟切换
cflapDir dd 0
addedFlag dd 0 ; 柱子更新
addedFlag2 dd 0 ; 柱子更新
Disturb dd 0 ; bird的主动技能
Disturb2 dd 0
FinDisturb dd 0
FinDisturb2 dd 0
inFinSkill dd 0
inFinSkill2 dd 0
debug dd 0
whodie dd 0 ;0 init 1:1 die 2:2 die
stOpenFileName OPENFILENAME <?>
indebuf dd 0
indebuf2 dd 0
isFirst dd 1
whowin dd 0