我一直在尝试在python 3.0中创建一个简单的Rock,Paper,Scissors游戏 - 这是任何学习编程的非常标准的任务。
但是,当我完成某一点时,我想,“哇,那太棒了”,或者“这样做很酷!”所以无论如何,我一直在建设项目......
我开发了一个菜单,一个单人游戏与电脑,并刚刚完成了多人游戏。但是,我意识到,多人游戏不是很有效。它只是不像游戏的模拟版本那样工作。
目前,它会询问player1的输入,然后是player2的输入,比较它们,并吐出结果和当前分数。我宁愿发生的是该程序要求两个玩家同时输入,并且两个玩家同时输入他们的选择。
我明白我只需抓住第一个和第二个答案的索引并比较2个输入就可以轻松实现这一点 - 很容易。但我宁愿发生的事情是,在两个玩家同时输入他们的一个角色答案(r代表摇滚,p代表纸张,或s代表剪刀),程序将自动输入输入。不需要有人按回车。
输入将由输入2个字符的事实决定。
我想我的问题是: 有没有办法指示什么可以用作'enter'的输入?
答案 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)
请注意,他们不会回复按下的字母。如果两个玩家都在同一台计算机上,这对于这个游戏实际上可能是有益的,但是你总是可以在收到价值后手动打印它。
对于使用多态来选择正确版本的跨平台解决方案,请查看此配方: