作为学习、练习与尝试,这里创建一个箭头舞会的小游戏。
打开网页版:https://arcade.makecode.com/,设置项目名称:箭头舞会
MicroPython实验代码
- @namespace
- class SpriteKind:
- projectile = SpriteKind.create()
- # 弹幕碰到墙壁
-
- def on_hit_wall(sprite2, location):
- sprite2.destroy(effects.fire, 100)
- info.change_life_by(-1)
- scene.on_hit_wall(SpriteKind.projectile, on_hit_wall)
-
- def on_up_pressed():
- steve.set_position(60, 110)
- controller.up.on_event(ControllerButtonEvent.PRESSED, on_up_pressed)
-
- def on_down_pressed():
- steve.set_position(100, 110)
- controller.down.on_event(ControllerButtonEvent.PRESSED, on_down_pressed)
-
- def on_right_pressed():
- steve.set_position(130, 110)
- controller.right.on_event(ControllerButtonEvent.PRESSED, on_right_pressed)
-
- # 生命归零
-
- def on_life_zero():
- game.over(True, effects.confetti)
- info.on_life_zero(on_life_zero)
-
- # 玩家碰到弹幕
-
- def on_on_overlap(sprite, otherSprite):
- otherSprite.destroy(effects.disintegrate, 100)
- music.set_volume(10)
- info.change_score_by(1)
- sprites.on_overlap(SpriteKind.player, SpriteKind.projectile, on_on_overlap)
-
- # 玩家控制移动
-
- def on_left_pressed():
- steve.set_position(30, 110)
- controller.left.on_event(ControllerButtonEvent.PRESSED, on_left_pressed)
-
- projectile2: Sprite = None
- x_pos: List[number] = []
- lane = 0
- steve: Sprite = None
- # 玩家角色
- steve = sprites.create(img("""
- . . . . . . f f f . . . . . . .
- . . . . . . f f f . . . . . . .
- . . . . . d 9 9 9 d . . . . . .
- . . . . . d 8 8 8 d . . . . . .
- . . . . . . 8 . 8 . . . . . . .
- . . . . . . c . c . . . . . . .
- """),
- SpriteKind.player)
- steve.set_position(80, 110)
- steve.set_flag(SpriteFlag.STAY_IN_SCREEN, True)
- # 背景与初始状态
- scene.set_background_color(11)
- effects.star_field.start_screen_effect()
- info.set_score(0)
- speed = 40
- # 摄像机移动逻辑(可选)
- cx = scene.screen_width() / 2
- cy = scene.screen_height() / 2
- # 难度逐渐增加
-
- def on_update_interval():
- global speed
- speed += 1
- game.on_update_interval(2000, on_update_interval)
-
- # 弹幕生成逻辑
-
- def on_update_interval2():
- global lane, x_pos, projectile2
- lane = randint(1, 4)
- x_pos = [30, 60, 100, 130]
- projectile2 = sprites.create(img("""
- . . . . . . . . . . . . . . . .
- . . 6 6 6 6 6 6 6 6 6 6 6 6 . .
- . . 6 6 6 6 1 1 6 6 6 6 6 6 . .
- . . 6 6 1 6 6 1 1 1 1 1 6 6 . .
- . . 6 1 6 6 6 6 6 6 6 1 6 6 . .
- . . 6 6 1 6 6 1 1 1 1 1 6 6 . .
- . . 6 6 6 1 6 1 6 6 6 6 6 6 . .
- . . 6 6 6 6 1 1 6 6 6 6 6 6 . .
- . . 6 6 6 6 6 6 6 6 6 6 6 6 . .
- """),
- SpriteKind.projectile)
- projectile2.set_velocity(0, speed)
- projectile2.set_position(x_pos[lane - 1], 8)
- game.on_update_interval(500, on_update_interval2)
复制代码
|