На прошлой неделе я работал над игрой Cannon для класса.Наша текущая итерация заключается в добавлении цели и обнаружении столкновений.Из моего понимания функции pygame.draw возвращают объекты Rect.Я добавляю эти объекты в список и передаю этот список своему пушечному ядру.Cannonball затем использует этот список, чтобы определить, попал ли он в что-либо.Однако я получаю сообщение «if self.current_ball.Rect.collidelist (self.collision_objects)> -1: AttributeError: у объекта NoneType нет атрибута« Rect »»
def draw(self, screen):
'''
Draws the cannonball
'''
self.current_ball = pygame.draw.circle(screen, color["red"],(round(self._x),round(self._y)), 5)
return self.current_ball
def move(self):
'''
Initiates the cannonball to move along its
firing arc
'''
while self.active:
prev_y_v = self.y_v
self.y_v = self.y_v - (9.8 * self.time_passed_seconds)
self._y = (self._y - (self.time_passed_seconds * ((prev_y_v + self.y_v)/2)))
self._y = max(self._y, 0)
self._x += (self.delta_x)
#self.active = (self._y > 0)
self.collision_detect()
if self.collide == True:
self.active = False
def collision_detect(self):
'''
Detects if the current cannonball has collided with any object within the
collision_objects list.
'''
if self.current_ball.Rect.collidelist(self.collision_objects) > -1:
self.collide = True
Я не совсем уверен, если что-то не так с этим кодом, или это действительно проблема со списком collision_objects?