回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【花雕动手做】Kitronik 可编程开发板基于 ARCADE MakeCode 之雪花球贺卡 简单

头像 驴友花雕 2025.09.03 11 0

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

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

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

00 (2).jpg
00 (4).jpg

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

MicroPython实验参考代码

代码
def on_a_pressed():
    scene.camera_shake(12, 500)
    snow.big_short_blizzard(scenery)
    music.play(music.create_song(assets.song("""
            winter_wonderland
            """)),
        music.PlaybackMode.IN_BACKGROUND)
controller.A.on_event(ControllerButtonEvent.PRESSED, on_a_pressed)

def on_b_pressed():
    game.show_long_text("Happy Holidays!", DialogLayout.BOTTOM)
controller.B.on_event(ControllerButtonEvent.PRESSED, on_b_pressed)

anim: Sprite = None
scenery: Sprite = None
globe: Sprite = None
scene.set_background_color(7)

def on_wrap1():
    global globe
    globe = sprites.create(assets.image("""
        snow_box
        """), SpriteKind.player)
    globe.z = 1000
sprites.wrap1(on_wrap1)

def on_wrap2():
    global scenery
    scenery = sprites.create(img("""
            ..............................................................................................................
            ......................................................cc5.....................................................
            .....................................................c5aa.....................................................
            ....................................................cc5aac....................................................
            ...................................................c151aaac...................................................
            ..................................................c55111aa1c..................................................
            ..................................................c551511aa5c.................................................
            .................................................cc5511111a5c.................................................
            .................................................1c5115111aac.................................................
            ...............................................5555aaaaaaaaac.................................................
            ..............................................5511aaaaaaaaa.cc................................................
            .............................................5151aaaa1a5555555c...............................................
            ............................................5c11aaa1a1555188855c..............................................
            ...........................................c555aa1a111511888885c..............................................
            ..........................................c.c5aaa11111511888885c..............................................
            ..........................................c.caaaa11115555888881c..............................................
            ..........................................c..5aaaa555555558881c...............................................
            .........................................cc..c.5aaaa551551.51c................................................
            ........................................5515555555aaaa5a155cc5555555c.........................................
            .......................................cc1555151151aaaaaaa55555515155c........................................
            .......................................5c11555888111115aaaaaa11111115c........................................
            .......................................511155888881111155aaaa111111115c.......................................
            .......................................c511118888811111115aaaaaaa111155c......................................
            ........................................51111888881111155111a1aaaa1aa5c.......................................
            ........................................511111888111155111111aaaaaaaaa........................................
            .........................................5111111111151555155515aaaaaac........................................
            .......................................ccc555555555511111555555555a5.c........................................
            .....................................c5555.5555555555555555555.aaaaaa.........................................
            ...................................55511555115555555555555555aaaaaaaac........................................
            .................................c51111111111155555551555555aaaaaaa1555c......................................
            .................................c51111111111111511111111aa888a1111111555.....................................
            .................................511111111111111511111a1aa888881111111115c....................................
            .................................c51111111111111111aaaaaaa888881111111115c....................................
            .................................c511111111111aaaaaaaa1aaa8888811111111115....................................
            .................................c5111115aaaaaa5aaaaaaa5511888111551115115....................................
            ..................................c5a1aaaaa5aaaa5551115551111115555555555c....................................
            ...................................ca5aaaaaa555555555555555551155115115cc.....................................
            ..................................cca1aaa55555555555555555555515555555c.......................................
            .................................cc.aaa555588815555515555555555555555.cccc....................................
            ................................c5a1555555888881111555555555555115555555.ccc..................................
            ...............................aaaaaa5551188888111111555511111111111155151.cc.................................
            ..............................5aaaaaaaaaaa8888811111551155511111111115558885c.................................
            ..............................5aa5aaaaaaa5a888aaaaaaa1aa115551111111555888885c................................
            .............................511a1aaaa1a1aaaaaa1aaaaaaa1aaaaaaaaa551551888885c................................
            .............................511111111a1115555aaaaaaaaaaaaaaaaaaaaaaaaa88888ac................................
            .............................51511111111155155551115a1111aa5aaaa1aaaaaaa888aac................................
            .............................c5511111111111111555555111111511111111aaa11aaaaac................................
            ............................cc1511111111111115111111555555551111111111111aaaac................................
            ............................c.515515111111111111115555555555555555555555555aacc...............................
            ............................c55555115555111551155555551111115515555555555551a55c.......111111.................
            ............................5..55555511555555555555511118881111155555555551aaaacc...1115551111111.............
            ............1111...........c511115111115555555555511111888881111555551a111a5aaa5.c.111111111111111111111......
            ........111111111111.......511111111111155515555551111188888111a5a555aaaa1aaaaaa55cc111111111111111111111.....
            ......111111115111111.....c5111111111111555111111aaaaaa88888aaaaaaaaaaaaaaaaaaa1551cc1111111111111111111111...
            ....11111111111111111115.5c5111111888115551111111aaaaaaa888aa1aaaaaaa111a1aaaa111115c1111111111111111111111...
            ...11111111111111111111111551111a88888a551111a1aaaaaaaaaaaaaaaaa115aa11111155111111cc11111111111111111111111..
            ..11111111111111111111111c5aaaaa188888aaaaa11aaaa1a1111155a1a11111151111115555111151c11111111111111111111111..
            ..11111111111111111111111c55aa1aa88888aaaaaaaaaa155111555511111111151111151111111151c151111111111111111111111.
            .1111111111111111151155555ccaa1a1a888aa115aa11a555555555511111111155555151111111151cc111515511111111111111111.
            .11111111111111111555111111ccaaaaa111111155115115555555111111111555555555555511151cc11111111111111111111111111
            .111111111111111151111111111c15551111115555c555555555555cc111155555555515cc555151cc111151111111111111111111111
            .1111111111111111111111111111cc15511115c5555c5cc1111ccccccc1ccccccccccc11111115ccc5111511111111111111111111111
            .1111111111111111111111111111111cc111ccccccccccccccccccccccccccccccccccccccc1cccc51111115111111111111111111111
            .1111111111111111111111111111132ccccccccccccccccccccccccccccccccccccccccccccccccc11111551111111111111111111111
            .11111111111111111111111111112222cccccc322222222cccccc2cccc222232222cccc23ccccccc3111111111111111111111111111.
            .111111111111111111111551151322222222232222222222222222222222223222222222222222221311111111111111111111111111.
            ..11111111111111111111111111131222222222222222222222222222222222222222222222222133111111111111111111111111111.
            ..1111111111111111111111111111331222222222222222222222222222222222222222222231331111111111111111111111111111..
            ...111111111111111111111111111113312222222222222222222222222222222222231313133111111111111111111111111111111..
            ....1111111111111111111111111111113313131313132222222222222222222313131313131111111111111111111111111111111...
            .....11111111111111111111111111111113131313131313131313131313131313131311111111111111111111111111111111111....
            .....1111111111111111111111111111111111111111113131313131313131311111111111111111111111111111111111111111.....
            .....1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111.....
            ......111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111.....
            .......11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111.....
            .......1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111......
            ........111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111......
            .........1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111.......
            ..........1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111.........
            ............1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111..........
            .............1111111111111111111111111111111111111111111111111111111111111111111111111111111111111............
            ..............11111111111111111111111111111111111111111111111111111111111111111111111111111111111.............
            ...............1111111111111111111111111111111111111111111111111111111111111111111111111111111................
            ..................11111111111111111111111111111111111111111111111111111111111111111111111111..................
            ...................11111111111111111111111111111111111111111111111111111111111111111111111....................
            ........................111111111111111111111111111111111111111111111111111111111111111.......................
            ..........................11...111111111111111111111111111111111111111111111111111............................
            ...................................11111111111111111111111111111111111..1111111...............................
            ....................................1111111111111111111111..11111111..........................................
            ......................................1111....1111111.........1111............................................
            """),
        SpriteKind.player)
    scenery.top = 5
