检测tkinter模式是否重复其

2024-10-04 03:23:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个程序(更具体地说是一个螺旋描记器)可以画出一个模式。一段时间后,它将不可避免地开始重演。我需要一种方法来检测什么时候会发生这种情况。你知道吗

有几种方法可以做到这一点。你知道吗

  1. 检测打印线的位置是否在黑色像素的顶部。重复几次后停止
  2. 以某种方式预先计算完成模式所需的迭代次数
  3. 新线与旧线相交的试验
  4. 存储所有绘制的点,然后在生成的新点与旧点相同时停止。你知道吗

哪种方法最好?你知道吗


Tags: 方法程序方式模式绘制情况像素次数
1条回答
网友
1楼 · 发布于 2024-10-04 03:23:20

方法一已经过时了,因为研究会发现,特金特画布没有直接的方法来确定它们上给定像素的颜色。方法2会非常复杂,超出我的能力。方法3是不切实际的,因为正常模式有规律地自相交。但方法4对我有效。我是这样做的:

#Detection of whether pattern is repeating itself
        if point2 not in previousPositions:
            previousPositions.append(point2)
            inarow = 0
        else:
            inarow += 1

        if inarow > 5:
            print "Pattern is detected to be repeating itself"
            run = 0

这是在一个循环中,将run设置为零会停止循环。一旦5个新点与先前绘制的点匹配,就可以成功地停止绘制模式

可能的缺陷

在图形结束之前,某些模式可能最终拥有与其他点匹配的点。这种情况不可能超过5次。为了实现这一点,绘制者必须以不同的顺序在同一点上以不同的方向移动。这可以通过计算发生点的顺序来解决。然而,这是极不可能的,这将反复发生,我无法找到一个模式,将导致这个问题。你知道吗

相关问题 更多 >