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

[项目] 【花雕动手做】基于Kitronik可编程开发板炽烈荣耀小游戏

[复制链接]
本帖最后由 驴友花雕 于 2025-8-30 19:06 编辑

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

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

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

【花雕动手做】基于Kitronik可编程开发板炽烈荣耀小游戏图1

【花雕动手做】基于Kitronik可编程开发板炽烈荣耀小游戏图2

【花雕动手做】基于Kitronik可编程开发板炽烈荣耀小游戏图3

驴友花雕  中级技神
 楼主|

发表于 昨天 17:22

【花雕动手做】基于Kitronik可编程开发板躲避火力小游戏

主要特征:
Kitronik ARCADE 是一款功能丰富的手持游戏手柄开发板,可与 Microsoft Arcade 编辑器一起使用。
编写您自己的游戏来玩或从 MakeCode Arcade 网站免费下载游戏。
使用丰富的教育材料从头开始创建游戏,或调整现有代码并学习开源方式。
它配备了全彩液晶广视角屏幕。
它有一个用于音频反馈的压电发声器。
利用振动电机进行触觉反馈。
它还具有;6 个玩家输入按钮、一个菜单按钮、一个重置按钮和一个开/关开关。
还有一个软件音量控制、一个 USB 编程端口和 2 个扩展端口,供专家级用户使用。
ARCADE 可以由 3xAA 电池或微型 USB 连接器供电。

【花雕动手做】基于Kitronik可编程开发板炽烈荣耀小游戏图1

