在python 3.0中输入字符串后,Supersede用户需要按Enter键

时间:2012-11-22 15:54:05

标签: python input

我一直在尝试在python 3.0中创建一个简单的Rock,Paper,Scissors游戏 - 这是任何学习编程的非常标准的任务。

但是,当我完成某一点时,我想,“哇,那太棒了”,或者“这样做很酷!”所以无论如何,我一直在建设项目......

我开发了一个菜单,一个单人游戏与电脑,并刚刚完成了多人游戏。但是,我意识到,多人游戏不是很有效。它只是不像游戏的模拟版本那样工作。

目前,它会询问player1的输入,然后是player2的输入,比较它们,并吐出结果和当前分数。我宁愿发生的是该程序要求两个玩家同时输入,并且两个玩家同时输入他们的选择。

我明白我只需抓住第一个和第二个答案的索引并比较2个输入就可以轻松实现这一点 - 很容易。但我宁愿发生的事情是,在两个玩家同时输入他们的一个角色答案(r代表摇滚,p代表纸张,或s代表剪刀),程序将自动输入输入。不需要有人按回车。

输入将由输入2个字符的事实决定。

我想我的问题是: 有没有办法指示什么可以用作'enter'的输入?

1 个答案:

答案 0 :(得分:2)

我认为您正在寻找类似msvcrt.getch()的内容。

如果你只需要它用于Windows,那很简单:

from msvcrt import getch
letter1 = getch()
letter2 = getch()        
print("Pressed", letter1, "and", letter2)

对于Linux来说,它有点复杂:

import sys, tty, termios
def getch():
    fd = sys.stdin.fileno()
    old_settings = termios.tcgetattr(fd)
    try:
        tty.setraw(sys.stdin.fileno())
        ch = sys.stdin.read(1)
    finally:
        termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
    return ch

letter1 = getch()
letter2 = getch()        
print("Pressed", letter1, "and", letter2)

请注意,他们不会回复按下的字母。如果两个玩家都在同一台计算机上,这对于这个游戏实际上可能是有益的,但是你总是可以在收到价值后手动打印它。

对于使用多态来选择正确版本的跨平台解决方案,请查看此配方:

http://code.activestate.com/recipes/134892/