敌人不会在 pygame 内自行移动

Enemy wont move on its own in pygame

好吧,我的敌人只有在我移动我的角色时才会移动,但它有时也会完全脱离游戏 window。还有背景,玩家和敌人有点......在我按下移动按钮之前不要弹出,我很抱歉这个 lmfao 也很抱歉我被告知将它们放在那里以提醒 wtf 到

import pygame import random

pygame.init()

screen = pygame.display.set_mode((800, 600))

background = pygame.image.load("BackgroundImg.jpg")

pygame.display.set_caption("Real Hero") icon = pygame.image.load('Icon.png') pygame.display.set_icon(icon)

playerImg = pygame.image.load('Player.png') playerX = 370 playerY = 480 playerX_change = 0

enemyImg = pygame.image.load('Enemy.jpg') enemyX = random.randint(0, 746) enemyY = random.randint(50, 746) enemyX_change = 0.2 enemyY_change = 40

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

def enemy(x, y): screen.blit(enemyImg, (x, y))

running = True while running:

screen.fill((0, 0, 0))
# Background Image
screen.blit(background, (0, 0))
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        running = False

if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_LEFT:
        playerX_change = -0.3
    if event.key == pygame.K_RIGHT:
        playerX_change = 0.3
    if event.type == pygame.KEYUP:
        if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
            playerX_change = 0

    playerX += playerX_change

    if playerX <= 0:
        playerX = 0
    elif playerX >= 736:
        playerX = 736
    
    enemyX += enemyX_change

    if enemyX <= 0:
        enemyX_change = 0.2
        enemyY += enemyY_change
    elif enemyX >= 736:
        enemyX_change = -0.2
        enemyY += enemyY_change

    enemy(enemyX, enemyY)
    player(playerX, playerY)
    pygame.display.update()

之所以只有当你按下移动键时敌人才会移动,是因为你在 if event.type == pygame.KEYDOWN: if 语句中有敌人移动代码。您也仅在按下移动键时更新屏幕,因为 pygame.display.update() 也在该 if 语句中。当从 if 语句中按下一个键时,您需要移动任何不应该只是 运行 的代码。