sprites.wrap2(on_wrap2)

def on_wrap3():
    global anim
    anim = sprites.create(img("""
            ...............................................................
            ...............................................................
            ...............................................................
            ................................dd.............................
            ...............................dd2.............................
            ..............................dd.22............................
            ..............................d..22............................
            ..............................dd...............................
            ...............................6dd.............................
            ..............................66.d.............................
            ..............................66..d............................
            ..................................d222.........................
            ..................................d.22.........................
            ..............................ddddd............................
            .........................dddddd66..............................
            .....................dddd2......66.............................
            ....................dd...22.....66.............................
            ..................ddd....22....................................
            ..................d6...........................................
            ..................66...........................................
            ..................66...........................................
            ..................d............................................
            ..................dd...........................................
            ....................dddddddddddd...............................
            ......................2.....6...dddd...........................
            .....................22.....66.....ddd.........................
            .....................22.....66......2dddddd....................
            ....................................22....ddd..................
            ....................................22......6d.................
            ...........................................66d.................
            ...........................................66d.................
            ............................................d..................
            ..........................dddd6dddddddddddddd..................
            .....................dddddd...66.......2.......................
            ...................ddd2.......66......22.......................
            ................dddd..22..............22.......................
            .............dddd.....22.......................................
            ...........ddd..6..............................................
            .........dd....66..............................................
            ........dd.....66..............................................
            ........d......................................................
            ........2......................................................
            .......22d.....................................................
            .......22dd....................................................
            ..........dd...................................................
            ...........ddd.................................................
            .............d6dddddddd2dddddddddddddddd.......................
            .............66........22.......6.......d2ddddddd..............
            .............66........22.......66......22.....6dddddd.........
            ................................66......22.....66....dd........
            ...............................................66.....d........
            ......................................................d........
            ......................................................2........
            .....................................................22........
            ...................................................dd22........
            ............................................ddd6dddd...........
            .................................dddddddddddd.66...............
            .......dddd........ddddddd2ddddddd.....2......66...............
            ........2.dddddd6ddd.....22.......6....22......................
            ........22......66.......22......66....22......................
            ........22......66...............66............................
            ...............................................................
            """),
        SpriteKind.player)
    anim.bottom = 65
    animation.run_image_animation(anim,
        [img("""
                ...............................................................
                ...............................................................
                ...............................................................
                ................................dd.............................
                ...............................dd2.............................
                ..............................dd.22............................
                ..............................d..22............................
                ..............................dd...............................
                ...............................6dd.............................
                ..............................96.d.............................
                ..............................99..d............................
                ..................................d222.........................
                ..................................d.22.........................
                ..............................ddddd............................
                .........................dddddd66..............................
                .....................dddd2......69.............................
                ....................dd...22.....99.............................
                ..................ddd....22....................................
                ..................d6...........................................
                ..................96...........................................
                ..................99...........................................
                ..................d............................................
                ..................dd...........................................
                ....................dddddddddddd...............................
                ......................2.....6...dddd...........................
                .....................22.....69.....ddd.........................
                .....................22.....99......2dddddd....................
                ....................................22....ddd..................
                ....................................22......6d.................
                ...........................................96d.................
                ...........................................99d.................
                ............................................d..................
                ..........................dddd6dddddddddddddd..................
                .....................dddddd...69.......2.......................
                ...................ddd2.......99......22.......................
                ................dddd..22..............22.......................
                .............dddd.....22.......................................
                ...........ddd..6..............................................
                .........dd....96..............................................
                ........dd.....99..............................................
                ........d......................................................
                ........2......................................................
                .......22d.....................................................
                .......22dd....................................................
                ..........dd...................................................
                ...........ddd.................................................
                .............d6dddddddd2dddddddddddddddd.......................
                .............96........22.......6.......d2ddddddd..............
                .............99........22.......69......22.....6dddddd.........
                ................................99......22.....69....dd........
                ...............................................99.....d........
                ......................................................d........
                ......................................................2........
                .....................................................22........
                ...................................................dd22........
                ............................................ddd6dddd...........
                .................................dddddddddddd.96...............
                .......dddd........ddddddd2ddddddd.....2......99...............
                ........2.dddddd6ddd.....22.......6....22......................
                ........22......69.......22......96....22......................
                ........22......99...............99............................
                ...............................................................
                """),
            img("""
                ...............................................................
                ...............................................................
                ...............................................................
                ................................dd.............................
                ...............................dd2.............................
                ..............................dd.23............................
                ..............................d..33............................
                ..............................dd...............................
                ...............................6dd.............................
                ..............................66.d.............................
                ..............................66..d............................
                ..................................d223.........................
                ..................................d.33.........................
                ..............................ddddd............................
                .........................dddddd66..............................
                .....................dddd2......66.............................
                ....................dd...23.....66.............................
                ..................ddd....33....................................
                ..................d6...........................................
                ..................66...........................................
                ..................66...........................................
                ..................d............................................
                ..................dd...........................................
                ....................dddddddddddd...............................
                ......................2.....6...dddd...........................
                .....................32.....66.....ddd.........................
                .....................33.....66......2dddddd....................
                ....................................23....ddd..................
                ....................................33......6d.................
                ...........................................66d.................
                ...........................................66d.................
                ............................................d..................
                ..........................dddd6dddddddddddddd..................
                .....................dddddd...66.......2.......................
                ...................ddd2.......66......32.......................
                ................dddd..23..............33.......................
                .............dddd.....33.......................................
                ...........ddd..6..............................................
                .........dd....66..............................................
                ........dd.....66..............................................
                ........d......................................................
                ........2......................................................
                .......32d.....................................................
                .......33dd....................................................
                ..........dd...................................................
                ...........ddd.................................................
                .............d6dddddddd2dddddddddddddddd.......................
                .............66........23.......6.......d2ddddddd..............
                .............66........33.......66......32.....6dddddd.........
                ................................66......33.....66....dd........
                ...............................................66.....d........
                ......................................................d........
                ......................................................2........
                .....................................................32........
                ...................................................dd33........
                ............................................ddd6dddd...........
                .................................dddddddddddd.66...............
                .......dddd........ddddddd2ddddddd.....2......66...............
                ........2.dddddd6ddd.....32.......6....23......................
                ........23......66.......33......66....33......................
                ........33......66...............66............................
                ...............................................................
                """)],
        200,
        True)
