驴友花雕 发表于 2025-9-24 06:41:31

【花雕动手做】基于Kitronik可编程开发板之四人赛马游戏



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

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

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





驴友花雕 发表于 2025-9-24 06:44:41

【花雕动手做】基于Kitronik可编程开发板之四人赛马游戏

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

MicroPython实验代码

@namespace
class SpriteKind:
    Finish = SpriteKind.create()

def on_on_overlap(sprite, otherSprite):
    carnival.on_game_over_expanded(winTypes.MULTI)
sprites.on_overlap(SpriteKind.player, SpriteKind.Finish, on_on_overlap)

def on_player1_button_a_pressed():
    myHorse1.x += 1.5
    myHorse1.start_effect(effects.spray, 100)
    info.player1.change_score_by(1)
controller.player1.on_button_event(ControllerButton.A,
    ControllerButtonEvent.PRESSED,
    on_player1_button_a_pressed)

def on_player4_button_a_pressed():
    myHorse4.x += 1.5
    myHorse4.start_effect(effects.fountain, 100)
    info.player4.change_score_by(1)
controller.player4.on_button_event(ControllerButton.A,
    ControllerButtonEvent.PRESSED,
    on_player4_button_a_pressed)

def on_player2_button_a_pressed():
    myHorse2.x += 1.5
    myHorse2.start_effect(effects.hearts, 100)
    info.player2.change_score_by(1)
controller.player2.on_button_event(ControllerButton.A,
    ControllerButtonEvent.PRESSED,
    on_player2_button_a_pressed)

def on_player3_button_a_pressed():
    myHorse3.x += 1.5
    myHorse3.start_effect(effects.confetti, 100)
    info.player3.change_score_by(1)
controller.player3.on_button_event(ControllerButton.A,
    ControllerButtonEvent.PRESSED,
    on_player3_button_a_pressed)

myHorse4: Sprite = None
myHorse3: Sprite = None
myHorse2: Sprite = None
myHorse1: Sprite = None
scene.set_background_color(1)
scene.set_background_image(assets.image("""
    bgFrame
    """))
myHorse1 = sprites.create(img("""
      ........................bc....
      ......................bcccc...
      ......................cccccc..
      ....................cccccccc..
      .........cccccb....cccccccccc.
      .......bccccccccccccccccc.bccc
      .....ccccccccccccccccccc...bbc
      ...bccbcccccccccccccccc.......
      ccccc...ccccccccccccccb.......
      .ccc....bcccccccccccccc.......
      .........bccc..ccccccccc......
      ..........ccc....cccccccc.....
      ..........bccc.....ccc..bc....
      ..........cbcc......cc...cb...
      ..........b.bcc...ccc....bcb..
      ..............cc..bc..........
      """),
    SpriteKind.player)
myHorse1.set_position(20, 15)
myHorse2 = sprites.create(img("""
      ........................42....
      ......................42222...
      ......................222222..
      ....................22222222..
      .........222224....2222222222.
      .......422222222222222222.4222
      .....2222222222222222222...442
      ...42242222222222222222.......
      22222...222222222222224.......
      .222....422222222222222.......
      .........4222..222222222......
      ..........222....22222222.....
      ..........4222.....222..42....
      ..........2422......22...24...
      ..........4.422...222....424..
      ..............22..42..........
      """),
    SpriteKind.player)
myHorse2.set_position(20, 34)
myHorse3 = sprites.create(img("""
      ........................67....
      ......................67777...
      ......................777777..
      ....................77777777..
      .........777776....7777777777.
      .......677777777777777777.6777
      .....7777777777777777777...667
      ...67767777777777777777.......
      77777...777777777777776.......
      .777....677777777777777.......
      .........6777..777777777......
      ..........777....77777777.....
      ..........6777.....777..67....
      ..........7677......77...76...
      ..........6.677...777....676..
      ..............77..67..........
      """),
    SpriteKind.player)
myHorse3.set_position(20, 57)
myHorse4 = sprites.create(img("""
      ........................54....
      ......................54444...
      ......................444444..
      ....................44444444..
      .........444445....4444444444.
      .......544444444444444444.5444
      .....4444444444444444444...554
      ...54454444444444444444.......
      44444...444444444444445.......
      .444....544444444444444.......
      .........5444..444444444......
      ..........444....44444444.....
      ..........5444.....444..54....
      ..........4544......44...45...
      ..........5.544...444....545..
      ..............44..54..........
      """),
    SpriteKind.player)
myHorse4.set_position(20, 77)
finish = sprites.create(assets.image("""
    finish
    """), SpriteKind.Finish)
finish.set_position(150, 50)
textSprite2 = textsprite.create("Horse Race")
textSprite2.set_position(80, 108)

驴友花雕 发表于 2025-9-24 06:48:54

【花雕动手做】基于Kitronik可编程开发板之四人赛马游戏

这段 Arcade MakeCode 的“四人赛马游戏”代码是一个多玩家竞速小游戏。

游戏目标
四位玩家各控制一匹马,通过不断按下 A 键让马向右移动,最先到达终点(Finish 精灵)者获胜。

核心逻辑解析
1、精灵种类定义
python
@namespace

class SpriteKind:

    Finish = SpriteKind.create()
创建一个新的精灵种类 Finish,用于标记终点线。

2、胜利判定机制
python
def on_on_overlap(sprite, otherSprite):

    carnival.on_game_over_expanded(winTypes.MULTI)

sprites.on_overlap(SpriteKind.player, SpriteKind.Finish, on_on_overlap)
当任意玩家的马(SpriteKind.player)碰到终点线(SpriteKind.Finish)时,触发多人胜利界面。

3、玩家控制逻辑
每位玩家按下 A 键时,控制自己的马向右移动,并触发特效与加分:

python
def on_player1_button_a_pressed():

    myHorse1.x += 1.5

    myHorse1.start_effect(effects.spray, 100)

    info.player1.change_score_by(1)

x += 1.5:马向右移动。

start_effect(...):播放特效(每匹马不同)。

change_score_by(1):玩家得分 +1。

其他玩家(player2、player3、player4)逻辑类似,只是马匹和特效不同:

player2: hearts

player3: confetti

player4: fountain

4、 马匹初始化与位置设置
python
myHorse1 = sprites.create(img("""..."""), SpriteKind.player)

myHorse1.set_position(20, 15)
创建四匹马精灵,分别放置在不同的纵向位置(y = 15, 34, 57, 77),横向起点统一为 x = 20。

5、终点设置
python
finish = sprites.create(assets.image("""finish"""), SpriteKind.Finish)

finish.set_position(150, 50)
创建终点线精灵,放置在屏幕右侧中间位置。

6、背景与标题设置
python
scene.set_background_color(1)

scene.set_background_image(assets.image("""bgFrame"""))

textSprite2 = textsprite.create("Horse Race")

textSprite2.set_position(80, 108)
设置背景颜色与图像。

显示游戏标题 “Horse Race”。

驴友花雕 发表于 2025-9-24 06:53:53

【花雕动手做】基于Kitronik可编程开发板之四人赛马游戏

图形编程参考实验程序



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



实验场景记录





页: [1]
查看完整版本: 【花雕动手做】基于Kitronik可编程开发板之四人赛马游戏