9浏览
查看: 9|回复: 5

[项目] 【花雕动手做】基于 Kitronik 开发板之布雷森纳姆圆环

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

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

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

【花雕动手做】基于 Kitronik 开发板之布雷森纳姆圆环图1

【花雕动手做】基于 Kitronik 开发板之布雷森纳姆圆环图2

【花雕动手做】基于 Kitronik 开发板之布雷森纳姆圆环图3

驴友花雕  中级技神
 楼主|

发表于 2 小时前

【花雕动手做】基于 Kitronik 开发板之布雷森纳姆圆环

作为学习、练习与尝试,这里创建一个布雷森纳姆圆环的小游戏。
打开网页版:https://arcade.makecode.com/,设置项目名称:布雷森纳姆圆环

【花雕动手做】基于 Kitronik 开发板之布雷森纳姆圆环图1

MicroPython实验代码

  1. y = 0
  2. x = 0
  3. radius = 0
  4. d = 0
  5. cx = 31
  6. cy = 31
  7. grow = True
  8. circle = image.create(64, 64)
  9. circleSprite = sprites.create(circle, 0)
  10. def on_forever():
  11.     global d, x, y, radius, grow
  12.     circle.fill(6)
  13.     d = 3 - 2 * radius
  14.     x = 0
  15.     y = radius
  16.     while x <= y:
  17.         circle.set_pixel(cx + x, cy + y, 4)
  18.         circle.set_pixel(cx + x, cx - y, 4)
  19.         circle.set_pixel(cx - x, cx + y, 4)
  20.         circle.set_pixel(cx - x, cy - y, 4)
  21.         circle.set_pixel(cx + y, cy + x, 4)
  22.         circle.set_pixel(cx + y, cy - x, 4)
  23.         circle.set_pixel(cx - y, cy + x, 4)
  24.         circle.set_pixel(cx - y, cy - x, 4)
  25.         if d <= 0:
  26.             d += 4 * x + 6
  27.         else:
  28.             y += -1
  29.             d += 4 * (x - y) + 10
  30.         x += 1
  31.     if grow:
  32.         radius += 1
  33.     else:
  34.         radius += 0 - 1
  35.     if radius > 31:
  36.         grow = False
  37.     elif radius < 1:
  38.         grow = True
  39.     pause(100)
  40. forever(on_forever)
复制代码




回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2 小时前

【花雕动手做】基于 Kitronik 开发板之布雷森纳姆圆环

本帖最后由 驴友花雕 于 2025-9-13 18:28 编辑

这段代码是用 MakeCode Arcade 编写的一个图形演示程序,利用 布雷森纳姆圆算法(Bresenham Circle Algorithm) 在屏幕上绘制一个动态变化的圆环。它展示了如何在像素图像中高效绘制圆形,并通过半径的增减实现“呼吸式”动画效果。解读如下:

一、布雷森纳姆圆算法简介
布雷森纳姆算法是一种用于在栅格图像中绘制圆形的经典算法。它通过整数运算和对称性,避免使用浮点计算,从而高效地确定哪些像素应被填充。

【花雕动手做】基于 Kitronik 开发板之布雷森纳姆圆环图1

由于圆具有八向对称性,只需计算一个八分之一圆的点,然后复制到其他七个区域。

二、代码结构解析
1、初始化变量
python
  1. y = 0
  2. x = 0
  3. radius = 0
  4. d = 0
  5. cx = 31
  6. cy = 31
  7. grow = True
  8. circle = image.create(64, 64)
  9. circleSprite = sprites.create(circle, 0)
复制代码


cx, cy:圆心坐标(图像中心)

radius:当前圆半径

d:决策参数,用于判断下一个像素位置

circle:创建一个 64×64 的图像作为绘图画布

circleSprite:将图像作为精灵显示在屏幕上

2、主循环逻辑
python
  1. def on_forever():
  2.     ...
  3. forever(on_forever)
复制代码


每 100 毫秒执行一次,绘制一个新的圆形

圆的半径在 1 到 31 之间循环变化,形成“呼吸”动画

3、圆形绘制核心
python
  1. d = 3 - 2 * radius
  2. x = 0
  3. y = radius
  4. while x <= y:
  5.     circle.set_pixel(cx + x, cy + y, 4)
  6.     ...
  7.     if d <= 0:
  8.         d += 4 * x + 6
  9.     else:
  10.         y -= 1
  11.         d += 4 * (x - y) + 10
  12.     x += 1
复制代码


使用布雷森纳姆算法计算圆的边缘像素位置

利用对称性绘制八个方向的点

set_pixel(x, y, 4) 将像素设为颜色编号 4(通常是红色)

4、半径动态变化
python
  1. if grow:
  2.     radius += 1
  3. else:
  4.     radius -= 1
  5. if radius > 31:
  6.     grow = False
  7. elif radius < 1:
  8.     grow = True
复制代码


控制圆的半径在 1 到 31 之间来回变化

实现动态扩张与收缩的视觉效果。

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2 小时前

【花雕动手做】基于 Kitronik 开发板之布雷森纳姆圆环

图形编程参考实验程序

【花雕动手做】基于 Kitronik 开发板之布雷森纳姆圆环图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2 小时前

【花雕动手做】基于 Kitronik 开发板之布雷森纳姆圆环

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

【花雕动手做】基于 Kitronik 开发板之布雷森纳姆圆环图1

实验场景记录

【花雕动手做】基于 Kitronik 开发板之布雷森纳姆圆环图2

【花雕动手做】基于 Kitronik 开发板之布雷森纳姆圆环图4

【花雕动手做】基于 Kitronik 开发板之布雷森纳姆圆环图3

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2 小时前

【花雕动手做】基于 Kitronik 开发板之布雷森纳姆圆环

【花雕动手做】基于 Kitronik 开发板之布雷森纳姆圆环图1
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail