如果按键,如何增加矩形的大小?

2024-10-01 15:34:24 发布

您现在位置:Python中文网/ 问答频道 /正文

使用pygame,我尝试创建一个简单的机制,它将在代码的右上角增加一个矩形,在本例中它是一个健康栏。现在,我想让栏增加每一次按钮'x'点击。这是我的代码:

    DISPLAYSURF = DISPLAYSURF = pygame.display.set_mode((900, 550), 0, 32)

    heatBar = [45, 30]
    hbPosition = [45, 30]
    # Main game loop
    while True:
        heatBar.insert(0, list(hbPosition))
        for event in pygame.event.get():
        #Heat Bar (Tap x to increase)
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_x:
                for pos in heatBar:
                    pygame.draw.rect(DISPLAYSURF, GREEN, 
                    pygame.Rect(pos[0],pos[1],10,50))

在pygame.Rect游戏最后一行是前一行的一部分。 不管怎样,我试着添加各种各样的东西,并对其进行注释,但我似乎无法使其发挥作用。你知道我做错了什么或者怎么解决吗?在


Tags: 代码inposrecteventforif按钮
1条回答
网友
1楼 · 发布于 2024-10-01 15:34:24

下面是一个健康酒吧的例子:

import pygame

pygame.init()

w, h = 400, 400
screen = pygame.display.set_mode((w, h))

health = 0

while True:
    screen.fill((0, 0, 0))
    if pygame.event.poll().type == pygame.QUIT: pygame.quit(); break
    keys = pygame.key.get_pressed()
    if keys[pygame.K_x]:
        health += 0.1

    pygame.draw.rect(screen,
                     (100, 240, 100),
                     pygame.Rect(0, 0, health, 35
    ))
    pygame.display.flip()

编辑(添加额外功能):

^{pr2}$

不幸的是,由于tint的工作原理,中档看起来像一个丑陋的褐色。在

另外,我强烈建议你用classes来制作游戏,它们更加统一,而且非常适合制作大型项目。在

这里有一个很好的链接:https://www.youtube.com/watch?v=ZDa-Z5JzLYM

编辑(修复褐色):

要修复褐色,请更改以下行:

pygame.draw.rect(screen,
                (tint, 255 - tint, 0),
                pygame.Rect(0, 0, health, 35
))

^{4}$

注意:使用min(255, ...)将有效地确保值不超过255,因为只要数字小于255,它就会返回数字,否则它将返回255。将tint乘以2基本上可以抵消它,而{}也可以抵消另一个,您可以将335更改为另一个数字,以更改健康栏中黄色的位置:)

相关问题 更多 >

    热门问题