gpt4 book ai didi

python - Processing.py空白窗口问题

转载 作者:太空宇宙 更新时间:2023-11-04 02:14:18 24 4
gpt4 key购买 nike

我尝试使用 processing.py 编写 A* 算法,但我在代码开头遇到问题:我的窗口完全空白

因此,我希望出现一个网格,等待用户单击一个单元格,然后用黑色矩形填充该单元格。但是,我只希望它在我的代码开头运行,所以我没有把它放在 draw 函数中。

这是我的代码:

taille = 400
pas = taille // 20

def setup():
size(taille, taille)
background(255, 255, 255)
stroke(0)
strokeWeight(2)
frameRate(20)
for i in range(pas, taille, pas):
line(i, 0, i, taille)
line(0, i, taille, i)
drawRect()

def drawRect():
x, y = pressed()
for i in range(1, taille // pas - 1):
for j in range(1, taille // pas - 1):
if i * pas <= x and x <= (i + 1) * pas:
if j * pas <= y and y <= (j + 1) * pas:
rect(i * pas, j * pas, pas, pas)

def pressed():
while True:
if mousePressed:
return (mouseX, mouseY)

我高度怀疑错误来自 drawRect 函数,因为我设法在添加之前显示了网格。

最佳答案

So, I want a grid to appear waiting for the user to click on a cell and then to fill that cell with a black rectangle. But, I only want this to run at the beginning of my code so I didn't put it in the draw function.

无论如何,我建议使用draw 函数,根据程序的当前状态连续绘制场景。

请注意,您的程序在无限循环中挂起。变量 mousePressedmouseXmouseY 永远不会更新。这些变量不会神奇地改变它们的状态。在 draw 函数执行后,它们在 2 帧之间改变它们的状态。Processing 执行事件处理并更改内置变量。您不给 Processing 任何机会来完成这项工作。

创建变量,注意“点击”的 x 和 y 窗口坐标:

enter_x = -1
enter_y = -1

实现 mousePressed 事件以接收“点击”:

def mousePressed():
global enter_x, enter_y
if enter_x < 0 or enter_y < 0:
enter_x = mouseX
enter_y = mouseY

如果 draw 函数中的“click”坐标有效(>= 0),则将黑色矩形绘制到:

def draw():   
global enter_x, enter_y

if enter_x >= 0 and enter_y >= 0:
stroke(0)
fill(0)
ix = enter_x // pas
iy = enter_y // pas
rect(ix * pas, iy * pas, pas, pas)

完整的代码可能是这样的:

taille = 400
pas = taille // 20

def setup():
size(taille, taille)
background(255, 255, 255)
stroke(0)
strokeWeight(2)
frameRate(20)
for i in range(pas, taille, pas):
line(i, 0, i, taille)
line(0, i, taille, i)

enter_x = -1
enter_y = -1

def mousePressed():
global enter_x, enter_y
if enter_x < 0 or enter_y < 0:
enter_x = mouseX
enter_y = mouseY

def draw():
global enter_x, enter_y

if enter_x >= 0 and enter_y >= 0:
stroke(0)
fill(0)
ix = enter_x // pas
iy = enter_y // pas
rect(ix * pas, iy * pas, pas, pas)

请注意,可能还需要在 draw 函数中绘制网格。一般来说,每帧都重新绘制场景,而不是“撤消”已绘制的内容。

关于python - Processing.py空白窗口问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52976169/

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