Аналогично предыдущему вопросу, но я перешел на ООП, как мне заставить мой спрайт двигаться? - PullRequest
0 голосов
/ 24 апреля 2019

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

Я не особо старался из-за чего-то измениться.

import pygame
pygame.init()

window = pygame.display.set_mode((650, 630))

pygame.display.set_caption("PeaShooters")

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

class player(object):
    def __init__(self, x, y, width, height):
        self.x = 300
        self.y = 500
        self.width = 40
        self.height = 60
        self.vel = 9



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()

av = player(300, 500, 40, 60)
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 av.y > 440:
        av.y -= av.vel

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

    if keys[pygame.K_s] and av.y < 530:
        av.y += av.vel

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


    drawGrid()

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

pygame.quit()

Когда я загружаю игру, игрок должен двигаться, чего он не делает.

1 Ответ

2 голосов
/ 24 апреля 2019

Вы обновляете свои позиции игрока внутри проверок нажатия клавиш, но не используете эти значения, чтобы переиграть игрока в нужном месте.Попробуйте изменить эту строку:

window.blit(avatar, (300, 500))

на

window.blit(avatar, (av.x, av.y))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...