Pygame-可自定义的控件



我已经使用Pygame制作游戏了一段时间,并最终决定我要为游戏进行可自定义的控件,以便玩家可以更改他们使用的按钮。<<<<<<<<<<<<<</p>

我之前(在Java中)使用配置文件进行了此操作,但是将字符串转换为按键是一个缓慢而笨拙的Proccess。我想知道是否有人有更好的想法?

谢谢

丹尼尔

我将使用两个dict。一个将键映射到诸如{"up": "move_up"}之类的操作,一个将操作映射到诸如{"move_up": player.move_up}之类的函数(player.move_up是函数)。可以从配置文件加载操作的关键,并且可以将功能的操作进行硬编码。

import pygame
from ConfigParser import SafeConfigParser
action2function = {
    "up": player.move_up,
    "down": player.move_down,
    "left": player.move_left,
    "right": player.move_right
}
config = SafeConfigParser()
config.read(CONFIG_DIRS)
key2action = config.items()
...
for event in pygame.event.get():
    if event.type == KEYDOWN:
        action2function[key2action[pygame.key.name(event.key)]]()
...

您可以使用dict并将每个键分配给操作,当用户更改控件时,只需重新分配操作

示例:

key_presses = {'a' : 'example()',
               'up' : 'rect.x +=1',
               'down' : 'rect.y -= 1'
               #etc

然后,您只需获取每个按钮按事件的event.key,例如:

#in your mainloop
if event.type == KEYDOWN:
    key = pygame.key.name(event.key) #returns name of key in string
    exec(keypresses[event.key])

event.key返回int,然后 pygame.key.name()返回键的名称为字符串,因此,如果按下up按钮,它将执行从字典中获得的代码

这是一种方法,不确定它是否最简单,告诉我您是否有任何问题

相关内容

  • 没有找到相关文章

最新更新