14浏览
查看: 14|回复: 4

[项目] 【花雕动手做】基于 Kitronik 可编程开发板之箭头舞会

[复制链接]
Kitronik ARCADE 是一款由英国教育科技公司 Kitronik 精心打造的可编程游戏机开发板,专为编程教学与创客实践而设计。该设备原生支持微软的 MakeCode Arcade 平台,用户可通过图形化或 JavaScript 编程方式,轻松创建、下载并运行复古风格的街机游戏。

它集成了彩色 LCD 显示屏、方向控制键、功能按键、蜂鸣器和震动马达等交互组件,提供完整的游戏输入输出体验。无论是初学者进行编程启蒙,还是创客群体开发交互式作品,Kitronik ARCADE 都能作为理想的硬件载体,助力创意实现。

凭借其开源友好、易于上手、兼容性强等特点,该开发板广泛应用于中小学编程课程、创客工作坊、游戏开发教学以及个人项目原型设计,深受教育者与技术爱好者的喜爱。

【花雕动手做】基于 Kitronik 可编程开发板之箭头舞会图3

【花雕动手做】基于 Kitronik 可编程开发板之箭头舞会图2

【花雕动手做】基于 Kitronik 可编程开发板之箭头舞会图1

驴友花雕  中级技神
 楼主|

发表于 2 小时前

【花雕动手做】基于 Kitronik 可编程开发板之箭头舞会

作为学习、练习与尝试,这里创建一个箭头舞会的小游戏。
打开网页版:https://arcade.makecode.com/,设置项目名称:箭头舞会

MicroPython实验代码

  1. @namespace
  2. class SpriteKind:
  3.     projectile = SpriteKind.create()
  4. # 弹幕碰到墙壁
  5. def on_hit_wall(sprite2, location):
  6.     sprite2.destroy(effects.fire, 100)
  7.     info.change_life_by(-1)
  8. scene.on_hit_wall(SpriteKind.projectile, on_hit_wall)
  9. def on_up_pressed():
  10.     steve.set_position(60, 110)
  11. controller.up.on_event(ControllerButtonEvent.PRESSED, on_up_pressed)
  12. def on_down_pressed():
  13.     steve.set_position(100, 110)
  14. controller.down.on_event(ControllerButtonEvent.PRESSED, on_down_pressed)
  15. def on_right_pressed():
  16.     steve.set_position(130, 110)
  17. controller.right.on_event(ControllerButtonEvent.PRESSED, on_right_pressed)
  18. # 生命归零
  19. def on_life_zero():
  20.     game.over(True, effects.confetti)
  21. info.on_life_zero(on_life_zero)
  22. # 玩家碰到弹幕
  23. def on_on_overlap(sprite, otherSprite):
  24.     otherSprite.destroy(effects.disintegrate, 100)
  25.     music.set_volume(10)
  26.     info.change_score_by(1)
  27. sprites.on_overlap(SpriteKind.player, SpriteKind.projectile, on_on_overlap)
  28. # 玩家控制移动
  29. def on_left_pressed():
  30.     steve.set_position(30, 110)
  31. controller.left.on_event(ControllerButtonEvent.PRESSED, on_left_pressed)
  32. projectile2: Sprite = None
  33. x_pos: List[number] = []
  34. lane = 0
  35. steve: Sprite = None
  36. # 玩家角色
  37. steve = sprites.create(img("""
  38.         . . . . . . f f f . . . . . . .
  39.         . . . . . . f f f . . . . . . .
  40.         . . . . . d 9 9 9 d . . . . . .
  41.         . . . . . d 8 8 8 d . . . . . .
  42.         . . . . . . 8 . 8 . . . . . . .
  43.         . . . . . . c . c . . . . . . .
  44.         """),
  45.     SpriteKind.player)
  46. steve.set_position(80, 110)
  47. steve.set_flag(SpriteFlag.STAY_IN_SCREEN, True)
  48. # 背景与初始状态
  49. scene.set_background_color(11)
  50. effects.star_field.start_screen_effect()
  51. info.set_score(0)
  52. speed = 40
  53. # 摄像机移动逻辑(可选)
  54. cx = scene.screen_width() / 2
  55. cy = scene.screen_height() / 2
  56. # 难度逐渐增加
  57. def on_update_interval():
  58.     global speed
  59.     speed += 1
  60. game.on_update_interval(2000, on_update_interval)
  61. # 弹幕生成逻辑
  62. def on_update_interval2():
  63.     global lane, x_pos, projectile2
  64.     lane = randint(1, 4)
  65.     x_pos = [30, 60, 100, 130]
  66.     projectile2 = sprites.create(img("""
  67.             . . . . . . . . . . . . . . . .
  68.             . . 6 6 6 6 6 6 6 6 6 6 6 6 . .
  69.             . . 6 6 6 6 1 1 6 6 6 6 6 6 . .
  70.             . . 6 6 1 6 6 1 1 1 1 1 6 6 . .
  71.             . . 6 1 6 6 6 6 6 6 6 1 6 6 . .
  72.             . . 6 6 1 6 6 1 1 1 1 1 6 6 . .
  73.             . . 6 6 6 1 6 1 6 6 6 6 6 6 . .
  74.             . . 6 6 6 6 1 1 6 6 6 6 6 6 . .
  75.             . . 6 6 6 6 6 6 6 6 6 6 6 6 . .
  76.             """),
  77.         SpriteKind.projectile)
  78.     projectile2.set_velocity(0, speed)
  79.     projectile2.set_position(x_pos[lane - 1], 8)
  80. game.on_update_interval(500, on_update_interval2)
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2 小时前

