当我试图在鼠标坐标处形成一个圆圈时,我使用以下代码:
def main():
screen.clear()
mx, my = pygame.mouse.get_pos()
screen.draw.circle((mx, my), 30, (255, 255, 255))它只起过一次作用,但当我将它改为如下时:
def main():
screen.clear()
mx, my = pygame.mouse.get_pos()
screen.draw.circle((mx, my), 30, (255, 255, 255))
screen.clear()
while (1):
main()它会引发此错误:
Traceback (most recent call last):
File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/usr/lib/python3/dist-packages/pgzero/__main__.py", line 3, in <module>
main()
File "/usr/lib/python3/dist-packages/pgzero/runner.py", line 92, in main
exec(code, mod.__dict__)
File "virus-simulation!.py", line 6, in <module>
main()
File "virus-simulation!.py", line 2, in main
screen.clear()
NameError: name 'screen' is not defined有什么原因吗?
发布于 2020-08-13 17:29:38
我不知道你的屏幕是在哪里定义的,所以我不能确定是什么导致了这个问题。下面是一些基于示例的工作代码。它在鼠标位置画一个圆圈。
import pygame
pygame.init()
class CDraw():
def __init__(self, sc):
self.scrn = sc
def circle(self, p, r, c):
pygame.draw.circle(self.scrn, c, p, r)
class CScreen():
def __init__(self):
self.scrn = pygame.display.set_mode((400,400))
self.draw = CDraw(self.scrn)
def clear(self):
self.scrn.fill((0,200,0))
screen = CScreen()
def main():
screen.clear()
mx, my = pygame.mouse.get_pos()
screen.draw.circle((mx, my), 30, (255, 255, 255))
#screen.clear() # will remove everything
for event in pygame.event.get(): # needed for os events
if event.type == pygame.QUIT:
exit()
pygame.display.update() # needed to do screen update
while (1):
main()https://stackoverflow.com/questions/63386921
复制相似问题