作为学习、练习与尝试,这里创建一个太空冒险氛围的小游戏。
打开网页版:https://arcade.makecode.com/,设置项目名称:太空冒险氛围
MicroPython实验参考代码
- @namespace
- class SpriteKind:
- Star = SpriteKind.create()
- ship: Sprite = None
- hyper = False
- star: Sprite = None
- scroll = False
- lineAdjust = 0
- sagaSprite: Sprite = None
- sagaImage: Image = None
- storyLines = ["TALE OF TALAGRON",
- "",
- "Once upon a time,",
- "like really long ago,",
- "a peaceful people lived",
- "happily on Planet Talagron.",
- "",
- "They used the rare mineral",
- "Xelantium for energy to",
- "power their planet.",
- "",
- "Dobanites raided Talagron",
- "and took all the known",
- "Xelantium from them. Not",
- "nice! Ugh! Err!",
- "",
- "Your mission is to help",
- "protect Talagron from the",
- "greedy Dobanites. So, on",
- "your way now and good luck!"]
- scroll = True
- sagaImage = image.create(scene.screen_width(), 10 * len(storyLines))
- i = 0
- while i <= len(storyLines) - 1:
- sagaImage.print_center(storyLines[i], i * 10, 7 if i > 0 else 4)
- i += 1
- sagaSprite = sprites.create(sagaImage, 0)
- sagaSprite.top = scene.screen_height() - 1
- sagaSprite.set_flag(SpriteFlag.AUTO_DESTROY, True)
- sagaSprite.vy = -10
-
- def on_a_pressed():
- global hyper, scroll
- if not hyper:
- sagaSprite.vy = 0 if scroll else -10
- scroll = not (scroll)
- controller.A.on_event(ControllerButtonEvent.PRESSED, on_a_pressed)
-
- def on_up_pressed():
- global hyper, scroll, lineAdjust
- if not hyper:
- sagaSprite.vy = 0
- scroll = False
- lineAdjust = (sagaSprite.bottom + 1) % 10
- sagaSprite.bottom -= lineAdjust if (lineAdjust > 0) else 10
- controller.up.on_event(ControllerButtonEvent.PRESSED, on_up_pressed)
-
- def on_down_pressed():
- global hyper, scroll, lineAdjust
- if not hyper:
- sagaSprite.vy = 0
- scroll = False
- lineAdjust = (sagaSprite.top + 1) % 10
- sagaSprite.top += 10 - lineAdjust
- controller.down.on_event(ControllerButtonEvent.PRESSED, on_down_pressed)
-
- def on_on_update():
- global star
- if sagaSprite.bottom < 0:
- sagaSprite.destroy()
- if Math.percent_chance(25) or hyper:
- star = sprites.create(img("""
- 1
- """), SpriteKind.Star)
- star.set_flag(SpriteFlag.AUTO_DESTROY, True)
- star.set_flag(SpriteFlag.GHOST, True)
- star.x = randint(0, scene.screen_width())
- star.y = randint(0, scene.screen_height())
- star.vx = -2 if (star.x < scene.screen_width() / 2) else 2
- star.vy = -1 if (star.y < scene.screen_height() / 2) else 1
- if hyper:
- star.ax = star.vx * 1000
- star.ay = star.vy * 1000
- if Math.percent_chance(15):
- ship.x = randint(scene.screen_width() / 2 - 5, scene.screen_width() / 2 + 5)
- ship.y = randint(scene.screen_height() / 2 - 2, scene.screen_height() / 2 + 2)
- game.on_update(on_on_update)
-
- def on_on_destroyed():
- global ship, hyper
- ship = sprites.create(img("""
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . 7 4 . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . e e . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . e e . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . e e . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . e e . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . 4 e e 4 . . . . . . . . . . . . . .
- . . . . . . . . . . . . e e e e e e e e . . . . . . . . . . . .
- . . . . . . . . . . . e e e e e e e e e e . . . . . . . . . . .
- . . . . . . . . . . e e e e 5 3 3 5 e e e e . . . . . . . . . .
- . . . . . . . . . 4 e e e 5 3 5 2 2 5 e e e 4 . . . . . . . . .
- . . . . . . . 7 7 e e e e 5 2 2 5 5 2 e e e e 7 7 . . . . . . .
- . . . . . . 7 e e e e e e 2 2 5 2 3 3 e e e e e e 7 . . . . . .
- . . . . 7 e e e e e e e e 5 2 2 2 5 2 e e e e e e e e 7 . . . .
- . . e e e e e e e e e e e e 3 5 5 2 e e e e e e e e e e e e . .
- . e e e e e e . . . 7 e e e e e e e e e e 7 . . . e e e e e e .
- e e e e 7 . . . . . . . e e e e e e e e . . . . . . . 7 e e e e
- e 7 . . . . . . . . . . . e e e e e e . . . . . . . . . . . 7 e
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
- """),
- SpriteKind.player)
- ship.start_effect(effects.warm_radial)
- hyper = True
- for slowStar in sprites.all_of_kind(SpriteKind.Star):
- slowStar.ax = slowStar.vx * 1000
- slowStar.ay = slowStar.vy * 1000
- sagaSprite.on_destroyed(on_on_destroyed)
复制代码
|