休休休息 2022-12-31 15:44 采纳率: 100%
浏览 56
已结题

pygame游戏修改出现问题

我在学习使用pygame写游戏,想给游戏增加一个更换角色的选择,但游戏不报错也不出现效果,代码如下:


character_data = {
    'GreenNinja': {'cooldown': 100, 'speed': 15, 'graphic': '../graphics/GreenNinja/'},
    'player': {'cooldown': 400, 'speed': 5, 'graphic': '../graphics/player/'}}

self.character_index = 1
        self.can_switch_character = True
        self.character_switch_time = None
        self.character = list(character_data.keys())[self.character_index]
        self.switch_character_cooldown = 200
        self.speed = character_data[self.character]['speed']
        self.character_graphic = character_data[self.character]['graphic']

        # self.character_path = f'../graphics/{self.character}/'

        # def import_player_assets(self):

        self.animations = {'up': [], 'down': [], 'left': [], 'right': [],
                           'right_idle': [], 'left_idle': [], 'up_idle': [], 'down_idle': [],
                           'right_attack': [], 'left_attack': [], 'up_attack': [], 'down_attack': []}

        for animation in self.animations.keys():
            full_path = self.character_graphic + animation
            self.animations[animation] = import_folder(full_path)
            if keys[pygame.K_l] and self.can_switch_character:
                self.can_switch_character = False
                self.character_switch_time = pygame.time.get_ticks()

                if self.character_index < len(list(character_data.keys())) - 1:
                    self.character_index += 1
                else:
                    self.character_index = 0

                self.character = list(character_data.keys())[self.character_index]

                print(self.character, self.character_index)

当我敲击l后,我的游戏人物角色应该更改,但情况是我的角色没有更改,但是控制台有输出:
player 1
我希望可以让我的角色更改,谢谢大家

  • 写回答

1条回答 默认 最新

  • |__WhoAmI__| 2022-12-31 16:41
    关注

    代码中,在玩家敲击L键的时候,角色的索引和角色名都会更新,但是没有调用角色资产的导入函数来加载新角色的图像。为了使角色在游戏中可见,需要在更改角色名后再次调用角色资产的导入函数。

    可以在这个位置添加一行代码来调用角色资产的导入函数:

    self.import_player_assets()
    

    这样当更改角色名时,就会加载新角色的图像,并在游戏中显示出来。

    另外可能还需要更新角色的速度和其他属性。可以在更改角色名后更新这些属性,例如:

    self.speed = character_data[self.character]['speed']
    

    这样当更改角色名时,就会更新角色的速度等属性。
    仅供参考,望采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月31日
  • 已采纳回答 12月31日
  • 修改了问题 12月31日
  • 创建了问题 12月31日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?