慕工程0101907
2023-10-11 22:45:43
import pygamewidth = 500height = 500win = pygame.display.set_mode((width, height))pygame.display.set_caption("Client")running = FalseclientNumber = 0class 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, y, width, 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, 100, (0, 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。但我不知道該怎么做。我嘗試創建一個“正在運行”的布爾變量,以僅在您按下它時而不是按下它時加速它。但我所有的努力都失敗了。
1 回答

慕神8447489
TA貢獻1780條經驗 獲得超1個贊
current_vel計算取決于 的關鍵狀態的當前速度 ( ) a。用于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)
添加回答
舉報
0/150
提交
取消