《Arduino 手册(思路与案例)》栏目介绍:
在电子制作与智能控制的应用领域,本栏目涵盖了丰富的内容,包括但不限于以下主题:Arduino BLDC、Arduino CNC、Arduino E-Ink、Arduino ESP32 SPP、Arduino FreeRTOS、Arduino FOC、Arduino GRBL、Arduino HTTP、Arduino HUB75、Arduino IoT Cloud、Arduino JSON、Arduino LCD、Arduino OLED、Arduino LVGL、Arduino PID、Arduino TFT,以及Arduino智能家居、智慧交通、月球基地、智慧校园和智慧农业等多个方面与领域。不仅探讨了这些技术的基础知识和应用领域,还提供了众多具体的参考案例,帮助读者更好地理解和运用Arduino平台进行创新项目。目前,本栏目已有近4000篇相关博客,旨在为广大电子爱好者和开发者提供全面的学习资源与实践指导。通过这些丰富的案例和思路,读者可以获取灵感,推动自己的创作与开发进程。
https://blog.csdn.net/weixin_41659040/category_12422453.html
Kitronik ARCADE 是一款由英国教育科技公司 Kitronik 精心打造的可编程游戏机开发板,专为编程教学与创客实践而设计。该设备原生支持微软的 MakeCode Arcade 平台,用户可通过图形化或 JavaScript 编程方式,轻松创建、下载并运行复古风格的街机游戏。
它集成了彩色 LCD 显示屏、方向控制键、功能按键、蜂鸣器和震动马达等交互组件,提供完整的游戏输入输出体验。无论是初学者进行编程启蒙,还是创客群体开发交互式作品,Kitronik ARCADE 都能作为理想的硬件载体,助力创意实现。
凭借其开源友好、易于上手、兼容性强等特点,该开发板广泛应用于中小学编程课程、创客工作坊、游戏开发教学以及个人项目原型设计,深受教育者与技术爱好者的喜爱。
主要特征:
Kitronik ARCADE 是一款功能丰富的手持游戏手柄开发板,可与 Microsoft Arcade 编辑器一起使用。
编写您自己的游戏来玩或从 MakeCode Arcade 网站免费下载游戏。
使用丰富的教育材料从头开始创建游戏,或调整现有代码并学习开源方式。
它配备了全彩液晶广视角屏幕。
它有一个用于音频反馈的压电发声器。
利用振动电机进行触觉反馈。
它还具有;6 个玩家输入按钮、一个菜单按钮、一个重置按钮和一个开/关开关。
还有一个软件音量控制、一个 USB 编程端口和 2 个扩展端口,供专家级用户使用。
ARCADE 可以由 3xAA 电池或微型 USB 连接器供电。
Kitronik ARCADE 是一款专为与 MakeCode Arcade 编辑器一起使用而设计的掌上游戏平台,既可以编写自己的游戏并在 ARCADE 上运行它们,也可以下载现有游戏并享受功能齐全的掌上游戏体验。(网页版:https://arcade.makecode.com/)
Kitronik ARCADE 使用 Microsoft MakeCode 平台,具有以下优势:
图形化编程界面:适合初学者,支持拖拽式编程。
即时模拟器:可以实时测试游戏效果。
硬件兼容性:可部署到 Kitronik ARCADE 设备,实现实体游戏体验。
支持 Python/JavaScript:便于进阶学习。
作为学习、练习与尝试,这里创建一个生日派对射击的小游戏。
打开网页版:https://arcade.makecode.com/,设置项目名称:生日派对射击
1、MicroPython实验参考代码
def on_on_overlap(sprite, otherSprite):
otherSprite.destroy(effects.confetti, 200)
mp.change_player_state_by(mp.get_player_by_sprite(sprite), MultiplayerState.score, 1)
sprites.launch_bow()
sprites.on_overlap(SpriteKind.player, SpriteKind.bow, on_on_overlap)
scene.set_background_image(assets.image("""
bday_bg
"""))
def on_wrap1():
mp.set_player_sprite(mp.player_selector(mp.PlayerNumber.ONE),
sprites.create(assets.image("""
p1
"""), SpriteKind.player))
mp.move_with_buttons(mp.player_selector(mp.PlayerNumber.ONE), 0, 150)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.ONE)).set_stay_in_screen(True)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.ONE)).left = 15
bundles.wrap1(on_wrap1)
def on_wrap2():
mp.set_player_sprite(mp.player_selector(mp.PlayerNumber.TWO),
sprites.create(assets.image("""
p2
"""), SpriteKind.player))
mp.move_with_buttons(mp.player_selector(mp.PlayerNumber.TWO), 0, 150)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.TWO)).set_stay_in_screen(True)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.TWO)).right = 145
bundles.wrap2(on_wrap2)
sprites.launch_bow()
carnival.start_countdown_game(60, carnival.WinTypes.MULTI)
代码解读
这段代码是一个使用 MakeCode Arcade 编写的多人小游戏,主题是“生日派对射击”,玩家通过接住或碰撞“弓箭”来得分。下面是逐行解读,带你快速掌握它的逻辑和玩法:
1、游戏机制概览
两位玩家在屏幕左右两侧控制角色。
游戏中不断发射“弓箭”。
玩家碰到弓箭时触发彩色爆炸效果、得分,并再次发射弓箭。
游戏限时 60 秒,支持多人得分统计。
2、碰撞事件处理
python
def on_on_overlap(sprite, otherSprite):
otherSprite.destroy(effects.confetti, 200)
mp.change_player_state_by(mp.get_player_by_sprite(sprite), MultiplayerState.score, 1)
sprites.launch_bow()
sprites.on_overlap(SpriteKind.player, SpriteKind.bow, on_on_overlap)
当玩家角色与“弓箭”碰撞时:
弓箭销毁,并播放彩色纸屑爆炸效果,持续 200 毫秒。
玩家得分 +1。
立即发射新的弓箭,保持游戏节奏。
3、场景设置
python
scene.set_background_image(assets.image(“”“bday_bg”“”))
设置背景为生日派对主题图像,营造欢乐氛围。
4、玩家一初始化
python
def on_wrap1():
mp.set_player_sprite(mp.player_selector(mp.PlayerNumber.ONE),
sprites.create(assets.image(“”“p1"”"), SpriteKind.player))
mp.move_with_buttons(mp.player_selector(mp.PlayerNumber.ONE), 0, 150)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.ONE)).set_stay_in_screen(True)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.ONE)).left = 15
bundles.wrap1(on_wrap1)
玩家一使用角色图像 p1。
只能上下移动(X 速度为 0,Y 速度为 150)。
保持在屏幕内,初始位置靠左边(x = 15)。
5、玩家二初始化
python
def on_wrap2():
mp.set_player_sprite(mp.player_selector(mp.PlayerNumber.TWO),
sprites.create(assets.image(“”“p2"”"), SpriteKind.player))
mp.move_with_buttons(mp.player_selector(mp.PlayerNumber.TWO), 0, 150)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.TWO)).set_stay_in_screen(True)
mp.get_player_sprite(mp.player_selector(mp.PlayerNumber.TWO)).right = 145
bundles.wrap2(on_wrap2)
玩家二使用角色图像 p2。
同样只能上下移动,初始位置靠右边(x = 145)。
6、发射弓箭 + 启动游戏
python
sprites.launch_bow()
carnival.start_countdown_game(60, carnival.WinTypes.MULTI)
游戏开始时发射一支弓箭。
启动 60 秒倒计时,游戏结束后根据得分判断胜负(多人模式)。
图形编程参考实验程序
通过模拟器,调试与模拟运行
实验场景记录