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

如何使矩形“冲刺”

如何解决如何使矩形“冲刺”

import pygame

width = 500
height = 500
win = pygame.display.set_mode((width,height))
pygame.display.set_caption("Client")
running = False

clientNumber = 0

class Player():
    def __init__(self,x,y,width,height,color):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.color = color
        self.rect = (x,height)
        self.vel = 3

    def draw(self,win):
        pygame.draw.rect(win,self.color,self.rect)

    def move(self):
        keys = pygame.key.get_pressed()
        running = bool

        if keys[pygame.K_LEFT]:
            self.x -= self.vel

        if keys[pygame.K_RIGHT]:
            self.x += self.vel

        if keys[pygame.K_UP]:
            self.y -= self.vel

        if keys[pygame.K_DOWN]:
            self.y += self.vel

        if keys[pygame.K_a] and not running:
            self.vel += 3
            running = True

        if not keys[pygame.K_a]:
            running = False


        self.rect = (self.x,self.y,self.width,self.height)



def redrawWindow(win,player):

    win.fill((255,255,255))
    player.draw(win)
    pygame.display.update()


def main():
    run = True
    p = Player(50,50,100,(0,255))
    clock = pygame.time.Clock()

    while run:
        clock.tick(60)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
                pygame.quit()

        p.move()
        redrawWindow(win,p)

main()

我成功制作了可以通过键盘输入移动的矩形物件。 现在我想像改变矩形的速度,同时按'a',速度从3更改为6。 但我不知道该怎么做。 我试图制作一个“运行中”的bool变量,以仅在按下时才加速它,而不是在按下时才加速。 但是我所有的努力都错了。

解决方法

根据 a 的键状态计算当前速度(current_vel)。使用current_vel而不是self.vel移动播放器:

class Player():
    # [...]

    def move(self):
        keys = pygame.key.get_pressed()

        current_vel = self.vel
        if keys[pygame.K_a]:
            current_vel += 3

        if keys[pygame.K_LEFT]:
            self.x -= current_vel 
        if keys[pygame.K_RIGHT]:
            self.x += current_vel 
        if keys[pygame.K_UP]:
            self.y -= current_vel 
        if keys[pygame.K_DOWN]:
            self.y += current_vel 

        self.rect = (self.x,self.y,self.width,self.height)

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