【花雕动手做】基于 Kitronik 可编程开发板之箭头舞会

这段代码是用 Microsoft MakeCode Arcade 编写的一个“箭头舞会”游戏的核心逻辑。它模拟了一个玩家通过按方向键躲避从上方落下的弹幕的小游戏。结构解读如下:

游戏核心机制概览


【花雕动手做】基于 Kitronik 可编程开发板之箭头舞会图1

1、玩家控制逻辑
玩家角色 steve 被创建并初始化在屏幕底部,允许在四个固定位置之间移动:

python
  1. steve.set_position(80, 110)
复制代码


通过方向键触发事件,改变玩家位置:

python
  1. controller.left.on_event(...): steve.set_position(30, 110)
  2. controller.up.on_event(...): steve.set_position(60, 110)
  3. controller.down.on_event(...): steve.set_position(100, 110)
  4. controller.right.on_event(...): steve.set_position(130, 110)
复制代码



2、弹幕生成与移动
每 500 毫秒生成一个弹幕,位置随机选择四个通道之一:

python
  1. x_pos = [30, 60, 100, 130]
  2. lane = randint(1, 4)
  3. projectile2.set_position(x_pos[lane - 1], 8)
复制代码


弹幕垂直向下移动,速度由变量 speed 控制,并每 2 秒递增:

python
  1. projectile2.set_velocity(0, speed)
  2. speed += 1
复制代码



3、碰撞与生命系统
弹幕碰墙:销毁弹幕并扣除玩家生命:

python
  1. scene.on_hit_wall(SpriteKind.projectile, on_hit_wall)
复制代码


玩家碰弹幕:销毁弹幕、加分、播放音效:

python
  1. sprites.on_overlap(SpriteKind.player, SpriteKind.projectile, on_on_overlap)
复制代码


生命归零:触发胜利动画并结束游戏:

python
  1. info.on_life_zero(on_life_zero)
复制代码



4、视觉与音效效果
背景设置为星空效果 effects.star_field.start_screen_effect()

弹幕销毁时使用火焰或解体特效

播放音效并设置音量 music.set_volume(10)


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2 小时前

【花雕动手做】基于 Kitronik 可编程开发板之箭头舞会

图形编程参考实验程序

【花雕动手做】基于 Kitronik 可编程开发板之箭头舞会图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2 小时前

【花雕动手做】基于 Kitronik 可编程开发板之箭头舞会

通过模拟器,调试与模拟运行

【花雕动手做】基于 Kitronik 可编程开发板之箭头舞会图1

实验场景记录

【花雕动手做】基于 Kitronik 可编程开发板之箭头舞会图2

【花雕动手做】基于 Kitronik 可编程开发板之箭头舞会图3

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail