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

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

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

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

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

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


【花雕动手做】基于Kitronik可编程开发板之多人绘画游戏图3

【花雕动手做】基于Kitronik可编程开发板之多人绘画游戏图2

驴友花雕  中级技神
 楼主|

发表于 2 小时前

【花雕动手做】基于Kitronik可编程开发板之多人绘画游戏

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

MicroPython实验代码

  1. @namespace
  2. class SpriteKind:
  3.     Trailing = SpriteKind.create()
  4. def on_player3_button_b_pressed():
  5.     changeBrushSize(2)
  6. controller.player3.on_button_event(ControllerButton.B,
  7.     ControllerButtonEvent.PRESSED,
  8.     on_player3_button_b_pressed)
  9. def on_on_created(sprite):
  10.     sprite.set_stay_in_screen(True)
  11.     sprite.set_flag(SpriteFlag.INVISIBLE, True)
  12. sprites.on_created(SpriteKind.Trailing, on_on_created)
  13. def on_player1_button_a_pressed():
  14.     startPaint(0)
  15. controller.player1.on_button_event(ControllerButton.A,
  16.     ControllerButtonEvent.PRESSED,
  17.     on_player1_button_a_pressed)
  18. def on_on_created2(sprite2):
  19.     sprite2.set_stay_in_screen(True)
  20. sprites.on_created(SpriteKind.player, on_on_created2)
  21. def on_player4_button_a_pressed():
  22.     startPaint(3)
  23. controller.player4.on_button_event(ControllerButton.A,
  24.     ControllerButtonEvent.PRESSED,
  25.     on_player4_button_a_pressed)
  26. def on_player2_button_b_pressed():
  27.     changeBrushSize(1)
  28. controller.player2.on_button_event(ControllerButton.B,
  29.     ControllerButtonEvent.PRESSED,
  30.     on_player2_button_b_pressed)
  31. def changeBrushSize(index: number):
  32.     global sizeIndicator
  33.     sizeIndicator = sprites.create(img("""
  34.             . . 1 1 1 1 1 1 1 1 1 1 1 1 .
  35.             . 1 1 1 1 1 1 1 1 1 1 1 1 1 .
  36.             1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  37.             1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  38.             1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  39.             1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  40.             1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  41.             1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  42.             1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  43.             1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  44.             1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  45.             1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  46.             . 1 1 1 1 1 1 1 1 1 1 1 1 1 .
  47.             . . 1 1 1 1 1 1 1 1 1 1 1 . .
  48.             . . . . . . 1 1 1 . . . . . .
  49.             . . . . . . . 1 . . . . . . .
  50.             """),
  51.         SpriteKind.player)
  52.     sizeIndicator.x = players[index].x
  53.     sizeIndicator.bottom = players[index].top
  54.     sizeIndicator.lifespan = 750
  55.     brushSize[index] = max(1, (brushSize[index] + 1) % 7)
  56.     spriteutils.fill_circle(sizeIndicator.image,
  57.         7,
  58.         6,
  59.         brushSize[index],
  60.         brushColors[index])
  61. def on_player2_button_a_pressed():
  62.     startPaint(1)
  63. controller.player2.on_button_event(ControllerButton.A,
  64.     ControllerButtonEvent.PRESSED,
  65.     on_player2_button_a_pressed)
  66. def on_player1_button_b_pressed():
  67.     changeBrushSize(0)
  68. controller.player1.on_button_event(ControllerButton.B,
  69.     ControllerButtonEvent.PRESSED,
  70.     on_player1_button_b_pressed)
  71. def startPaint(index2: number):
  72.     spriteutils.place_angle_from(trailingSprites[index2], 0, 0, players[index2])
  73.     spriteutils.place_angle_from(followingSprites[index2], 0, 0, players[index2])
  74. def on_player4_button_b_pressed():
  75.     changeBrushSize(3)
  76. controller.player4.on_button_event(ControllerButton.B,
  77.     ControllerButtonEvent.PRESSED,
  78.     on_player4_button_b_pressed)
  79. def paintLine(color: number, radius: number, fromSprite: Sprite, toSprite: Sprite):
  80.     global angle, distance
  81.     angle = spriteutils.angle_from(toSprite, fromSprite)
  82.     distance = spriteutils.distance_between(fromSprite, toSprite)
  83.     while True:
  84.         spriteutils.place_angle_from(fromSprite, angle, distance, toSprite)
  85.         spriteutils.fill_circle(scene.background_image(),
  86.             Math.round(fromSprite.x),
  87.             Math.round(fromSprite.y),
  88.             radius,
  89.             color)
  90.         distance += -1
  91.         if distance <= 0:
  92.             break
  93.     spriteutils.place_angle_from(fromSprite, 0, 0, toSprite)
  94. def on_player3_button_a_pressed():
  95.     startPaint(2)
  96. controller.player3.on_button_event(ControllerButton.A,
  97.     ControllerButtonEvent.PRESSED,
  98.     on_player3_button_a_pressed)
  99. def on_menu_pressed():
  100.     scene.set_background_image(img("""
  101.         ................................................................................................................................................................
  102.         ................................................................................................................................................................
  103.         ................................................................................................................................................................
  104.         ................................................................................................................................................................
  105.         ................................................................................................................................................................
  106.         ................................................................................................................................................................
  107.         ................................................................................................................................................................
  108.         ................................................................................................................................................................
  109.         ................................................................................................................................................................
  110.         ................................................................................................................................................................
  111.         ................................................................................................................................................................
  112.         ................................................................................................................................................................
  113.         ................................................................................................................................................................
  114.         ................................................................................................................................................................
  115.         ................................................................................................................................................................
  116.         ................................................................................................................................................................
  117.         ................................................................................................................................................................
  118.         ................................................................................................................................................................
  119.         ................................................................................................................................................................
  120.         ................................................................................................................................................................
  121.         ................................................................................................................................................................
  122.         ................................................................................................................................................................
  123.         ................................................................................................................................................................
  124.         ................................................................................................................................................................
  125.         ................................................................................................................................................................
  126.         ................................................................................................................................................................
  127.         ................................................................................................................................................................
  128.         ................................................................................................................................................................
  129.         ................................................................................................................................................................
  130.         ................................................................................................................................................................
  131.         ................................................................................................................................................................
  132.         ................................................................................................................................................................
  133.         ................................................................................................................................................................
  134.         ................................................................................................................................................................
  135.         ................................................................................................................................................................
  136.         ................................................................................................................................................................
  137.         ................................................................................................................................................................
  138.         ................................................................................................................................................................
  139.         ................................................................................................................................................................
  140.         ................................................................................................................................................................
  141.         ................................................................................................................................................................
  142.         ................................................................................................................................................................
  143.         ................................................................................................................................................................
  144.         ................................................................................................................................................................
  145.         ................................................................................................................................................................
  146.         ................................................................................................................................................................
  147.         ................................................................................................................................................................
  148.         ................................................................................................................................................................
  149.         ................................................................................................................................................................
  150.         ................................................................................................................................................................
  151.         ................................................................................................................................................................
  152.         ................................................................................................................................................................
  153.         ................................................................................................................................................................
  154.         ................................................................................................................................................................
  155.         ................................................................................................................................................................
  156.         ................................................................................................................................................................
  157.         ................................................................................................................................................................
  158.         ................................................................................................................................................................
  159.         ................................................................................................................................................................
  160.         ................................................................................................................................................................
  161.         ................................................................................................................................................................
  162.         ................................................................................................................................................................
  163.         ................................................................................................................................................................
  164.         ................................................................................................................................................................
  165.         ................................................................................................................................................................
  166.         ................................................................................................................................................................
  167.         ................................................................................................................................................................
  168.         ................................................................................................................................................................
  169.         ................................................................................................................................................................
  170.         ................................................................................................................................................................
  171.         ................................................................................................................................................................
  172.         ................................................................................................................................................................
  173.         ................................................................................................................................................................
  174.         ................................................................................................................................................................
  175.         ................................................................................................................................................................
  176.         ................................................................................................................................................................
  177.         ................................................................................................................................................................
  178.         ................................................................................................................................................................
  179.         ................................................................................................................................................................
  180.         ................................................................................................................................................................
  181.         ................................................................................................................................................................
  182.         ................................................................................................................................................................
  183.         ................................................................................................................................................................
  184.         ................................................................................................................................................................
  185.         ................................................................................................................................................................
  186.         ................................................................................................................................................................
  187.         ................................................................................................................................................................
  188.         ................................................................................................................................................................
  189.         ................................................................................................................................................................
  190.         ................................................................................................................................................................
  191.         ................................................................................................................................................................
  192.         ................................................................................................................................................................
  193.         ................................................................................................................................................................
  194.         ................................................................................................................................................................
  195.         ................................................................................................................................................................
  196.         ................................................................................................................................................................
  197.         ................................................................................................................................................................
  198.         ................................................................................................................................................................
  199.         ................................................................................................................................................................
  200.         ................................................................................................................................................................
  201.         ................................................................................................................................................................
  202.         ................................................................................................................................................................
  203.         ................................................................................................................................................................
  204.         ................................................................................................................................................................
  205.         ................................................................................................................................................................
  206.         ................................................................................................................................................................
  207.         ................................................................................................................................................................
  208.         ................................................................................................................................................................
  209.         ................................................................................................................................................................
  210.         ................................................................................................................................................................
  211.         ................................................................................................................................................................
  212.         ................................................................................................................................................................
  213.         ................................................................................................................................................................
  214.         ................................................................................................................................................................
  215.         ................................................................................................................................................................
  216.         ................................................................................................................................................................
  217.         ................................................................................................................................................................
  218.         ................................................................................................................................................................
  219.         ................................................................................................................................................................
  220.         ................................................................................................................................................................
  221.         """))
  222. controller.menu.on_event(ControllerButtonEvent.PRESSED, on_menu_pressed)
  223. targetAngle = 0
  224. distance = 0
  225. angle = 0
  226. followingSprites: List[Sprite] = []
  227. trailingSprites: List[Sprite] = []
  228. players: List[Sprite] = []
  229. brushColors: List[number] = []
  230. brushSize: List[number] = []
  231. sizeIndicator: Sprite = None
  232. scene.set_background_image(img("""
  233.     ................................................................................................................................................................
  234.     ................................................................................................................................................................
  235.     ................................................................................................................................................................
  236.     ................................................................................................................................................................
  237.     ................................................................................................................................................................
  238.     ................................................................................................................................................................
  239.     ................................................................................................................................................................
  240.     ................................................................................................................................................................
  241.     ................................................................................................................................................................
  242.     ................................................................................................................................................................
  243.     ................................................................................................................................................................
  244.     ................................................................................................................................................................
  245.     ................................................................................................................................................................
  246.     ................................................................................................................................................................
  247.     ................................................................................................................................................................
  248.     ................................................................................................................................................................
  249.     ................................................................................................................................................................
  250.     ................................................................................................................................................................
  251.     ................................................................................................................................................................
  252.     ................................................................................................................................................................
  253.     ................................................................................................................................................................
  254.     ................................................................................................................................................................
  255.     ................................................................................................................................................................
  256.     ................................................................................................................................................................
  257.     ................................................................................................................................................................
  258.     ................................................................................................................................................................
  259.     ................................................................................................................................................................
  260.     ................................................................................................................................................................
  261.     ................................................................................................................................................................
  262.     ................................................................................................................................................................
  263.     ................................................................................................................................................................
  264.     ................................................................................................................................................................
  265.     ................................................................................................................................................................
  266.     ................................................................................................................................................................
  267.     ................................................................................................................................................................
  268.     ................................................................................................................................................................
  269.     ................................................................................................................................................................
  270.     ................................................................................................................................................................
  271.     ................................................................................................................................................................
  272.     ................................................................................................................................................................
  273.     ................................................................................................................................................................
  274.     ................................................................................................................................................................
  275.     ................................................................................................................................................................
  276.     ................................................................................................................................................................
  277.     ................................................................................................................................................................
  278.     ................................................................................................................................................................
  279.     ................................................................................................................................................................
  280.     ................................................................................................................................................................
  281.     ................................................................................................................................................................
  282.     ................................................................................................................................................................
  283.     ................................................................................................................................................................
  284.     ................................................................................................................................................................
  285.     ................................................................................................................................................................
  286.     ................................................................................................................................................................
  287.     ................................................................................................................................................................
  288.     ................................................................................................................................................................
  289.     ................................................................................................................................................................
  290.     ................................................................................................................................................................
  291.     ................................................................................................................................................................
  292.     ................................................................................................................................................................
  293.     ................................................................................................................................................................
  294.     ................................................................................................................................................................
  295.     ................................................................................................................................................................
  296.     ................................................................................................................................................................
  297.     ................................................................................................................................................................
  298.     ................................................................................................................................................................
  299.     ................................................................................................................................................................
  300.     ................................................................................................................................................................
  301.     ................................................................................................................................................................
  302.     ................................................................................................................................................................
  303.     ................................................................................................................................................................
  304.     ................................................................................................................................................................
  305.     ................................................................................................................................................................
  306.     ................................................................................................................................................................
  307.     ................................................................................................................................................................
  308.     ................................................................................................................................................................
  309.     ................................................................................................................................................................
  310.     ................................................................................................................................................................
  311.     ................................................................................................................................................................
  312.     ................................................................................................................................................................
  313.     ................................................................................................................................................................
  314.     ................................................................................................................................................................
  315.     ................................................................................................................................................................
  316.     ................................................................................................................................................................
  317.     ................................................................................................................................................................
  318.     ................................................................................................................................................................
  319.     ................................................................................................................................................................
  320.     ................................................................................................................................................................
  321.     ................................................................................................................................................................
  322.     ................................................................................................................................................................
  323.     ................................................................................................................................................................
  324.     ................................................................................................................................................................
  325.     ................................................................................................................................................................
  326.     ................................................................................................................................................................
  327.     ................................................................................................................................................................
  328.     ................................................................................................................................................................
  329.     ................................................................................................................................................................
  330.     ................................................................................................................................................................
  331.     ................................................................................................................................................................
  332.     ................................................................................................................................................................
  333.     ................................................................................................................................................................
  334.     ................................................................................................................................................................
  335.     ................................................................................................................................................................
  336.     ................................................................................................................................................................
  337.     ................................................................................................................................................................
  338.     ................................................................................................................................................................
  339.     ................................................................................................................................................................
  340.     ................................................................................................................................................................
  341.     ................................................................................................................................................................
  342.     ................................................................................................................................................................
  343.     ................................................................................................................................................................
  344.     ................................................................................................................................................................
  345.     ................................................................................................................................................................
  346.     ................................................................................................................................................................
  347.     ................................................................................................................................................................
  348.     ................................................................................................................................................................
  349.     ................................................................................................................................................................
  350.     ................................................................................................................................................................
  351.     ................................................................................................................................................................
  352.     ................................................................................................................................................................
  353.     """))
  354. p1 = sprites.create(img("""
  355.         . . . f . . .
  356.         . . f 2 f . .
  357.         . f f 2 f f .
  358.         f 2 2 2 2 2 f
  359.         . f f 2 f f .
  360.         . . f 2 f . .
  361.         . . . f . . .
  362.         """),
  363.     SpriteKind.player)
  364. p1.set_position(30, 30)
  365. p2 = sprites.create(img("""
  366.         . . . f . . .
  367.         . . f 8 f . .
  368.         . f f 8 f f .
  369.         f 8 8 8 8 8 f
  370.         . f f 8 f f .
  371.         . . f 8 f . .
  372.         . . . f . . .
  373.         """),
  374.     SpriteKind.player)
  375. p2.set_position(130, 30)
  376. p3 = sprites.create(img("""
  377.         . . . f . . .
  378.         . . f 4 f . .
  379.         . f f 4 f f .
  380.         f 4 4 4 4 4 f
  381.         . f f 4 f f .
  382.         . . f 4 f . .
  383.         . . . f . . .
  384.         """),
  385.     SpriteKind.player)
  386. p3.set_position(30, 90)
  387. p4 = sprites.create(img("""
  388.         . . . f . . .
  389.         . . f 6 f . .
  390.         . f f 6 f f .
  391.         f 6 6 6 6 6 f
  392.         . f f 6 f f .
  393.         . . f 6 f . .
  394.         . . . f . . .
  395.         """),
  396.     SpriteKind.player)
  397. p4.set_position(130, 90)
  398. controller.player1.move_sprite(p1, 50, 50)
  399. controller.player2.move_sprite(p2, 50, 50)
  400. controller.player3.move_sprite(p3, 50, 50)
  401. controller.player4.move_sprite(p4, 50, 50)
  402. brushColors = [2, 8, 4, 6]
  403. brushSize = [3, 3, 3, 3]
  404. players = [p1, p2, p3, p4]
  405. trailingSprites = [sprites.create(img("""
  406.             . . . f . . .
  407.             . . f 2 f . .
  408.             . f f 2 f f .
  409.             f 2 2 2 2 2 f
  410.             . f f 2 f f .
  411.             . . f 2 f . .
  412.             . . . f . . .
  413.             """),
  414.         SpriteKind.Trailing),
  415.     sprites.create(img("""
  416.             . . . f . . .
  417.             . . f 2 f . .
  418.             . f f 2 f f .
  419.             f 2 2 2 2 2 f
  420.             . f f 2 f f .
  421.             . . f 2 f . .
  422.             . . . f . . .
  423.             """),
  424.         SpriteKind.Trailing),
  425.     sprites.create(img("""
  426.             . . . f . . .
  427.             . . f 2 f . .
  428.             . f f 2 f f .
  429.             f 2 2 2 2 2 f
  430.             . f f 2 f f .
  431.             . . f 2 f . .
  432.             . . . f . . .
  433.             """),
  434.         SpriteKind.Trailing),
  435.     sprites.create(img("""
  436.             . . . f . . .
  437.             . . f 2 f . .
  438.             . f f 2 f f .
  439.             f 2 2 2 2 2 f
  440.             . f f 2 f f .
  441.             . . f 2 f . .
  442.             . . . f . . .
  443.             """),
  444.         SpriteKind.Trailing)]
  445. followingSprites = [sprites.create(img("""
  446.             . . . f . . .
  447.             . . f 2 f . .
  448.             . f f 2 f f .
  449.             f 2 2 2 2 2 f
  450.             . f f 2 f f .
  451.             . . f 2 f . .
  452.             . . . f . . .
  453.             """),
  454.         SpriteKind.Trailing),
  455.     sprites.create(img("""
  456.             . . . f . . .
  457.             . . f 8 f . .
  458.             . f f 8 f f .
  459.             f 8 8 8 8 8 f
  460.             . f f 8 f f .
  461.             . . f 8 f . .
  462.             . . . f . . .
  463.             """),
  464.         SpriteKind.Trailing),
  465.     sprites.create(img("""
  466.             . . . f . . .
  467.             . . f 4 f . .
  468.             . f f 4 f f .
  469.             f 4 4 4 4 4 f
  470.             . f f 4 f f .
  471.             . . f 4 f . .
  472.             . . . f . . .
  473.             """),
  474.         SpriteKind.Trailing),
  475.     sprites.create(img("""
  476.             . . . f . . .
  477.             . . f 6 f . .
  478.             . f f 6 f f .
  479.             f 6 6 6 6 6 f
  480.             . f f 6 f f .
  481.             . . f 6 f . .
  482.             . . . f . . .
  483.             """),
  484.         SpriteKind.Trailing)]
  485. turnRate = 0.2
  486. def on_on_update():
  487.     global angle, targetAngle
  488.     if controller.player1.is_pressed(ControllerButton.A):
  489.         paintLine(2, brushSize[0], trailingSprites[0], followingSprites[0])
  490.     if controller.player2.is_pressed(ControllerButton.A):
  491.         paintLine(8, brushSize[1], trailingSprites[1], followingSprites[1])
  492.     if controller.player3.is_pressed(ControllerButton.A):
  493.         paintLine(4, brushSize[2], trailingSprites[2], followingSprites[2])
  494.     if controller.player4.is_pressed(ControllerButton.A):
  495.         paintLine(6, brushSize[3], trailingSprites[3], followingSprites[3])
  496.     for index3 in range(4):
  497.         angle = Math.atan2(followingSprites[index3].vy, followingSprites[index3].vx)
  498.         if angle < 0:
  499.             angle += 2 * spriteutils.consts(spriteutils.Consts.PI)
  500.         targetAngle = spriteutils.angle_from(followingSprites[index3], players[index3])
  501.         if targetAngle < 0:
  502.             targetAngle += 2 * spriteutils.consts(spriteutils.Consts.PI)
  503.         if abs(targetAngle - angle) > spriteutils.consts(spriteutils.Consts.PI):
  504.             if angle < targetAngle:
  505.                 angle += 0 - turnRate
  506.             else:
  507.                 angle += turnRate
  508.         elif angle < targetAngle:
  509.             angle += turnRate
  510.         else:
  511.             angle += 0 - turnRate
  512.         if angle < 0:
  513.             angle += 2 * spriteutils.consts(spriteutils.Consts.PI)
  514.         spriteutils.set_velocity_at_angle(followingSprites[index3],
  515.             angle,
  516.             6 * min(10,
  517.                 spriteutils.distance_between(followingSprites[index3], players[index3])))
  518. game.on_update(on_on_update)
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2 小时前

【花雕动手做】基于Kitronik可编程开发板之多人绘画游戏

MakeCode 多人绘画游戏代码解读
这是一个支持最多4名玩家同时游玩的绘画游戏,玩家可以控制角色移动并在屏幕上绘制彩色线条。

游戏概述
这是一个多人协作绘画游戏,4名玩家分别控制不同颜色的画笔,在共享画布上自由创作。每个玩家可以调整画笔大小并实时绘制。

代码结构分析

1. 自定义精灵类型
python
  1. class SpriteKind:
  2.     Trailing = SpriteKind.create()
复制代码

创建了"Trailing"精灵类型,用于表示画笔的轨迹点

2. 控制器事件处理
游戏为每个玩家设置了按钮事件监听:
A按钮:开始绘画(按住持续绘制)
B按钮:切换画笔大小
菜单按钮:清空画布

3. 核心游戏机制
画笔系统
python
  1. def changeBrushSize(index: number):
复制代码

每个玩家可以独立调整画笔大小(1-6像素)
按下B按钮时显示大小指示器
使用spriteutils.fill_circle创建圆形画笔

绘画系统
python
  1. def paintLine(color: number, radius: number, fromSprite: Sprite, toSprite: Sprite):
复制代码

这是核心的绘画函数,在两个精灵之间绘制线条
使用角度和距离计算来填充圆形点
在场景背景图像上直接绘制

跟随系统
python
  1. def startPaint(index2: number):
复制代码

初始化绘画的起始位置
使用spriteutils.place_angle_from将轨迹精灵放置在玩家精灵位置

4. 玩家和精灵设置
玩家角色
创建了4个不同颜色的玩家精灵:
玩家1:红色(颜色值2)
玩家2:橙色(颜色值8)
玩家3:紫色(颜色值4)
玩家4:蓝色(颜色值6)
每个玩家都有对应的:
主控精灵(players)
轨迹精灵(trailingSprites)
跟随精灵(followingSprites)

移动控制
python
  1. controller.player1.move_sprite(p1, 50, 50)
复制代码

每个玩家可以独立控制自己的角色移动
移动速度为50

5. 游戏主循环
python
  1. def on_on_update():
复制代码

检测玩家是否按住A按钮进行绘画
计算跟随精灵的运动轨迹
使用角度和速度控制使跟随精灵追踪玩家

技术实现细节
绘画算法
python
  1. angle = spriteutils.angle_from(toSprite, fromSprite)
  2. distance = spriteutils.distance_between(fromSprite, toSprite)
  3. while True:
  4.     spriteutils.place_angle_from(fromSprite, angle, distance, toSprite)
  5.     spriteutils.fill_circle(scene.background_image(), ...)
  6.     distance += -1