Kitronik ARCADE 是一款专为与 MakeCode Arcade 编辑器一起使用而设计的掌上游戏平台,既可以编写自己的游戏并在 ARCADE 上运行它们,也可以下载现有游戏并享受功能齐全的掌上游戏体验。(网页版:https://arcade.makecode.com/

Kitronik ARCADE 使用 Microsoft MakeCode 平台,具有以下优势:
图形化编程界面:适合初学者,支持拖拽式编程。
即时模拟器:可以实时测试游戏效果。
硬件兼容性:可部署到 Kitronik ARCADE 设备,实现实体游戏体验。
支持 Python/JavaScript:便于进阶学习。

【花雕动手做】基于Kitronik可编程开发板炽烈荣耀小游戏图2

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 19:15

【花雕动手做】基于Kitronik可编程开发板躲避火力小游戏


作为学习与尝试,这里创建一个小游戏,目标是多人炽烈荣耀的游戏!
打开网页版:https://arcade.makecode.com/,设置项目名称:炽烈荣耀

MicroPython实验代码


  1. def on_on_overlap(sprite, otherSprite):
  2.     sprites.destroy(sprite, effects.fire, 100)
  3.     info.change_life_by(-1)
  4. sprites.on_overlap(SpriteKind.projectile, SpriteKind.player, on_on_overlap)
  5. def on_on_overlap2(sprite2, otherSprite2):
  6.     info.change_score_by(1)
  7. sprites.on_overlap(SpriteKind.projectile, SpriteKind.finish, on_on_overlap2)
  8. def on_button_multiplayer_a_pressed(player2):
  9.     mp.get_player_sprite(player2).vy = -200
  10. mp.on_button_event(mp.MultiplayerButton.A,
  11.     ControllerButtonEvent.PRESSED,
  12.     on_button_multiplayer_a_pressed)
  13. projectile: Sprite = None
  14. playerImages = [assets.image("""
  15.         red duck
  16.         """),
  17.     assets.image("""
  18.         blue duck
  19.         """),
  20.     assets.image("""
  21.         orange duck
  22.         """)]
  23. def on_wrap1():
  24.     for index in range(3):
  25.         mp.set_player_sprite(mp.get_player_by_index(index),
  26.             sprites.create(playerImages[index], SpriteKind.player))
  27.         mp.get_player_sprite(mp.get_player_by_index(index)).x = 75 + -30 * index
  28.         mp.get_player_sprite(mp.get_player_by_index(index)).ay = 600
  29.         mp.get_player_sprite(mp.get_player_by_index(index)).set_stay_in_screen(True)
  30. bundles.wrap1(on_wrap1)
  31. finish = sprites.create(img("""
  32.         . . . . . . . f . . . . . . . .
  33.         . . . . . . . f . . . . . . . .
  34.         . . . . . . . f . . . . . . . .
  35.         . . . . . . . f . . . . . . . .
  36.         . . . . . . . f . . . . . . . .
  37.         . . . . . . . f . . . . . . . .
  38.         . . . . . . . f . . . . . . . .
  39.         . . . . . . . f . . . . . . . .
  40.         . . . . . . . f . . . . . . . .
  41.         . . . . . . . f . . . . . . . .
  42.         . . . . . . . f . . . . . . . .
  43.         . . . . . . . f . . . . . . . .
  44.         . . . . . . . f . . . . . . . .
  45.         . . . . . . . f . . . . . . . .
  46.         . . . . . . . f . . . . . . . .
  47.         . . . . . . . f . . . . . . . .
  48.         """),
  49.     SpriteKind.finish)
  50. finish.x = 0
  51. info.set_life(10)
  52. def on_update_interval():
  53.     global projectile
  54.     projectile = sprites.create_projectile_from_side(img("""
  55.             . . . . . . . . . . . . . . . .
  56.             . . . . . . . . . . . . . . . .
  57.             . . . . . 4 4 4 4 4 . . . . . .
  58.             . . . 4 4 4 5 5 5 d 4 4 4 4 . .
  59.             . . 4 d 5 d 5 5 5 d d d 4 4 . .
  60.             . . 4 5 5 1 1 1 d d 5 5 5 4 . .
  61.             . 4 5 5 5 1 1 1 5 1 1 5 5 4 4 .
  62.             . 4 d d 1 1 5 5 5 1 1 5 5 d 4 .
  63.             . 4 5 5 1 1 5 1 1 5 5 d d d 4 .
  64.             . 2 5 5 5 d 1 1 1 5 1 1 5 5 2 .
  65.             . 2 d 5 5 d 1 1 1 5 1 1 5 5 2 .
  66.             . . 2 4 d d 5 5 5 5 d d 5 4 . .
  67.             . . . 2 2 4 d 5 5 d d 4 4 . . .
  68.             . . 2 2 2 2 2 4 4 4 2 2 2 . . .
  69.             . . . 2 2 4 4 4 4 4 4 2 2 . . .
  70.             . . . . . 2 2 2 2 2 2 . . . . .
  71.             """),
  72.         -75,
  73.         0)
  74.     projectile.y = randint(0, 120)
  75. game.on_update_interval(900, on_update_interval)
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 19:18

【花雕动手做】基于Kitronik可编程开发板躲避火力小游戏

图形编程的几个模块
(1)创建三个精灵图像数组,模拟重力的合适位置

【花雕动手做】基于Kitronik可编程开发板炽烈荣耀小游戏图1

(2)设置A键选择跳跃(克服重力)的精灵

【花雕动手做】基于Kitronik可编程开发板炽烈荣耀小游戏图2

(3)发射体0.9秒更新,小范围随机发射

【花雕动手做】基于Kitronik可编程开发板炽烈荣耀小游戏图3

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 19:21

【花雕动手做】基于Kitronik可编程开发板躲避火力小游戏

(4)设定终点线和生命值

【花雕动手做】基于Kitronik可编程开发板炽烈荣耀小游戏图1

(5)设置精灵与终点线碰撞,得分+1

【花雕动手做】基于Kitronik可编程开发板炽烈荣耀小游戏图2

(6)精灵与火焰碰撞,生命值-1

【花雕动手做】基于Kitronik可编程开发板炽烈荣耀小游戏图3
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 19:25

【花雕动手做】基于Kitronik可编程开发板躲避火力小游戏

(7)炽烈荣耀小游戏的完整程序

【花雕动手做】基于Kitronik可编程开发板炽烈荣耀小游戏图1



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 昨天 19:27

【花雕动手做】基于Kitronik可编程开发板躲避火力小游戏

(8)通过模拟器,调试与模拟运行

【花雕动手做】基于Kitronik可编程开发板炽烈荣耀小游戏图1

(9)实验场景记录


【花雕动手做】基于Kitronik可编程开发板炽烈荣耀小游戏图2

【花雕动手做】基于Kitronik可编程开发板炽烈荣耀小游戏图3
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail