python - Pygame 的类实现
问题描述
我正在尝试使用 pygame 编写一个程序来创建一个名为的类,该类Dot()
允许我实现 Dot 对象,这将是 2 个像素半径的小圆。我试图在我的主游戏循环中创建它们,但我不断收到错误消息“名称'x'未定义”。我不确定为什么会这样。如果它要抛出这样的错误,我希望它首先说颜色未定义,因为它在参数列表中首先列出。我不确定我的错误是由我编写类本身的方式引起的,还是我的类实现中的某些东西(我几乎可以肯定我做错了,但我已经尝试了几种不同的方法好吧,并不断收到相同的错误),或者如果是,或者两者兼而有之。
#!/usr/bin/env python
import random, pygame, sys
from random import randint
from pygame.locals import *
pygame.init()
FPS = 30
fpsClock = pygame.time.Clock()
DISPLAYSURF = pygame.display.set_mode((700, 700), 0, 32)
pygame.display.set_caption('Version02')
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = ( 0, 255, 0)
BLUE = ( 0, 0, 255)
class Dot():
def __init__(self, color, x, y):
self = pygame.draw.circle(DISPLAYSURF, color, (x, y), 2, 0)
self.color = getDotColor()
self.x = getDotX()
self.y = getDotY()
def getDotColor():
color = random.choice([RED, GREEN, BLUE])
return color
def getDotX():
x = randint(0, 700)
return x
def getDotY():
y = randint(0, 700)
return y
while True: #main game loop
DISPLAYSURF.fill(WHITE)
dot = Dot(color, x, y)#I'm not exactly sure how to implement this correctly
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
fpsClock.tick(FPS)
解决方案
dot = Dot(color, x, y)#我不确定如何正确实现
您之前没有定义 ax 或 y 值。你的错误来自这里。颜色也一样。如果您希望每次创建 Dot 对象时随机创建颜色和点坐标(至少我知道这是您要查找的内容),则必须重写该__init__
方法:
class Dot():
def __init__(self):
self.color = getDotColor()
self.x = getDotX()
self.y = getDotY()
self = pygame.draw.circle(DISPLAYSURF, self.color, (self.x, self.y), 2, 0)
推荐阅读
- python - 跨产品 Python
- reactjs - 在已部署的 AWS 环境中使用 cookie 时出现 CORS 问题
- java - 通过在 constraintLayout 中编程来设置 imageView 的边距
- java - 如何在java中从一个类到另一个类访问一个变量
- python - Pandas:根据组内元素的相对索引在多索引数据框中创建列
- python - 如何使用 PyTorch 在预训练模型上添加新层?(给出了 Keras 示例。)
- reactjs - 如何获取 Laravel CSRF-token 以通过 React 中的 fetch post 请求发送它?
- image - 在实际的android设备上添加网络图像时出现套接字异常
- php - Symfony Finder:获取具有特定扩展名的所有文件以及特定目录中的所有目录
- sql - PostgresSQL \d 命令告诉不存在的表