gpt4 book ai didi

python生命游戏绘制函数( turtle )(调用实例方法?)

转载 作者:行者123 更新时间:2023-12-01 02:36:47 25 4
gpt4 key购买 nike

我发现这个实现为Conway's Game of Life 。我从未处理过 GUI,我正在尝试理解这段代码(并实现我自己的)

有一个特定的功能让我烦恼。绘制每个“有机体”的函数(黑色是活的,白色是死的)。

# import turtle (at the top)
def draw(self, x, y):
"Update the cell (x,y) on the display."
turtle.penup()
key = (x, y)
if key in self.state:
turtle.setpos(x*CELL_SIZE, y*CELL_SIZE)
turtle.color('black')
turtle.pendown()
turtle.setheading(0)
turtle.begin_fill()
for i in range(4):
turtle.forward(CELL_SIZE-1)
turtle.left(90)
turtle.end_fill()

这是显示整个棋盘的函数:def 显示(自身):

"""Draw the whole board"""
turtle.clear()
for i in range(self.xsize):
for j in range(self.ysize):
self.draw(i, j)
turtle.update()

代码当然可以工作,但是Intellij 说他找不到所有这些函数的引用。我认为这是因为它作为类方法调用实例方法并且缺少 self。

  1. 我不明白它是如何工作的。
  2. 我该如何修复它?我尝试制作一只新 turtle ,但没有成功(在我看来这不是一个好主意)。也许我应该把 turtle 作为函数中的参数?

已经在这个问题上坚持了几个小时了。希望得到一些帮助。

最佳答案

Intellij says that he can't find reference to ALL these functions

turtle 模块是一只奇怪的鸟。 (请原谅这个混合的比喻。)它试图为不同的受众提供不同的东西,这会导致困惑:

1) 函数与方法

Turtle 是一个面向对象的模块,您可以在其中创建 turtle 和屏幕的实例并调用它们的方法:

screen = turtle.Screen()
screen.setworldcoordinates(0, 0, xsize, ysize)

yertle = turtle.Turtle()
yertle.forward(100)

但是,为了适应初级程序员和/或模拟其他 turtle 语言,它还提供了一个函数式接口(interface):

turtle.setworldcoordinates(0, 0, xsize, ysize)
turtle.forward(100) # move the "default" turtle forward

为了防止混淆函数和方法,我建议以这种方式导入turtle:

from turtle import Turtle, Screen

它只允许对象接口(interface),而不允许函数接口(interface)。

发生 IntelliJ 警告的原因是,turtle 的函数接口(interface)是在加载时动态地从对象方法接口(interface)派生的——文件中没有实际的函数可供引用。

2) 独立与嵌入式

turtle 模块设计为独立运行或嵌入到更大的 tkinter 项目中。访问 turtle 和屏幕的方式会有所不同,具体取决于您正在执行的操作。

就康威生命游戏的这个实现而言,它在可能应该使用对象一时使用了函数式接口(interface),并且将 turtle 模块视为独立的,但随后使用它打开其他基于 Tk 的面板:

from turtle import TK

应该是相反的。没有快速修复方法可以使该模块符合要求,每个 turtle 和 tkinter 引用都需要检查和重新考虑。

关于python生命游戏绘制函数( turtle )(调用实例方法?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46131251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com