Реализации класса с Pygame - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь написать программу, использующую pygame, для создания класса с именем Dot(), который позволяет мне реализовывать объекты Dot, которые будут маленькими кругами с радиусом 2 пикселя.Я пытаюсь создать их в своем основном игровом цикле, но получаю сообщение об ошибке «имя« х »не определено».Я не уверен, почему это так.Если бы он выдавал такую ​​ошибку, я бы ожидал, что он сначала скажет, что цвет не определен, так как он указан первым в списке параметров.Я не уверен, что моя ошибка вызвана тем, как я написал сам класс, или это что-то в моей реализации класса (я почти уверен, что я сделал это неправильно, но я пробовал несколько разных способов, какну и продолжайте получать ту же ошибку), или если это или оба.

#!/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)

1 Ответ

0 голосов
/ 25 ноября 2018

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...