Pygame: игрок не будет двигаться, когда нажата клавиша - PullRequest
1 голос
/ 23 декабря 2019

Просто начинайте в 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)

Кроме того, я был бы признателен за любые советы, которые вы могли бы иметь относительно моего текущего кода, которые могут быть улучшены или изменены для повышения эффективности.

1 Ответ

0 голосов
/ 23 декабря 2019

Вам нужно использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...