gpt4 book ai didi

python - raw_input() 在 cocos2d for Python 中等效

转载 作者:太空宇宙 更新时间:2023-11-04 03:36:35 26 4
gpt4 key购买 nike

我正在 cocos2d-0.6.0 中构建一个简单的游戏,无法弄清楚如何让玩家输入用户名或其他首选项的文本。

我只找到了几个例子,比如 here ,但这并不是我要找的。我的尝试如下;我使用 handling_events.py 来尝试 update_text,但它只是将以逗号分隔的字母列表串在一起。

最终目标是能够使用标签提出问题(“你叫什么名字?”),然后让用户键入一个响应,该响应将存储为一个变量,我可以稍后访问(显示在例如,关注高分列表中的场景)。让我知道我是否可以澄清我的问题。

class Settings(cocos.layer.ColorLayer):
is_event_handler = True
def __init__(self):
super(Settings, self).__init__(0,0,0,255)

label = cocos.text.Label('Pick a name:',
font_name='Courier',
font_size=32,
anchor_x='center', anchor_y='center')
label.position = 320,650
self.add(label )

self.text = cocos.text.Label("", x=100, y=280)
self.keys_pressed = set()
self.update_text()
self.add(self.text)

问题来了。我不想只收集 A、G、T、SEMICOLON 等字母和符号的列表。

def update_text(self):
key_names = [pyglet.window.key.symbol_string(k) for k in self.keys_pressed]
text = 'Keys: ' + ','.join(key_names)
# Update self.text
self.text.element.text = text

这是可选的;它将设置页面转换到主游戏页面。

def on_key_press(self, k, m):
if k == key.ENTER:
director.replace(FadeTransition(
main_scene, 1))
else:
self.keys_pressed.add(k)
self.update_text()


if __name__ == "__main__":
cocos.director.director.init(height = 690, width = 640)
settings_scene = cocos.scene.Scene(settings)
cocos.director.director.run(settings_scene)

最佳答案

也许您正在寻找这样的东西。唯一的缺点是现在全部大写:

import cocos
import pyglet

class Settings(cocos.layer.ColorLayer):
is_event_handler = True
def __init__(self):
super(Settings, self).__init__(0,0,0,255)

label = cocos.text.Label('Pick a name:',
font_name='Courier',
font_size=32,
anchor_x='center', anchor_y='center')
label.position = 320,650
self.add( label )

self.text = cocos.text.Label("", x=100, y=280)
self.keys_pressed = ""
self.update_text()
self.add(self.text)

def update_text(self):
# Update self.text
self.text.element.text = self.keys_pressed

def on_key_press(self, k, m):
if k == pyglet.window.key.ENTER:
print "You Entered: {}".format(self.keys_pressed)
# cocos.director.director.replace(FadeTransition(main_scene, 1)) # disabled for testing
cocos.director.director.scene.end() # added for testing
else:
kk = pyglet.window.key.symbol_string(k)
if kk == "SPACE":
kk = " "
if kk == "BACKSPACE":
self.keys_pressed = self.keys_pressed[:-1]
else:
# ignored_keys can obviously be expanded
ignored_keys = ("LSHIFT", "RSHIFT", "LCTRL", "RCTRL", "LCOMMAND",
"RCOMMAND", "LOPTION", "ROPTION")
if kk not in ignored_keys:
self.keys_pressed = self.keys_pressed + kk
self.update_text()


if __name__ == "__main__":
cocos.director.director.init(height = 690, width = 640)
settings_scene = cocos.scene.Scene(Settings())
cocos.director.director.run(settings_scene)

关于python - raw_input() 在 cocos2d for Python 中等效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28797364/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com