问题描述
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)