3

我一直在尝试在 python 3.0 中创建一个简单的 Rock, Paper, Scissors 游戏——对于任何学习编程的人来说都是非常标准的任务。

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

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

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

我知道我可以很容易地做到这一点,只需抓住第一个和第二个答案的索引并比较两个输入 - 很容易。但我宁愿发生的是,在两个玩家同时输入他们的一个角色答案后(r 代表石头,p 代表纸,或 s 代表剪刀),然后程序将自动输入输入。不需要有人按回车。

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

我想我的问题是:有没有办法规定什么可以用作“输入”的输入?

4

1 回答 1

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/

于 2012-11-22T16:25:19.783 回答