鱼C论坛

 找回密码
 立即注册
查看: 112|回复: 1

[学习笔记] 学习了一个有趣的技能-海龟跟随鼠标

[复制链接]
发表于 2025-9-11 16:22:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import turtle as t
import random as r
t.bgcolor("black")
t.colormode(255)
t.delay(0)
t.hideturtle()
def fun(x,y):
   t.penup()
   t.goto(x,y)
   t.pendown()
   a=r.randint(0,255)
   b=r.randint(0,255)
   c=r.randint(0,255)
   t.color(a,b,c)
   l=r.randint(5,15)
   t.begin_fill()
   for i in range(5):
      t.forward(l)
      t.left(144)
   t.end_fill()
screen=t.Screen()
screen.onclick(fun)
t.done()
      
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-9-11 16:22:50 | 显示全部楼层
你好!你的代码实现了一个很有趣的效果:在黑色背景上,每次鼠标点击都会在点击位置绘制一个随机颜色的五角星。我来简单解释一下代码的逻辑:


  1. import turtle as t
  2. import random as r
  3. t.bgcolor("black")        # 设置背景为黑色
  4. t.colormode(255)          # 设置颜色模式为RGB(0-255)
  5. t.delay(0)                # 取消绘制延迟,让绘制更快
  6. t.hideturtle()            # 隐藏海龟图标

  7. def fun(x,y):
  8.    t.penup()              # 抬起画笔(移动时不画线)
  9.    t.goto(x,y)            # 移动到鼠标点击的坐标
  10.    t.pendown()            # 落下画笔(开始画线)
  11.    a=r.randint(0,255)     # 随机生成RGB颜色分量
  12.    b=r.randint(0,255)
  13.    c=r.randint(0,255)
  14.    t.color(a,b,c)         # 设置画笔颜色
  15.    l=r.randint(5,15)      # 随机生成五角星边长(5到15之间)
  16.    t.begin_fill()         # 开始填充颜色
  17.    for i in range(5):     # 画五角星(5条边,每次转144度)
  18.       t.forward(l)
  19.       t.left(144)
  20.    t.end_fill()           # 结束填充

  21. screen=t.Screen()
  22. screen.onclick(fun)       # 绑定鼠标点击事件到fun函数
  23. t.done()                  # 进入事件循环,等待交互
复制代码


代码中用到了几个关键点:
- t.delay(0) 让绘制速度更快
- screen.onclick(fun) 实现了鼠标事件绑定
- 五角星的绘制是通过每次左转144度(180-36)实现的

如果你想扩展这个程序,可以尝试:
- 修改绘制的形状(比如改成圆形或正方形)
- 添加键盘事件切换颜色或形状
- 增加绘制大小的随机范围

这个程序很好地结合了事件处理和图形绘制,是学习turtle库交互功能的好例子!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-1 17:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表