Как я могу сделать функцию, которая заставляет моего игрока двигаться в Pygame

avatar
Noam Aharoni
8 августа 2021 в 08:07
57
1
1

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

это код:

import pygame

pygame.init()

WIN = pygame.display.set_mode((800, 600))
WIDTH, HEIGHT = 800, 600
VEL = 3
FPS = 60
WHITE_COLOR = (255, 255, 255)
pygame.display.set_caption("Space Invaders")
ufo_icon = pygame.image.load('ufo.png')
player = pygame.image.load('space-invaders.png')
player = pygame.transform.scale(player, (60, 60))
playerX = 400 - player.get_width()/2
playerY = 300
pygame.display.set_icon(ufo_icon)




def player_movement(playerX , keys):
    if keys[pygame.K_LEFT]:
        playerX += VEL

def draw_window(player, playerX, playerY):
    WIN.fill((WHITE_COLOR))
    WIN.blit(player, (playerX, playerY + 100))
    pygame.display.update()



def main():
    run = True
    while run:
        for event in pygame.event.get():

            if event.type == pygame.QUIT:
                run = False



            keys = pygame.key.get_pressed()
        player_movement(playerX, keys)
        draw_window(player, playerX, playerY)



main()
Источник

Ответы (1)

avatar
Rabbid76
8 августа 2021 в 08:13
1

Python не имеет концепции входных и выходных параметров. Вам нужно вернуть новое значение из функции:

def player_movement(playerX , keys):
    if keys[pygame.K_LEFT]:
        playerX -= VEL
    if keys[pygame.K_RIGHT]:
        playerX += VEL
    return playerX
def main():
    playerX = 400 - player.get_width()/2
    playerY = 300
    run = True
    while run:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False

        keys = pygame.key.get_pressed()
        playerX = player_movement(playerX, keys)
        draw_window(player, playerX, playerY)
Noam Aharoni
8 августа 2021 в 08:48
1

да, я только что исправил это, это моя первая программа в Pygame, и я довольно новичок в программировании. вот почему у меня было много проблем