sprites.wrap3(on_wrap3)

场景概述
这是一个冬季雪景场景,包含雪地球体、背景雪景和一个动画角色。用户可以通过按下A键触发暴风雪效果和播放圣诞音乐,按下B键显示节日祝福。

核心代码解析

1. 按钮事件处理
A按钮事件 - 暴风雪效果
python
def on_a_pressed():
scene.camera_shake(12, 500) # 相机震动效果
snow.big_short_blizzard(scenery) # 在雪景上创建暴风雪
music.play(music.create_song(assets.song("winter_wonderland")), # 播放圣诞音乐
music.PlaybackMode.IN_BACKGROUND)
按下A键时触发相机震动
在雪景上生成暴风雪效果
在后台播放"Winter Wonderland"音乐

B按钮事件 - 显示祝福
python
def on_b_pressed():
game.show_long_text("Happy Holidays!", DialogLayout.BOTTOM) # 底部显示节日祝福
按下B键时在屏幕底部显示"Happy Holidays!"祝福信息

2. 变量声明和初始化
python
anim: Sprite = None # 动画角色
scenery: Sprite = None # 雪景背景
globe: Sprite = None # 雪地球体
scene.set_background_color(7) # 设置背景颜色为灰色

3. 雪地球体创建
python
def on_wrap1():
global globe
globe = sprites.create(assets.image("snow_box"), SpriteKind.player) # 创建雪地球体
globe.z = 1000 # 设置z轴高度(在最前面显示)

