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

【花雕动手做】Kitronik 可编程开发板基于 ARCADE MakeCode 之躲避桶小游戏 简单

头像 驴友花雕 2025.09.06 5 0

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

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

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

 

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

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

MicroPython实验参考代码

 

代码
def on_a_pressed():
    if mySprite.is_hitting_tile(CollisionDirection.BOTTOM):
        mySprite.vy = -200
controller.A.on_event(ControllerButtonEvent.PRESSED, on_a_pressed)

def on_on_overlap(sprite, otherSprite):
    game.over(False)
sprites.on_overlap(SpriteKind.player, SpriteKind.projectile, on_on_overlap)

projectile: Sprite = None
mySprite: Sprite = None
tiles.set_tilemap(tilemap("""
    级别1
    """))
mySprite = sprites.create(img("""
        . . . . . . 5 . 5 . . . . . . .
        . . . . . f 5 5 5 f f . . . . .
        . . . . f 1 5 2 5 1 6 f . . . .
        . . . f 1 6 6 6 6 6 1 6 f . . .
        . . . f 6 6 f f f f 6 1 f . . .
        . . . f 6 f f d d f f 6 f . . .
        . . f 6 f d f d d f d f 6 f . .
        . . f 6 f d 3 d d 3 d f 6 f . .
        . . f 6 6 f d d d d f 6 6 f . .
        . f 6 6 f 3 f f f f 3 f 6 6 f .
        . . f f d 3 5 3 3 5 3 d f f . .
        . . f d d f 3 5 5 3 f d d f . .
        . . . f f 3 3 3 3 3 3 f f . . .
        . . . f 3 3 5 3 3 5 3 3 f . . .
        . . . f f f f f f f f f f . . .
        . . . . . f f . . f f . . . . .
        """),
    SpriteKind.player)
tiles.place_on_tile(mySprite, tiles.get_tile_location(1, 5))
mySprite.ay = 500

def on_update_interval():
    global projectile
    projectile = sprites.create_projectile_from_side(img("""
            1 e e e e e e 1
            e e e e e e e e
            1 1 1 1 1 1 1 1
            e e e e e e e e
            e e e e e e e e
            1 1 1 1 1 1 1 1
            e e e e e e e e
            1 e e e e e e 1
            """),
        randint(-100, -80),
        0)
    tiles.place_on_tile(projectile, tiles.get_tile_location(9, 5))
    info.change_score_by(1)
game.on_update_interval(2000, on_update_interval)

这是一个躲避类游戏,玩家控制一个角色在平台上跳跃,躲避从右侧飞来的桶。如果被桶击中,游戏结束。
核心代码解析

1. 玩家控制
A按钮事件 - 跳跃
python
def on_a_pressed():
   if mySprite.is_hitting_tile(CollisionDirection.BOTTOM):
       mySprite.vy = -200  # 设置垂直速度为负值(向上跳跃)
按下A键时,检查玩家是否站在平台上(底部有碰撞)

如果站在平台上,给玩家一个向上的速度(-200)实现跳跃

这是一种简单的跳跃机制,只有在接触地面时才能跳跃

2. 碰撞检测系统
玩家与桶的碰撞
python
def on_on_overlap(sprite, otherSprite):
   game.over(False)  # 游戏结束,失败状态
当玩家与桶(抛射物)碰撞时,游戏立即结束

使用game.over(False)表示游戏失败

3. 游戏初始化
瓦片地图设置
python
tiles.set_tilemap(tilemap("级别1"))
设置游戏使用的瓦片地图,名为"级别1"

瓦片地图定义了游戏中的平台布局

玩家角色创建
python
mySprite = sprites.create(img("""角色图像"""), SpriteKind.player)
tiles.place_on_tile(mySprite, tiles.get_tile_location(1, 5))  # 放置在位置(1,5)
mySprite.ay = 500  # 设置垂直加速度(重力)
创建玩家角色,使用ASCII艺术定义外观

将玩家放置在瓦片地图的位置(1,5)上

设置垂直加速度为500,模拟重力效果

4. 桶生成系统
python
def on_update_interval():
   global projectile
   projectile = sprites.create_projectile_from_side(img("""桶图像"""),
       randint(-100, -80),  # 水平速度(向左)
       0)                   # 垂直速度
   tiles.place_on_tile(projectile, tiles.get_tile_location(9, 5))  # 放置在位置(9,5)
   info.change_score_by(1)  # 得分+1
game.on_update_interval(2000, on_update_interval)  # 每2000毫秒生成一个桶
每2秒生成一个新的桶(抛射物)

桶使用ASCII艺术定义外观

桶以随机速度(-100到-80)向左水平移动

桶从屏幕右侧(9,5)的位置出现

每生成一个桶,玩家得分增加1分

游戏机制总结
控制方式:使用A键跳跃,只能在站在平台上时跳跃

躲避目标:躲避从右侧飞来的桶

得分系统:每生成一个桶得1分(生存时间越长得分越高)

失败条件:被桶击中即游戏结束

物理系统:使用重力加速度模拟跳跃物理效果

技术特点
瓦片地图:使用瓦片地图定义游戏场景

物理模拟:通过设置垂直加速度(ay)模拟重力

碰撞检测:使用is_hitting_tile()检测与平台的碰撞

定时生成:使用game.on_update_interval()定时生成敌人

图形编程参考实验程序

 

63.jpg

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

 

 

00203---.gif

实验场景记录

 

64 (1).jpg64 (2).jpg
 

评论

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