1+ @namespace
2+ class SpriteKind :
3+ FireKind = SpriteKind .create ()
4+ StoneKind = SpriteKind .create ()
5+
16def on_up_pressed ():
27 global cnt
38 if hacker .vy == 0 :
4- hacker .vy = - 120
9+ hacker .vy = - 135
510 cnt = 1
611 elif cnt == 1 :
7- hacker .vy = - 120
12+ hacker .vy = - 135
813 cnt += 2
9- if hacker .vx < 0 :
14+ if hacker .vx > 0 :
1015 animation .run_image_animation (hacker ,
1116 assets .animation ("""
1217 left jump animation
1318 """ ),
14- 300 ,
19+ 200 ,
1520 False )
1621 else :
1722 animation .run_image_animation (hacker ,
1823 assets .animation ("""
1924 right jump animation
2025 """ ),
21- 300 ,
26+ 200 ,
2227 False )
2328controller .up .on_event (ControllerButtonEvent .PRESSED , on_up_pressed )
2429
@@ -28,16 +33,45 @@ def on_left_pressed():
2833 """ ))
2934controller .left .on_event (ControllerButtonEvent .PRESSED , on_left_pressed )
3035
36+ def on_on_zero (status ):
37+ info .change_life_by (- 1 )
38+ healthbar .value = 100
39+ statusbars .on_zero (StatusBarKind .health , on_on_zero )
40+
3141def on_right_pressed ():
3242 hacker .set_image (assets .image ("""
3343 Temporary asset2
3444 """ ))
3545controller .right .on_event (ControllerButtonEvent .PRESSED , on_right_pressed )
3646
47+ def on_life_zero ():
48+ game .over (False , effects .melt )
49+ info .on_life_zero (on_life_zero )
50+
51+ def on_hit_wall (sprite , location ):
52+ fireball .destroy (effects .ashes , 100 )
53+ stone .destroy (effects .disintegrate , 500 )
54+ scene .on_hit_wall (SpriteKind .projectile , on_hit_wall )
55+
56+ def on_on_overlap (sprite : Sprite , otherSprite : Sprite ):
57+ if otherSprite == fireball :
58+ healthbar .value += - 0.2
59+ else :
60+ healthbar .value += - 0.1
61+ curScore = 0
62+ diff = 0
3763projectile : Sprite = None
38- stone : Sprite = None
64+ fireball : Sprite = None
3965cnt = 0
4066hacker : Sprite = None
67+ stone : Sprite = None
68+ healthbar : StatusBarSprite = None
69+ sprites .on_overlap (SpriteKind .player , SpriteKind .projectile , on_on_overlap )
70+ sprites .on_overlap (SpriteKind .player , SpriteKind .projectile , on_on_overlap )
71+ sprites .on_overlap (SpriteKind .player , SpriteKind .projectile , on_on_overlap )
72+ def on_on_overlap2 (sprite : any , stone : any ):
73+ healthbar .value += - 0.1
74+ sprites .on_overlap (SpriteKind .player , SpriteKind .projectile , on_on_overlap )
4175scene .set_background_image (img ("""
4276 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
4377 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
@@ -166,28 +200,33 @@ def on_right_pressed():
166200 SpriteKind .player )
167201hacker .set_position (40 , 90 )
168202controller .move_sprite (hacker , 80 , 0 )
169- hacker .ay = 120
203+ info .set_life (3 )
204+ info .set_score (1000 )
205+ hacker .ay = 200
170206tiles .set_tilemap (tilemap ("""
171207 level1
172208""" ))
173209scene .camera_follow_sprite (hacker )
210+ healthbar = statusbars .create (25 , 4 , StatusBarKind .health )
211+ healthbar .set_position (14 , 15 )
212+ healthbar .max = 100
174213# else:
175214# hacker.ay = 0
176215# hacker.vy = 0
177216
178217def on_on_update ():
179218 if hacker .y < 50 :
180- hacker .vy = 10
181- hacker .ay = 120
219+ hacker .vy = 50
220+ hacker .ay = 200
182221 elif hacker .y <= 90 :
183- hacker .ay = 120
222+ hacker .ay = 200
184223game .on_update (on_on_update )
185224
186225def on_update_interval ():
187226 global stone
188227 stone = sprites .create_projectile_from_side (assets .image ("""
189- cactus_img
190- """ ), 0 , 55 )
228+ stone_img
229+ """ ), 0 , 45 )
191230 stone .x = hacker .x + 5
192231game .on_update_interval (5000 , on_update_interval )
193232
@@ -197,4 +236,23 @@ def on_update_interval2():
197236 smartCloud
198237 """ ), - 19 , 0 )
199238 projectile .y = 50
200- game .on_update_interval (5000 , on_update_interval2 )
239+ game .on_update_interval (2000 , on_update_interval2 )
240+
241+ def on_update_interval3 ():
242+ global diff , curScore
243+ diff = 2 * game .runtime () / 2500
244+ curScore = info .score () - diff
245+ curScore = max (curScore , 0 )
246+ info .set_score (curScore )
247+ game .on_update_interval (3000 , on_update_interval3 )
248+
249+ def on_update_interval4 ():
250+ global fireball
251+ fireball = sprites .create_projectile_from_side (img ("""
252+ a e 3 . a 7 e
253+ a 7 e 2 2 . .
254+ """ ),
255+ - 35 ,
256+ 55 )
257+ fireball .x = hacker .x + 30
258+ game .on_update_interval (8000 , on_update_interval4 )
0 commit comments