20浏览
查看: 20|回复: 3

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

[复制链接]
【花雕动手做】基于Kitronik可编程开发板之四人赛马游戏图1

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

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

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


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

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

驴友花雕  中级技神
 楼主|

发表于 8 小时前

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

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

MicroPython实验代码

  1. @namespace
  2. class SpriteKind:
  3.     Finish = SpriteKind.create()
  4. def on_on_overlap(sprite, otherSprite):
  5.     carnival.on_game_over_expanded(winTypes.MULTI)
  6. sprites.on_overlap(SpriteKind.player, SpriteKind.Finish, on_on_overlap)
  7. def on_player1_button_a_pressed():
  8.     myHorse1.x += 1.5
  9.     myHorse1.start_effect(effects.spray, 100)
  10.     info.player1.change_score_by(1)
  11. controller.player1.on_button_event(ControllerButton.A,
  12.     ControllerButtonEvent.PRESSED,
  13.     on_player1_button_a_pressed)
  14. def on_player4_button_a_pressed():
  15.     myHorse4.x += 1.5
  16.     myHorse4.start_effect(effects.fountain, 100)
  17.     info.player4.change_score_by(1)
  18. controller.player4.on_button_event(ControllerButton.A,
  19.     ControllerButtonEvent.PRESSED,
  20.     on_player4_button_a_pressed)
  21. def on_player2_button_a_pressed():
  22.     myHorse2.x += 1.5
  23.     myHorse2.start_effect(effects.hearts, 100)
  24.     info.player2.change_score_by(1)
  25. controller.player2.on_button_event(ControllerButton.A,
  26.     ControllerButtonEvent.PRESSED,
  27.     on_player2_button_a_pressed)
  28. def on_player3_button_a_pressed():
  29.     myHorse3.x += 1.5
  30.     myHorse3.start_effect(effects.confetti, 100)
  31.     info.player3.change_score_by(1)
  32. controller.player3.on_button_event(ControllerButton.A,
  33.     ControllerButtonEvent.PRESSED,
  34.     on_player3_button_a_pressed)
  35. myHorse4: Sprite = None
  36. myHorse3: Sprite = None
  37. myHorse2: Sprite = None
  38. myHorse1: Sprite = None
  39. scene.set_background_color(1)
  40. scene.set_background_image(assets.image("""
  41.     bgFrame
  42.     """))
  43. myHorse1 = sprites.create(img("""
  44.         ........................bc....
  45.         ......................bcccc...
  46.         ......................cccccc..
  47.         ....................cccccccc..
  48.         .........cccccb....cccccccccc.
  49.         .......bccccccccccccccccc.bccc
  50.         .....ccccccccccccccccccc...bbc
  51.         ...bccbcccccccccccccccc.......
  52.         ccccc...ccccccccccccccb.......
  53.         .ccc....bcccccccccccccc.......
  54.         .........bccc..ccccccccc......
  55.         ..........ccc....cccccccc.....
  56.         ..........bccc.....ccc..bc....
  57.         ..........cbcc......cc...cb...
  58.         ..........b.bcc...ccc....bcb..
  59.         ..............cc..bc..........
  60.         """),
  61.     SpriteKind.player)
  62. myHorse1.set_position(20, 15)
  63. myHorse2 = sprites.create(img("""
  64.         ........................42....
  65.         ......................42222...
  66.         ......................222222..
  67.         ....................22222222..
  68.         .........222224....2222222222.
  69.         .......422222222222222222.4222
  70.         .....2222222222222222222...442
  71.         ...42242222222222222222.......
  72.         22222...222222222222224.......
  73.         .222....422222222222222.......
  74.         .........4222..222222222......
  75.         ..........222....22222222.....
  76.         ..........4222.....222..42....
  77.         ..........2422......22...24...
  78.         ..........4.422...222....424..
  79.         ..............22..42..........
  80.         """),
  81.     SpriteKind.player)
  82. myHorse2.set_position(20, 34)
  83. myHorse3 = sprites.create(img("""
  84.         ........................67....
  85.         ......................67777...
  86.         ......................777777..
  87.         ....................77777777..
  88.         .........777776....7777777777.
  89.         .......677777777777777777.6777
  90.         .....7777777777777777777...667
  91.         ...67767777777777777777.......
  92.         77777...777777777777776.......
  93.         .777....677777777777777.......
  94.         .........6777..777777777......
  95.         ..........777....77777777.....
  96.         ..........6777.....777..67....
  97.         ..........7677......77...76...
  98.         ..........6.677...777....676..
  99.         ..............77..67..........
  100.         """),
  101.     SpriteKind.player)
  102. myHorse3.set_position(20, 57)
  103. myHorse4 = sprites.create(img("""
  104.         ........................54....
  105.         ......................54444...
  106.         ......................444444..
  107.         ....................44444444..
  108.         .........444445....4444444444.
  109.         .......544444444444444444.5444
  110.         .....4444444444444444444...554
  111.         ...54454444444444444444.......
  112.         44444...444444444444445.......
  113.         .444....544444444444444.......
  114.         .........5444..444444444......
  115.         ..........444....44444444.....
  116.         ..........5444.....444..54....
  117.         ..........4544......44...45...
  118.         ..........5.544...444....545..
  119.         ..............44..54..........
  120.         """),
  121.     SpriteKind.player)
  122. myHorse4.set_position(20, 77)
  123. finish = sprites.create(assets.image("""
  124.     finish
  125.     """), SpriteKind.Finish)
  126. finish.set_position(150, 50)
  127. textSprite2 = textsprite.create("Horse Race")
  128. textSprite2.set_position(80, 108)
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 8 小时前

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

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

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

核心逻辑解析
1、精灵种类定义
python
  1. @namespace
  2. class SpriteKind:
  3.     Finish = SpriteKind.create()
复制代码

创建一个新的精灵种类 Finish,用于标记终点线。

2、胜利判定机制
python
  1. def on_on_overlap(sprite, otherSprite):
  2.     carnival.on_game_over_expanded(winTypes.MULTI)
  3. sprites.on_overlap(SpriteKind.player, SpriteKind.Finish, on_on_overlap)
复制代码

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

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

python
  1. def on_player1_button_a_pressed():
  2.     myHorse1.x += 1.5
  3.     myHorse1.start_effect(effects.spray, 100)
  4.     info.player1.change_score_by(1)
  5. x += 1.5:马向右移动。
复制代码


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

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

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

player2: hearts

player3: confetti

player4: fountain

4、 马匹初始化与位置设置
python
  1. myHorse1 = sprites.create(img("""..."""), SpriteKind.player)
  2. myHorse1.set_position(20, 15)
复制代码

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

5、终点设置
python
  1. finish = sprites.create(assets.image("""finish"""), SpriteKind.Finish)
  2. finish.set_position(150, 50)
复制代码

创建终点线精灵,放置在屏幕右侧中间位置。

6、背景与标题设置
python
  1. scene.set_background_color(1)
  2. scene.set_background_image(assets.image("""bgFrame"""))
  3. textSprite2 = textsprite.create("Horse Race")
  4. textSprite2.set_position(80, 108)
复制代码

设置背景颜色与图像。

显示游戏标题 “Horse Race”。

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 8 小时前

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

图形编程参考实验程序

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

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

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

实验场景记录

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

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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail