微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pygame中Rect类的属性错误

如何解决pygame中Rect类的属性错误

我刚开始使用 pygame 和 python,所以没有判断 (谢谢:)) 但我一直在尝试使用 colliderect() 来检查两个 rect 的碰撞(蛇,食物;我想)。我不断收到此错误AttributeError: 'Food' 对象没有属性 'colliderect' 我做错了什么?

# main function
def main():
    clock = pygame.time.Clock()
    FPS = 17
    run = True
    snake = Snake(random.randint(0,400),random.randint(0,10,10)
    food = Food(random.randint(0,10)
    snakeVeLocity_X = 0
    snakeVeLocity_Y = 0
    lost = False
# snake object
# Rect object: Rect(x,y,width,height)
class Snake():
    def __init__(self,x,height):
        self.x = x 
        self.y = y
        self.width = width
        self.height = height

    def draw(self,gameScreen):
        pygame.draw.rect(gameScreen,colors.BLACK,(self.x,self.y,self.width,self.height))

    # def get_head_position(self):
    #   return self.x,self.height

# food object
class Food():
    def __init__(self,height):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.collide = False

    def draw(self,colors.YELLOW,self.height))
# check for collision
        if food.colliderect(snake):
            print("collision")

以上是我认为足以说明我的观点的代码

附言。我也是 stackoverflow 的新手。

解决方法

colliderectpygame.Rect 的一个方法。但是 Food 不是 pygame.Rect 对象。

删除属性 xywidthheight,but add a rect` 属性:

class Food():
    def __init__(self,x,y,width,height):
        self.rect = pygame.Rect(x,height)
        self.collide = False

    def draw(self,gameScreen):
        pygame.draw.rect(gameScreen,colors.YELLOW,self.rect)

现在您可以将方法 colliderectfood.rect 一起使用:

if food.rect.colliderect(snake):
    print("collision")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。