4. 雪景背景创建
python
def on_wrap2():
global scenery
scenery = sprites.create(img("""..."""), SpriteKind.player) # 创建雪景图像
scenery.top = 5 # 设置顶部位置
使用ASCII艺术创建了一个复杂的雪景图像,包含:
雪地、树木、房屋等冬季元素
数字组成的细节(如555、111等表示不同颜色深度)

5. 动画角色创建
python
def on_wrap3():
global anim
anim = sprites.create(img("""..."""), SpriteKind.player) # 创建动画角色
anim.bottom = 65 # 设置底部位置
animation.run_image_animation(anim, # 运行动画
[img("""帧1"""), img("""帧2""")], # 两帧动画
200, # 每200毫秒切换一帧
True) # 循环播放
创建一个动画角色,可能是雪人或圣诞老人
使用两帧动画实现简单的动态效果
设置角色位于屏幕底部

技术特点
多层视觉元素:
背景层:灰色背景
雪景层:复杂的雪地场景
前景层:雪地球体和动画角色
交互效果:
相机震动:增强暴风雪的冲击感
粒子效果:暴风雪模拟
音频反馈:节日音乐播放
动画系统:
使用两帧动画创建简单但有效的动态效果
通过animation.run_image_animation()控制动画播放
资源管理:
使用预定义的图像资源("snow_box")
内联ASCII艺术图像定义
场景元素分析

图形编程参考实验程序

49.jpg

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

00201---0.gif

实验场景记录

50 (1).jpg50 (2).jpg

评论

user-avatar
icon 他的勋章
    展开更多