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

【花雕动手做】Kitronik 可编程开发板基于 ARCADE MakeCode 之炽烈荣耀小游戏 简单

头像 驴友花雕 2025.08.30 4 0

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

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

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

 

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

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

 

00 (3).jpg

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

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

00 (1).jpg

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

MicroPython实验代码

代码
def on_on_overlap(sprite, otherSprite):
    sprites.destroy(sprite, effects.fire, 100)
    info.change_life_by(-1)
sprites.on_overlap(SpriteKind.projectile, SpriteKind.player, on_on_overlap)

def on_on_overlap2(sprite2, otherSprite2):
    info.change_score_by(1)
sprites.on_overlap(SpriteKind.projectile, SpriteKind.finish, on_on_overlap2)

def on_button_multiplayer_a_pressed(player2):
    mp.get_player_sprite(player2).vy = -200
mp.on_button_event(mp.MultiplayerButton.A,
    ControllerButtonEvent.PRESSED,
    on_button_multiplayer_a_pressed)

projectile: Sprite = None
playerImages = [assets.image("""
        red duck
        """),
    assets.image("""
        blue duck
        """),
    assets.image("""
        orange duck
        """)]

def on_wrap1():
    for index in range(3):
        mp.set_player_sprite(mp.get_player_by_index(index),
            sprites.create(playerImages[index], SpriteKind.player))
        mp.get_player_sprite(mp.get_player_by_index(index)).x = 75 + -30 * index
        mp.get_player_sprite(mp.get_player_by_index(index)).ay = 600
        mp.get_player_sprite(mp.get_player_by_index(index)).set_stay_in_screen(True)
bundles.wrap1(on_wrap1)

finish = sprites.create(img("""
        . . . . . . . f . . . . . . . .
        . . . . . . . f . . . . . . . .
        . . . . . . . f . . . . . . . .
        . . . . . . . f . . . . . . . .
        . . . . . . . f . . . . . . . .
        . . . . . . . f . . . . . . . .
        . . . . . . . f . . . . . . . .
        . . . . . . . f . . . . . . . .
        . . . . . . . f . . . . . . . .
        . . . . . . . f . . . . . . . .
        . . . . . . . f . . . . . . . .
        . . . . . . . f . . . . . . . .
        . . . . . . . f . . . . . . . .
        . . . . . . . f . . . . . . . .
        . . . . . . . f . . . . . . . .
        . . . . . . . f . . . . . . . .
        """),
    SpriteKind.finish)
finish.x = 0
info.set_life(10)

def on_update_interval():
    global projectile
    projectile = sprites.create_projectile_from_side(img("""
            . . . . . . . . . . . . . . . .
            . . . . . . . . . . . . . . . .
            . . . . . 4 4 4 4 4 . . . . . .
            . . . 4 4 4 5 5 5 d 4 4 4 4 . .
            . . 4 d 5 d 5 5 5 d d d 4 4 . .
            . . 4 5 5 1 1 1 d d 5 5 5 4 . .
            . 4 5 5 5 1 1 1 5 1 1 5 5 4 4 .
            . 4 d d 1 1 5 5 5 1 1 5 5 d 4 .
            . 4 5 5 1 1 5 1 1 5 5 d d d 4 .
            . 2 5 5 5 d 1 1 1 5 1 1 5 5 2 .
            . 2 d 5 5 d 1 1 1 5 1 1 5 5 2 .
            . . 2 4 d d 5 5 5 5 d d 5 4 . .
            . . . 2 2 4 d 5 5 d d 4 4 . . .
            . . 2 2 2 2 2 4 4 4 2 2 2 . . .
            . . . 2 2 4 4 4 4 4 4 2 2 . . .
            . . . . . 2 2 2 2 2 2 . . . . .
            """),
        -75,
        0)
    projectile.y = randint(0, 120)
game.on_update_interval(900, on_update_interval)

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

 

18.jpg

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

 

19.jpg

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

 

20.jpg

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

 

21.jpg

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

 

22.jpg

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

 

23.jpg

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

 

24.jpg

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

 

00199---0.gif

(9)实验场景记录

 

25 (1).jpg
25 (2).jpg

评论

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