You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python turtle库绘制指定样式的骰子

Python Turtle 骰子实现代码

以下代码可直接运行,实现了标准6面骰子的绘制效果,包含随机掷骰的滚动动画:

import turtle
import random

# 初始化画布和画笔
t = turtle.Turtle()
t.speed(0)
t.hideturtle()
screen = turtle.Screen()
screen.title("Turtle 骰子")
screen.tracer(0)

# 绘制骰子基础方块
def draw_dice_bg():
    t.penup()
    t.goto(-100, 100)
    t.pendown()
    t.fillcolor("white")
    t.begin_fill()
    for _ in range(4):
        t.forward(200)
        t.right(90)
    t.end_fill()

# 绘制单颗点数
def draw_dot(x, y):
    t.penup()
    t.goto(x, y)
    t.pendown()
    t.fillcolor("black")
    t.begin_fill()
    t.circle(15)
    t.end_fill()

# 根据点数绘制对应骰子
def draw_dice(num):
    t.clear()
    draw_dice_bg()
    if num == 1:
        draw_dot(0, -15)
    elif num == 2:
        draw_dot(-60, 60)
        draw_dot(60, -90)
    elif num == 3:
        draw_dot(-60, 60)
        draw_dot(0, -15)
        draw_dot(60, -90)
    elif num == 4:
        draw_dot(-60, 60)
        draw_dot(60, 60)
        draw_dot(-60, -90)
        draw_dot(60, -90)
    elif num == 5:
        draw_dot(-60, 60)
        draw_dot(60, 60)
        draw_dot(0, -15)
        draw_dot(-60, -90)
        draw_dot(60, -90)
    elif num == 6:
        draw_dot(-60, 60)
        draw_dot(60, 60)
        draw_dot(-60, -15)
        draw_dot(60, -15)
        draw_dot(-60, -90)
        draw_dot(60, -90)
    screen.update()

# 掷骰子动画
def roll_dice():
    # 模拟滚动效果,快速切换10次随机点数
    for _ in range(10):
        temp_num = random.randint(1,6)
        draw_dice(temp_num)
        turtle.delay(100)
    # 最终停留的点数
    final_num = random.randint(1,6)
    draw_dice(final_num)
    return final_num

# 绑定鼠标点击触发掷骰子
screen.onclick(lambda x,y: roll_dice())
# 首次运行直接掷一次
roll_dice()

turtle.done()
  • 运行后会自动生成第一次随机掷骰结果,点击画布任意位置可再次触发掷骰动画
  • 可自行调整代码内的正方形边长、点数大小、动画延迟参数修改骰子样式和滚动效果

内容的提问来源于stack exchange,提问作者Asad Kareem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:45:03