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

Pygame实现角色移动到指定X坐标时自动切换显示图片的方法

Pygame Joker角色形象切换功能实现方案

你不需要每次切换时重复加载图片,提前预加载两张资源后仅切换渲染对象即可,完整修改后的代码如下:

import pygame

pygame.init()

display_width = 1000
display_height = 700

gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption('The Dark Knight')

background = pygame.image.load('/Users/arnav/Downloads/GothamCity.jpg')
appwallpaper = pygame.image.load('/Users/arnav/Downloads/AppWallpaper.jpeg')
pygame.display.set_icon(appwallpaper)

# --------------修改点:预加载两种Joker形象----------------
joker_normal = pygame.image.load('/Users/arnav/Downloads/Joker.png')
# 注意替换为你实际的JokerInverted.png存储路径
joker_inverted = pygame.image.load('/Users/arnav/Downloads/JokerInverted.png')
current_joker = joker_normal # 初始使用正常形象
# --------------------------------------------------------

JokerX = 1000
JokerY = 400
JokerX_change = 0
JokerY_change = 0

def TheJoker(x,y):
    gameDisplay.blit(current_joker,(x,y))

running = True
while running:
    gameDisplay.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 or event.key == ord('a'):
                JokerX_change = -1
            if event.key == pygame.K_RIGHT or event.key == ord('d'):    
                JokerX_change = 1
            if event.key == pygame.K_UP or event.key == ord('w'):
                JokerY_change = -1 
            
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT or event.key == ord('a') or event.key == pygame.K_RIGHT or event.key == ord('d') or event.key == pygame.K_UP or event.key== ord('w'): 
                JokerX_change = 0
                JokerY_change = 0
            if event.key == pygame.K_UP or event.key == ord('w'):
                JokerY_change = 1             
            
    JokerX += JokerX_change
    JokerY += JokerY_change

    spriteWidth, spriteHeight = current_joker.get_rect().size
    JokerX = min(max(JokerX, 0), display_width - spriteWidth)
    JokerY = min(max(JokerY, 150), display_height - spriteHeight)

    # --------------修改点:坐标判断切换形象----------------
    if JokerX <= 0:
        current_joker = joker_inverted
    elif JokerX >= 850:
        current_joker = joker_normal
    # --------------------------------------------------------

    TheJoker(JokerX,JokerY)
    pygame.display.update()

pygame.quit()
quit()

核心修改说明

  • 提前预加载正常和反转两种Joker图片资源,避免运行时重复加载造成卡顿
  • 新增current_joker变量存储当前渲染使用的精灵
  • 在坐标边界限制逻辑后增加判断,当X坐标触达对应阈值时切换渲染对象
  • 注意替换代码中JokerInverted.png的路径为你本地的实际存储路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:48:02