-
Notifications
You must be signed in to change notification settings - Fork 0
/
untitled.p8
306 lines (284 loc) · 22.2 KB
/
untitled.p8
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
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
pico-8 cartridge // http://www.pico-8.com
version 38
__lua__
#include animal.p8
#include tyler.p8
#include michael.p8
#include preston.p8
#include evan.p8
#include collider.p8
-- animals
#include ostrich.p8
#include bee.p8
#include elephant.p8
-- enemies
#include enemy.p8
objects = {}
win = false
-- game_over = true
frame = 0
speed = 1
game_start=false
lane_offset = 20 -- height of the "sky" portion of map
lane_height = 17
ANIMALS = {
ostrich,
bee_giant,
elephant,
monkey,
blue_whale
}
LANE_Y_VALUES = {
15,
32,
49,
66,
83
}
function _init()
init_michael(objects)
init_preston(objects)
init_evan(objects)
end
function _update()
frame+=1
check_collisions()
if game_start==false then
return
end
if game_start==true then
for obj in all(objects) do
obj:update()
end
end
--debug = stat(1)
end
function _draw()
if game_start==false then
before_game()
end
if game_start==true then
local foreground = {}
for obj in all(objects) do
-- don't render yet if obj is tagged "foreground"
if obj.foreground then
add(foreground, obj)
return
end
obj:draw()
end
-- draw foreground objects
for obj in all(foreground) do
obj:draw()
end
check_win()
check_lose()
print(debug,1,99,0)
end
end
function check_collisions()
for i=1,#objects do
for j=i+1,#objects do
obj=objects[i]
other=objects[j]
--if a table isn't given a specific pixel width, give it a default
if (other.pwidth==nil) then
other.pwidth=16
end
if (obj.pwidth==nil) then
obj.pwidth=16
end
if obj.collider
and other.collider
and obj.lane_index == other.lane_index
and obj.x < other.x + other.pwidth
and obj.x + obj.pwidth > other.x
and obj.y < other.y + other.pwidth
and obj.y + obj.pwidth > other.y
then
obj.collider:collide(other)
other.collider:collide(obj)
end
end
end
end
------------------------
--- utility functions ---
------------------------
function get_sprite_coords(spr_num)
return (spr_num % 16) * 8, flr(spr_num \ 16) * 8
end
function get_lane_y(lane_index)
return LANE_Y_VALUES[lane_index]
end
-- temporary to reduce memory leakage
function remove_if_out_of_bounds(obj)
if abs(64-obj.x)>80 or abs(64-obj.y)>80 then
if not obj.is_friendly and not obj.is_friendly_projectile then
game_over = true
end
del(objects,obj)
end
end
-- converts a value from one range of numbers to another
function convert_range(val,s1,e1,s2,e2)
temp=(val-s1)/(e1-s1)
return temp*(e2-s2)+s2
end
-- given an x value, return the x value of the closest enemy in that lane (to the right)
-- returns -1 if no enemy was found
function get_closest_enemy_x(x_initial,l_index)
x_final = 1000000
for obj in all(objects) do
if obj.lane_index == l_index and not obj.is_friendly and not obj.is_friendly_projectile and obj.health > 0 then
if obj.x > x_initial and obj.x < x_final then
x_final = obj.x
end
end
end
if x_final < 1000000 then
return x_final
else
return -1
end
end
__gfx__
00000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000dd6600000eae0000000000000000000000000000000000000000000000000000000000000000000000000000000000000
007007000000000000000000000000dd666660000e00000000000000000000000000000000666600666666600000000000000000000000000000000000000000
000770000000000000000000000000d6666660000000000000000000000000000000000066677766777777666066666000000000000000000000000000000000
000770000000000000000000000006d6666766000000000000000000000000000000006667777777777777776667776660000000000000000000000000000000
007007000000000000000000000666d6666166000000000000000000000000000000006777777777777777777767777766000000000000000000000000000000
000000000000000000000000006666d6666666000000000000000000000000000000006777777777777777777776777777600000000000000000000000000000
000000000000000000000000066666dd6666d6600000000000000000000000006666666677777777777777777777777777660000000000000000000000000000
0000000000000000000000006066666dd6d6d6600c00000000000000000006666777777667777777777777777777777777760000000000000000000000000000
00000000000000000000000000666666ddd67760cac0000000000000000066777777777767777777777777777777777777766666600000000000000000000000
0000000000000000000000000066666666666d770c00000000000000000667777777777777777777777777777777777777766777666000000000000000000000
0000000000000000000000000066666666660d600000000000000000006677777777777777777777777777777777777777767777776600000000000000000000
00000000000000000000000000066666666d00600000000000000000066777777777777777777777777777777777777777777777777600000000000000000000
00000000000000000000000000066dd0066d00600000000000000000067777777777777777777777777777777777777777777777777600000000000000000000
00000000000000000000000000066dd0066d00000000000000000000067777777777777777777777777777777777777777777777777600000000000000000000
0000000000000000000000000006600000dd00000000000000000000067777777777777777777777777777777777777777777777777600000000000000000000
00000000000000000000000000000000000000000000000000000666667777777777777777777777777777777777777777777777777600000000000000000000
0000000000000000000000000000000dd66000000000000000006777667777777777777777777777777777777777777777777777677600000000000000000000
000000000000000000000000000000dd666660000000000000006777776777777777777777777777777777777777777777777777766000000000000000000000
000000000000000000000000000000d6666660000000000000067777777777777777777777777777777777777777777777777777776600000000000000000000
000000000000000000000000000006d6666766000000000000067777777777777777777777777777777777777777777777777777777600000000000000000000
000000000000000000000000000666d6666166000000000000067777777777777777777777777777777777777777777777777777777600000000000000000000
000000000000000000000000006666d6666666000000000000066777777777777777777777777777777777777777777777777777777600000000000000000000
000000000000000000000000066666dd6666d6600000000006666677777777777777777777777777777777777777777777777777776600000000000000000000
0000000000000000000000006066666dd6d6d6600000000066777667777777777777777777777777777777777777677777777777776000000000000000000000
00000000000000000000000000666666ddd677600000000067777777777777777777777777777777777777777776777777777776660000000000000000000000
0000000000000000000000000066666666666d770000000067777777777777777776777777777767777777777766777777777660000000000000000000000000
0000000000000000000000000066666666660d600000000066677777777777777777667777777776677777777666666666666000000000000000000000000000
00000000000000000000000000066666666d00600000000000666777777777777776666777777776666666666600000000000000000000000000000000000000
00000000000000000000000000066dd0066d00600000000000006666666666666666006667777776000000000000000000000000000000000000000000000000
00000000000000000000000000066dd0066d00000000000000000000000000000000000006666666000000000000000000000000000000000000000000000000
00000000000000000000000000000dd0066000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000005550000000000000555000000000000000000000000000000444440000000000044444000000000000000000000000000000
0000000000000000006666000066665000000000055500500000000000000000000000000000044444000ff00000044444000ff0000000000000000000000000
0000008888000000067777600677776000000000000500500004400000000001111111110004444444440ff00004444444440ff0000000000000000000000000
0000088858800000677777766777777600666600006666500044a40000000001c66cccc100000ffff5000ff000000ffff5000ff0000000000000000000000000
0000088855800000677777766777777606777760067777600444444000111101c66c75c100000fffff000ff000000fffff000ff0000000000000000000000000
00000888888000006777777667777776677777766777777644a4444401ccc101cccc75c166666666666666606666666666666660000000000000000000000000
0008888888aaa000a6777765a677776a6777777667777776000000001ccc1101cccc75c166666666666666606666666666666660000000000000000000000000
0088888888aaa000a56666a5aa6666556777777667777776000000001cc11001ccccccc1ff06666666660000ff06666666660000000000000000000000000000
0885888800000000a5aa5aa5aaa5aa55a6777765a677776500000000cc110001ccccccc1ff06666666660000ff06666666660000000000000000000000000000
8885888880000000a5aa5aa5aaa5aaaaa56666a5aa6666aa00000000c1c11111ccccccc1ff06666666660000ff06666666660000000000000000000000000000
8585888880000000a5aa5aa5aaa5aaaaa5aa5aa5aaa5aaaa00000000c1ccccccccccc551ff06666666660000ff06666666660000000000000000000000000000
888888fff000000005aa5aa5aaa5aaa005aa5aa5aaa5aaa000000000111cccccc777777100066666666600000006666666660000000000000000000000000000
08888fff000000000050500000505000005050000050500000000000011111111111111100011100011100000001110001110000000000000000000000000000
00858f50000000000555500005555000055550000555500000000000000111111111111100044400011100000001110004440000000000000000000000000000
00050050000000000050000000500000005000000050000000000000000000000000000004444400044400000004440444440000000000000000000000000000
00050050000000005550000555500000555000055550000000000000000000000000000000000004444400000444440000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000111111111111111111000000000000000000000000000000000000000000
000000000000000000000000444440000000000044444000000000011000000000111ccccccccc66ccccc1110000000000000000000000000000000000000000
00000088880000000444000449999000044400044999900000000011c1000000001ccccccccccc66ccccccc10000000000000000000000000000000000000000
0000088858800000040000449959590004000044995959000000011cc1000000011cccccccccccccccc75cc10000000000000000000000000000000000000000
000008885580000004000994999999000400099499999900000011cc1100000001ccccccccccccccccc75cc10000000000000000000000000000000000000000
00000888888000000400099499999990040009949999999000111ccc1000000001ccccccccccccccccc75cc10000000000000000000000000000000000000000
0008888888aaa00004000044499999900400004449999990011ccccc1000000001ccccccccccccccccccccc10000000000000000000000000000000000000000
0088888888aaa0000400044444444400040004444444440011cccccc1100000011ccccccccccccccccccccc10000000000000000000000000000000000000000
0885888800000000040004444444444004000444444444401cccc1ccc1111111cccccccccccccccccccc5cc10000000000000000000000000000000000000000
8885888880000000040044444444944004004444444494401cc111ccc1cccccccccccccccccccccccccc55510000000000000000000000000000000000000000
858588888000000004004444449994400400444444999440111111ccccccccccccccccccccccccccccccccc10000000000000000000000000000000000000000
888888fff0000000040444494499904404044449449990441110011ccccccccccccccccc11ccc1ccccccc7710000000000000000000000000000000000000000
08888fff000000000444449944990044044444994499004400000011ccccccccccccccc11ccc1177777777710000000000000000000000000000000000000000
00858f500000000000004400449000440000440004440044000000011111111177777771cccc1777777777110000000000000000000000000000000000000000
000500550000000000004400440000440000440000440044000000000000000011111111cc111111111111100000000000000000000000000000000000000000
0050000500000000000044094490094400004400099409440000000000000000000000011110000000000000000000000000000000000000000000000000000f
000004440000000000000000000000003bbbbb3bbbb33bb3b5555445000000000000000000000000000000000000000000000000000000000000000000000000
00004444400044400000044400004440b3b33bb3bb36f33635555544000000000000000000000000000000000000000000000000000000000000000000000000
00000ff50004444400004444400444443f3ff33f336fff6f35555555000000000000000000000000000000000000000000000000000000000000000000000000
000066660000ff5000000ff50000ff50fffffffffffffff6ff5f5fff000000000000000000000000000000000000000000000000000000000000000000000000
00060666000066600000066600006660fff6ff6fffffffffff55fff6000000000000000000000000000000000000000000000000000000000000000000000000
00044466000006600000666604446660fffffffff6ffffffff5f5fff000000000000000000000000000000000000000000000000000000000000000000000000
00444441044406600004446644444660ffffffffffffffffff55ff6f000000000000000000000000000000000000000000000000000000000000000000000000
000ff50144444010004444410ff51010fff66fffffffffff6f5f5fff000000000000000000000000000000000000000000000000000000000000000000000000
006666010ff51010000ff50166661010ffffffffffffffffff55f6ff000000000000000000000000000000000000000000000000000000000000000000000000
06066600666640400066660606664040fffff6fffff6fffff65f5fff000000000000000000000000000000000000000000000000000000000000000000000000
00066606066640400606664406664040ffffffffffff6fffff55fff6000000000000000000000000000000000000000000000000000000000000000000000000
00011100066600000006660001010000fffffffff66fff66ff5f5fff000000000000000000000000000000000000000000000000000000000000000000000000
00010100010100000001010001010000ff66ffff636ff6333f555fff000000000000000000000000000000000000000000000000000000000000000000000000
0004040001010000000101000404000033ffff663b33633bb5555555000000000000000000000000000000000000000000000000000000000000000000000000
00440400040400000004040044040000bb33f3b3bbbb33b3b5555544000000000000000000000000000000000000000000000000000000000000000000000000
00000000440400000044040000000000bbbb3bbbbb3bbbbb35555444000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000b3b3b3bbb3bb3bb300000000000000000000000000000000000000000000000000000000000000000000000000000000
00000004440000000000000000000000444454540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000045454000000000000000000000555555550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000444440000000000000000000005f5ff6ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000044499900000000000000000000f5ffff6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000444444400000000000000000000005f5fffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00444444000000000000000000000000f5ffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
044454444000000000000000000000005f5f6fff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0454544440000000000000000000000065fff6ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
044554fff000000000000000000000005f5fffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00444fff000000000000000000000000f5ffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00054f500000000000000000000000005f5fff6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00005005000000000000000000000000f5ff66ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00005005000000000000000000000000555555550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000445444450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000454454540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
49494949494949400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
94444444444444900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
44444444444444400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
94444444444444900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
44444444444444400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
94444444444444900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
44444444444444400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
94444444444444900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
44444444444444400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
94444444444444900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
49494949494949400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f
__map__
a2a2a2a2a2a2a2a2a2a201010101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
a2a2a2a2a2a2a2a2a2a201010101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
84858485848584858485a2a20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
94959495949594959495a2a2a200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
8485848584858485848500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
9495949594959495949500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
8485848584858485848500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
9495949594959495949500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
8485848584858485848500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
9495949594959495949500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000