12浏览
查看: 12|回复: 4

[项目] 【花雕动手做】基于Kitronik可编程开发板之躲避桶小游戏

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

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

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

【花雕动手做】基于Kitronik可编程开发板之躲避桶小游戏图3

【花雕动手做】基于Kitronik可编程开发板之躲避桶小游戏图1

【花雕动手做】基于Kitronik可编程开发板之躲避桶小游戏图2

驴友花雕  中级技神
 楼主|

发表于 6 小时前

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

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

MicroPython实验参考代码

  1. def on_a_pressed():
  2.     if mySprite.is_hitting_tile(CollisionDirection.BOTTOM):
  3.         mySprite.vy = -200
  4. controller.A.on_event(ControllerButtonEvent.PRESSED, on_a_pressed)
  5. def on_on_overlap(sprite, otherSprite):
  6.     game.over(False)
  7. sprites.on_overlap(SpriteKind.player, SpriteKind.projectile, on_on_overlap)
  8. projectile: Sprite = None
  9. mySprite: Sprite = None
  10. tiles.set_tilemap(tilemap("""
  11.     级别1
  12.     """))
  13. mySprite = sprites.create(img("""
  14.         . . . . . . 5 . 5 . . . . . . .
  15.         . . . . . f 5 5 5 f f . . . . .
  16.         . . . . f 1 5 2 5 1 6 f . . . .
  17.         . . . f 1 6 6 6 6 6 1 6 f . . .
  18.         . . . f 6 6 f f f f 6 1 f . . .
  19.         . . . f 6 f f d d f f 6 f . . .
  20.         . . f 6 f d f d d f d f 6 f . .
  21.         . . f 6 f d 3 d d 3 d f 6 f . .
  22.         . . f 6 6 f d d d d f 6 6 f . .
  23.         . f 6 6 f 3 f f f f 3 f 6 6 f .
  24.         . . f f d 3 5 3 3 5 3 d f f . .
  25.         . . f d d f 3 5 5 3 f d d f . .
  26.         . . . f f 3 3 3 3 3 3 f f . . .
  27.         . . . f 3 3 5 3 3 5 3 3 f . . .
  28.         . . . f f f f f f f f f f . . .
  29.         . . . . . f f . . f f . . . . .
  30.         """),
  31.     SpriteKind.player)
  32. tiles.place_on_tile(mySprite, tiles.get_tile_location(1, 5))
  33. mySprite.ay = 500
  34. def on_update_interval():
  35.     global projectile
  36.     projectile = sprites.create_projectile_from_side(img("""
  37.             1 e e e e e e 1
  38.             e e e e e e e e
  39.             1 1 1 1 1 1 1 1
  40.             e e e e e e e e
  41.             e e e e e e e e
  42.             1 1 1 1 1 1 1 1
  43.             e e e e e e e e
  44.             1 e e e e e e 1
  45.             """),
  46.         randint(-100, -80),
  47.         0)
  48.     tiles.place_on_tile(projectile, tiles.get_tile_location(9, 5))
  49.     info.change_score_by(1)
  50. game.on_update_interval(2000, on_update_interval)
复制代码




回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 6 小时前

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

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

1. 玩家控制
A按钮事件 - 跳跃
python

  1. def on_a_pressed():
  2.    if mySprite.is_hitting_tile(CollisionDirection.BOTTOM):
  3.        mySprite.vy = -200  # 设置垂直速度为负值(向上跳跃)
复制代码

按下A键时,检查玩家是否站在平台上(底部有碰撞)
如果站在平台上,给玩家一个向上的速度(-200)实现跳跃
这是一种简单的跳跃机制,只有在接触地面时才能跳跃

2. 碰撞检测系统
玩家与桶的碰撞
python

  1. def on_on_overlap(sprite, otherSprite):
  2.    game.over(False)  # 游戏结束,失败状态
复制代码

当玩家与桶(抛射物)碰撞时,游戏立即结束
使用game.over(False)表示游戏失败

3. 游戏初始化
瓦片地图设置
python

  1. tiles.set_tilemap(tilemap("级别1"))
复制代码

设置游戏使用的瓦片地图,名为"级别1"
瓦片地图定义了游戏中的平台布局
玩家角色创建
python

  1. mySprite = sprites.create(img("""角色图像"""), SpriteKind.player)
  2. tiles.place_on_tile(mySprite, tiles.get_tile_location(1, 5))  # 放置在位置(1,5)
  3. mySprite.ay = 500  # 设置垂直加速度(重力)
复制代码

创建玩家角色,使用ASCII艺术定义外观
将玩家放置在瓦片地图的位置(1,5)上
设置垂直加速度为500,模拟重力效果

4. 桶生成系统
python

  1. def on_update_interval():
  2.    global projectile
  3.    projectile = sprites.create_projectile_from_side(img("""桶图像"""),
  4.        randint(-100, -80),  # 水平速度(向左)
  5.        0)                   # 垂直速度
  6.    tiles.place_on_tile(projectile, tiles.get_tile_location(9, 5))  # 放置在位置(9,5)
  7.    info.change_score_by(1)  # 得分+1
  8. 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()定时生成敌人

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 5 小时前

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

图形编程参考实验程序

【花雕动手做】基于Kitronik可编程开发板之躲避桶小游戏图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 5 小时前

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

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

【花雕动手做】基于Kitronik可编程开发板之躲避桶小游戏图1

实验场景记录

【花雕动手做】基于Kitronik可编程开发板之躲避桶小游戏图2

【花雕动手做】基于Kitronik可编程开发板之躲避桶小游戏图3



回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail