You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyGame开发游戏时敌人无法在屏幕正常显示该如何排查

问题修复方案

核心错误点

  • 已定义enemy()敌人绘制函数,但未在主循环的画面更新逻辑前调用,敌人图像不会被渲染到屏幕上。
  • 键盘按键判断逻辑写在事件遍历循环外部,仅能响应最后一次捕获的事件,存在按键响应异常的隐患。

修复后可运行代码

import pygame

pygame.init()

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

#Titulo E Icono
pygame.display.set_caption("Invaders")
icon = pygame.image.load('logo.jpg')
pygame.display.set_icon(icon)

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

enemyImage = pygame.image.load('enemy.png')
enemyX = 370
enemyY = 48
enemyX_change = 0

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

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

#Loop
running = True
while running:
    screen.fill((59, 59, 59))   

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        # 按键判断逻辑移到事件循环内部
        #Right Or Left Checker
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                playerX_change = -0.5
            if event.key == pygame.K_RIGHT:
                playerX_change = 0.5
        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

    player(playerX, playerY)
    # 调用敌人绘制函数
    enemy(enemyX, enemyY)
    pygame.display.update()

内容的提问来源于stack exchange,提问作者NotM1guel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:18:01