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

删除矩形吃苹果

如何解决删除矩形吃苹果

我试图制作一个游戏,让玩家吃一个苹果,并且在玩家与苹果发生碰撞后必须删除一个矩形,但是却出现了以下错误:AttributeError:'pygame.Rect'对象没有属性'remove'

import pygame
import sys




player_pos=x,y,width,height=(0,50,50)
enemy_pos=e_x,e_y,e_width,e_height=(200,50)

pygame.init()
screen=pygame.display.set_mode((1000,440))
FPS=pygame.time.Clock()

while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            sys.exit()

        if event.type==pygame.KEYDOWN:
            if event.key==pygame.K_UP:
                y-=25

            if event.key==pygame.K_DOWN:
                y+=25

            if event.key==pygame.K_RIGHT:
                x+=25

            if event.key==pygame.K_LEFT:
                x-=25


            if player1.colliderect(enemy1):
                enemy1.remove()

screen.fill((0,0))
player1=pygame.draw.rect(screen,(255,0),(x,height))
enemy1=pygame.draw.rect(screen,(0,255),(e_x,e_height))
pygame.display.update()
FPS.tick(120)

解决方法

如果要从场景中“删除”对象,只需停止绘制即可。
添加变量draw_enemy并将其初始化为True。当玩家与敌人碰撞时,将变量设置为False。根据{{​​1}}的状态吸引敌人:

draw_enemy

或者在之前创建pygame.Rect

draw_enemy = True

while True:
    # [...]

    if player1.colliderect(enemy1):
        draw_enemy = False

    screen.fill((0,0))
    player1 = pygame.draw.rect(screen,(255,0),(x,y,width,height))

    if draw_enemy:
        enemy1 = pygame.draw.rect(screen,(0,255),(e_x,e_y,e_width,e_height))

    pygame.display.update()

在检测到碰撞时创建对象的新随机位置:

player_rect = pygame.Rect(0,50,50)
enemy_rect = pygame.Rect(200,50)

最小示例:

if player_rect.colliderect(enemy_rect):
    enemy_rect.x = random.randrange(0,975,25)
    enemy_rect.y = random.randrange(0,425,25)

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