复制代码

通过计算两点间的角度和距离
从终点向起点逐步填充圆形点
形成连续的线条效果

平滑跟随系统
python
  1. angle = Math.atan2(followingSprites[index3].vy, followingSprites[index3].vx)
  2. targetAngle = spriteutils.angle_from(followingSprites[index3], players[index3])
复制代码

使用三角函数计算当前角度和目标角度
应用转向速率(turnRate)实现平滑转向
根据距离调整移动速度,离玩家越远移动越快

画布管理
python
  1. def on_menu_pressed():
  2.     scene.set_background_image(img("""..."""))
复制代码

菜单按钮可以清空画布,重新开始
使用大片的点图像创建空白背景

游戏玩法
移动:使用方向键控制角色移动
绘画:按住A按钮在移动时绘制线条
调整画笔:按B按钮循环切换画笔大小(1-6像素)
清空画布:按菜单按钮重置画布

技术亮点
实时多人协作:4名玩家可以同时在同一个画布上创作
平滑的绘画效果:使用圆形填充算法产生连续的线条
物理跟随系统:跟随精灵会平滑地追踪玩家移动
自定义画笔系统:每个玩家可以独立调整画笔大小和颜色
画布管理:支持清空画布重新开始

这个游戏展示了MakeCode的高级功能,包括复杂的精灵运动控制、实时绘画算法、多人游戏协调和用户界面反馈,是一个很好的多人协作创意工具示例。

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2 小时前

【花雕动手做】基于Kitronik可编程开发板之多人绘画游戏

图形编程参考实验程序

【花雕动手做】基于Kitronik可编程开发板之多人绘画游戏图1

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

【花雕动手做】基于Kitronik可编程开发板之多人绘画游戏图3

实验场景记录

【花雕动手做】基于Kitronik可编程开发板之多人绘画游戏图2

【花雕动手做】基于Kitronik可编程开发板之多人绘画游戏图4

回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail