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
相关产品推荐
相关产品推荐

