DirectEntry 和一个基本的 Python 聊天 AI:Panda3D
DirectEntry and a basic Python chat AI: Panda3D
所以我有两个脚本如下。
脚本 1:
while True:
userInput = raw_input(">>> ")
if userInput.lower() in ["yo",'hi', 'hello', 'hi there', 'hey there']:
print "Hi, I'm Jane."
elif userInput.lower() in ["sup", "what's up", "how are you", "how are u", "sup?", "what's up?", "how are you?", "how are u?"]:
whassup = ['Not much, you?','The usual!', 'Working on paperwork.', 'Helping out, haha.', 'Annoying my sisters.']
print(random.choice(whassup))
elif userInput.lower() in ["cool", "awesome", "sounds cool", "rad"]:
print "Aww, thanks!"
else:
print "Sorry, I can only use SpeedChat."
然后,这里是脚本 2,它是 here:
示例代码的略微编辑版本
#add some text
bk_text = "This is my Demo"
userin = OnscreenText(text = bk_text, pos = (0, 0.7),
scale = 0.07,fg=(0,0,0,1),align=TextNode.ACenter,mayChange=1)
userin.setFont(font)
#callback function to set text
def setText(textEntered):
userin.setText(textEntered)
#clear the text
def clearText():
b.enterText('')
#add button
b = DirectEntry(text = "" ,scale=.05, command=setText,
initialText="Type Something", numLines = 2,focus=1,focusInCommand=clearText)
很喜欢。
我想要做的是让用户将他们的输入输入到 DirectEntry 框中,这样 Panda3D 面板(有一个动画角色但不相关)将打印程序的响应。
即用户输入 "Hello!",然后程序将继续在屏幕上吐出 "Hi, I'm Jane."。
我是编码的超级新手,实际上我最终所做的一切都非常复杂;稍微解释一下会很有帮助!!百万感谢!
我实际上是在修补我尝试过的一种解决方案,并意识到它确实可行!我只是打错了,因为我不会输入 :P
如果有人好奇的话,这里是完整的脚本:
#add some text
bk_text = "Hi, I'm Jane."
userin = OnscreenText(text = bk_text, pos = (0, 0.7),
scale = 0.07,fg=(0,0,0,1),align=TextNode.ACenter,mayChange=1)
userin.setFont(font)
#callback function to set text
def setText(textEntered):
if textEntered.lower() in ["yo",'hi', 'hello', 'hi there', 'hey there']:
txt = "Hello!"
grunt.play()
elif textEntered.lower() in ["sup", "what's up", "how are you", "how are u", "sup?", "what's up?", "how are you?", "how are u?"]:
whassup = ['Not much, you?',"The sky's up.", 'Working on paperwork.', 'Researching cookie recipes.', 'Being a giant robot bird, as usual.']
txt = (random.choice(whassup))
statement.play()
elif textEntered.lower() in ["cool", "awesome", "sounds cool", "rad"]:
txt = "Haha, thanks."
statement.play()
elif textEntered.lower() in ["when i was a young boy"]:
txt = "MY FATHER, TOOK ME INTO THE CITY, TO SEE A MARCHING BAND!"
grunt.play()
elif textEntered.lower() in ["jane", "hey jane", "jane?", "hey jane?"]:
txt = "Yes?"
murmur.play()
elif textEntered.lower() in ["who is it", "who is it?", "it is", "is it", "john cena"]:
txt = "JOHN CENA"
JC.play()
else:
txt = "I don't speak Toon?"
question.play()
userin.setText(txt)
#clear the text
def clearText():
b.enterText('')
#add button
b = DirectEntry(text = "" ,scale=.05, command=setText,
initialText="Type Something", numLines = 2,focus=1,focusInCommand=clearText)
b.setPos(-0.27, 0, -0.6)
所以!如果有人好奇,请继续使用它。我可能会用某种 PyAIML 替换 if/elif/else 部分,但对于一个简单的游戏来说,它肯定很棒! :)
所以我有两个脚本如下。
脚本 1:
while True:
userInput = raw_input(">>> ")
if userInput.lower() in ["yo",'hi', 'hello', 'hi there', 'hey there']:
print "Hi, I'm Jane."
elif userInput.lower() in ["sup", "what's up", "how are you", "how are u", "sup?", "what's up?", "how are you?", "how are u?"]:
whassup = ['Not much, you?','The usual!', 'Working on paperwork.', 'Helping out, haha.', 'Annoying my sisters.']
print(random.choice(whassup))
elif userInput.lower() in ["cool", "awesome", "sounds cool", "rad"]:
print "Aww, thanks!"
else:
print "Sorry, I can only use SpeedChat."
然后,这里是脚本 2,它是 here:
示例代码的略微编辑版本 #add some text
bk_text = "This is my Demo"
userin = OnscreenText(text = bk_text, pos = (0, 0.7),
scale = 0.07,fg=(0,0,0,1),align=TextNode.ACenter,mayChange=1)
userin.setFont(font)
#callback function to set text
def setText(textEntered):
userin.setText(textEntered)
#clear the text
def clearText():
b.enterText('')
#add button
b = DirectEntry(text = "" ,scale=.05, command=setText,
initialText="Type Something", numLines = 2,focus=1,focusInCommand=clearText)
很喜欢。 我想要做的是让用户将他们的输入输入到 DirectEntry 框中,这样 Panda3D 面板(有一个动画角色但不相关)将打印程序的响应。
即用户输入 "Hello!",然后程序将继续在屏幕上吐出 "Hi, I'm Jane."。
我是编码的超级新手,实际上我最终所做的一切都非常复杂;稍微解释一下会很有帮助!!百万感谢!
我实际上是在修补我尝试过的一种解决方案,并意识到它确实可行!我只是打错了,因为我不会输入 :P
如果有人好奇的话,这里是完整的脚本:
#add some text
bk_text = "Hi, I'm Jane."
userin = OnscreenText(text = bk_text, pos = (0, 0.7),
scale = 0.07,fg=(0,0,0,1),align=TextNode.ACenter,mayChange=1)
userin.setFont(font)
#callback function to set text
def setText(textEntered):
if textEntered.lower() in ["yo",'hi', 'hello', 'hi there', 'hey there']:
txt = "Hello!"
grunt.play()
elif textEntered.lower() in ["sup", "what's up", "how are you", "how are u", "sup?", "what's up?", "how are you?", "how are u?"]:
whassup = ['Not much, you?',"The sky's up.", 'Working on paperwork.', 'Researching cookie recipes.', 'Being a giant robot bird, as usual.']
txt = (random.choice(whassup))
statement.play()
elif textEntered.lower() in ["cool", "awesome", "sounds cool", "rad"]:
txt = "Haha, thanks."
statement.play()
elif textEntered.lower() in ["when i was a young boy"]:
txt = "MY FATHER, TOOK ME INTO THE CITY, TO SEE A MARCHING BAND!"
grunt.play()
elif textEntered.lower() in ["jane", "hey jane", "jane?", "hey jane?"]:
txt = "Yes?"
murmur.play()
elif textEntered.lower() in ["who is it", "who is it?", "it is", "is it", "john cena"]:
txt = "JOHN CENA"
JC.play()
else:
txt = "I don't speak Toon?"
question.play()
userin.setText(txt)
#clear the text
def clearText():
b.enterText('')
#add button
b = DirectEntry(text = "" ,scale=.05, command=setText,
initialText="Type Something", numLines = 2,focus=1,focusInCommand=clearText)
b.setPos(-0.27, 0, -0.6)
所以!如果有人好奇,请继续使用它。我可能会用某种 PyAIML 替换 if/elif/else 部分,但对于一个简单的游戏来说,它肯定很棒! :)