Pygame при нажатии на клавишу перемещает изображение в положение - PullRequest
1 голос
/ 30 января 2020

Эй, я хочу узнать, как переместить ваше изображение в позицию.

Я искал в Google и Youtube, но получил немного информации.

Это мой код

import pygame as pg

pg.init()

# Create screen
screen = pg.display.set_mode((1100, 700))

# Background
background = pg.image.load('map.png')

# Player
playerImg = pg.image.load('player.png')
playerX = 80
playerY = 595


def player(x, y):
    screen.blit(playerImg, (x, y))

# Game Loop
running = True
while running:
    # Background image
    screen.blit(background, (0, 0))

    for event in pg.event.get():
        if event.type == pg.QUIT:
            running = False

        # If keystroke is pressed check whether its right or left
        if event.type == pg.KEYDOWN:
            if event.key == pg.K_q:
                screen.blit(playerImg, [80, 598])

            if event.key == pg.K_w:
                screen.blit(playerImg, [370, 598])

            if event.key == pg.K_e:
                screen.blit(playerImg, [665, 598])

            if event.key == pg.K_r:
                screen.blit(playerImg, [950, 598])


    if playerX <= 80:
        playerX = 80
    elif playerX >= 950:
        playerX = 950

    player(playerX, playerY)
    pg.display.update()

Проблема в том, что у меня сейчас

Когда я нажимаю одну из клавиш, она показывает изображение, но примерно на 1 секунду.

Что я хочу

Когда я нажимаю клавишу, она показывает изображение, а когда я нажимаю вторую клавишу

, я хочу, чтобы изображение go отображалось новая должность.

1 Ответ

1 голос
/ 30 января 2020

Если вы не хотите показывать изображение в начале, то инициируйте координаты игрока с позиции вне экрана. Если нажата клавиша, вам нужно изменить позицию (playerX, playerY):

playerX = -100
playerY = -100

running = True
while running:
    # Background image
    screen.blit(background, (0, 0))

    for event in pg.event.get():
        if event.type == pg.QUIT:
            running = False

        # If keystroke is pressed check whether its right or left
        if event.type == pg.KEYDOWN:
            if event.key == pg.K_q:
                playerX, playerY = 80, 598

            if event.key == pg.K_w:
                playerX, playerY = 370, 598

            if event.key == pg.K_e:
                playerX, playerY = 665, 598

            if event.key == pg.K_r:
                playerX, playerY = 950, 598

    player(playerX, playerY)
    pg.display.update()

screen.blit(playerImg, ...) просто привлечет 2-го игрока в другой позиции, для одного кадра , Это едва заметно и может вызвать короткое мерцание изображения второго игрока.
Обратите внимание, что событие KEYDOWN происходит только один раз, когда кнопка нажата. В этом случае ваш код blit игрока, но он сразу "очищается" в следующем кадре на screen.blit(background, (0, 0)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...