У меня проблема в том, что я не знаю, как переместить мой Sprite с назначенными клавишами? - PullRequest
0 голосов
/ 20 апреля 2019

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

Я уже спрашивал об этом раньше, но решение было трудным, по сравнению с моим кодом, поэтому я не мог найти решение.

import pygame
pygame.init()

window = pygame.display.set_mode((750, 750))

pygame.display.set_caption("PeaShooters")

avatar = pygame.image.load('Sprite 1 Red.png')
background = pygame.image.load('Bg.jpg')

x = 64
y =64
width = 40
height = 60
vel = 5
white = (255, 255, 255)

def drawGrid():
    window.blit(background, (0,0))
    window.blit(avatar, (300,500))
    pygame.draw.line(window, white, [50,50], [50, 600], 5)
    pygame.draw.line(window, white, [50,50], [600, 50], 5)
    pygame.draw.line(window, white, [600,600], [600, 50], 5)
    pygame.draw.line(window, white, [50,600], [600, 600], 5)
    pygame.draw.line(window, white, [50,450], [600, 450], 5)
    pygame.display.update()

running = True
while running:
    pygame.time.delay(100) 

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

    keys = pygame.key.get_pressed()

    if keys[pygame.K_w] and y > 455:
        y += vel

    if keys[pygame.K_a] and x > 55:
        x -= vel

    if keys[pygame.K_s] and y < 565:
        y -= vel

    if keys[pygame.K_d] and x < 575 :
        x += vel

    x += x

    drawGrid()

pygame.quit()

Я ожидаю, что при нажатии определенной кнопки спрайт перемещается в указанном направлении, этого не происходит.

1 Ответ

1 голос
/ 20 апреля 2019

Удалить эту бесполезную строку

x += x

И используйте (x, y) для установки аватара в правильное положение

window.blit(avatar, (x, y))

Это работает для меня.


РЕДАКТИРОВАТЬ: у вас есть ошибки в y -= ... и y += ... - вы должны поменяться местами.

И y > 55 вместо y > 455

if keys[pygame.K_w] and y > 55:
    y -= vel
if keys[pygame.K_s] and y < 565:
    y += vel

if keys[pygame.K_a] and x > 55:
    x -= vel
if keys[pygame.K_d] and x < 575 :
    x += vel
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...