首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除矩形(吃苹果)

删除矩形(吃苹果)
EN

Stack Overflow用户
提问于 2020-10-30 21:08:58
回答 1查看 46关注 0票数 0

我试图制作一个游戏,玩家吃一个苹果,在玩家与它碰撞后不得不删除一个矩形,但我得到了一个更好的: AttributeError:'pygame.Rect‘对象没有属性’删除‘。

代码语言:javascript
运行
复制
import pygame
import sys




player_pos=x,y,width,height=(0,0,50,50)
enemy_pos=e_x,e_y,e_width,e_height=(200,0,50,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,0))
player1=pygame.draw.rect(screen,(255,0,0),(x,y,width,height))
enemy1=pygame.draw.rect(screen,(0,0,255),(e_x,e_y,e_width,e_height))
pygame.display.update()
FPS.tick(120)
EN

Stack Overflow用户

回答已采纳

发布于 2020-10-30 21:25:24

如果你想从场景中“移除”一个物体,你所要做的就是停止绘制它。

添加变量draw_enemy并将其初始化为True。当玩家与敌人碰撞时,将变量设置为False。根据draw_enemy的状态来吸引敌人

代码语言:javascript
运行
复制
draw_enemy = True

while True:
    # [...]

    if player1.colliderect(enemy1):
        draw_enemy = False

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

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

    pygame.display.update()

或者在前面创建pygame.Rect

代码语言:javascript
运行
复制
player_rect = pygame.Rect(0, 0, 50, 50)
enemy_rect = pygame.Rect(200, 0, 50, 50)

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

代码语言:javascript
运行
复制
if player_rect.colliderect(enemy_rect):
    enemy_rect.x = random.randrange(0, 975, 25)
    enemy_rect.y = random.randrange(0, 425, 25)

最起码的例子:

代码语言:javascript
运行
复制
import pygame
import random
pygame.init()
screen = pygame.display.set_mode((1000,440))
clock = pygame.time.Clock()

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

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

        if event.type==pygame.KEYDOWN:
            if event.key==pygame.K_UP:
                player_rect.y -= 25
            if event.key==pygame.K_DOWN:
                player_rect.y += 25
            if event.key==pygame.K_RIGHT:
                player_rect.x += 25
            if event.key==pygame.K_LEFT:
                player_rect.x -= 25
    
    if player_rect.colliderect(enemy_rect):
        enemy_rect.x = random.randrange(0, 975, 25)
        enemy_rect.y = random.randrange(0, 425, 25)

    screen.fill((0,0,0))
    pygame.draw.rect(screen, (255,0,0), player_rect)
    pygame.draw.rect(screen, (0,0,255), enemy_rect)
    pygame.display.update()
    clock.tick(120)
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64615797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档