【问题标题】:Pygame: Player won't move when key is held downPygame:按住键时玩家不会移动
【发布时间】:2019-12-23 13:24:31
【问题描述】:

刚开始使用 pygame 并尝试在按住箭头键时让一个简单的点在屏幕上移动。目前,它仅在您按下键时移动,但您必须反复按下它。

import random
import pygame
import keyboard
import time
from pygame.locals import *

class Player:
    def __init__(self):
        self.x = 150
        self.y = 150

pygame.init()
screen = pygame.display.set_mode((400, 300))
pygame.display.set_caption("Smile, you're beautiful!")
player = Player()
while True:
    pygame.time.Clock().tick(60)
    for event in pygame.event.get():
        if event.type == QUIT:
            exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RIGHT:
                player.x += 5
            if event.key == pygame.K_DOWN:
                player.y += 5
            if event.key == pygame.K_LEFT:
                player.x -= 5
            if event.key == pygame.K_UP:
                player.y -= 5
        pygame.event.pump()
    pygame.display.flip()
    pygame.display.update()
    screen.fill((0,0,0))
    pygame.draw.circle(screen, (180, 180, 180), (player.x, player.y), 5)

另外,如果您对我当前的代码提供任何提示,我将不胜感激,这些提示可能会被改进或更改以提高效率。

【问题讨论】:

    标签: python pygame


    【解决方案1】:

    您需要使用pygame.key.get_pressed 而不是按键事件。这样您就可以知道每个滴答声当前正在按下哪些键

    while True:
        pressed = pygame.key.get_pressed()
        if pressed[pygame.K_RIGHT]:
            player.x += 5
        if pressed[pygame.K_DOWN]:
            player.y += 5
        if pressed[pygame.K_LEFT]:
            player.x -= 5
        if pressed[pygame.K_UP]:
            player.y -= 5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多