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

Python字谜游戏对角线高亮异常问题求助

解决字谜程序对角线单词高亮覆盖问题

你的问题出在对角线单词的高亮绘制逻辑:当前代码给整个单词画了一个外接的大圆角矩形,这个矩形会覆盖路径上的所有单元格区域,包括其他单词的字母。而水平/垂直方向的大矩形刚好贴合单词本身,不会额外覆盖无关区域,所以没出现问题。

把draw_highlight函数改成逐个字母绘制高亮框,就能避免覆盖其他单词。修改后的代码如下:

def draw_highlight(draw, x, y, length, dx, dy, cell_size, font):
    padding = 5
    # 逐个字母绘制高亮框,而非整个单词一个大框
    for i in range(length):
        # 计算当前字母的单元格位置
        current_x = x + i * dx
        current_y = y + i * dy
        # 单个字母高亮框的坐标
        box_start = (current_x * cell_size - padding, current_y * cell_size - padding)
        box_end = (current_x * cell_size + cell_size + padding, current_y * cell_size + cell_size + padding)
        # 绘制单个字母的高亮圆角矩形
        draw.rounded_rectangle([box_start, box_end], radius=15, fill='black')
        # 在高亮框上绘制白色字母
        tx = current_x * cell_size + cell_size / 4
        ty = current_y * cell_size
        draw.text((tx, ty), grid[current_y][current_x], font=font, fill='white')

修改说明

  • 取消了原来的大外接矩形,改为循环遍历单词的每个字母
  • 为每个字母对应的单元格单独绘制带padding的圆角高亮框
  • 保持原有的文字绘制逻辑,确保字母显示在高亮框上方

这样修改后,无论是水平、垂直还是对角线方向的单词,每个字母的高亮都是独立的单元格框,不会再出现对角线高亮覆盖其他单词的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:07:27