使用程序在其他程序中输入?

时间:2015-08-25 17:24:43

标签: python input

我是编程方面的新手(我只知道python)。昨天我完成了2048游戏(在命令行中运行)。现在我决定制作一个可以自动播放的AI,但我不希望每次运行游戏时都会运行这个AI。

所以对我的问题,有没有办法让程序/脚本实际输入(在命令行中)并从另一个程序读取数据?

我的“移动”代码来自我的2048游戏:

def move():
    global board
    direction = "x"
    while direction != "a" and direction != "w" and direction != "s" and direction != "d":
          direction = raw_input("Where do you want to move?(WASD)")
          direction = direction.lower()
          if direction == "a":
             left()
          elif direction == "w":
             up()
          elif direction == "s":
             down()
          elif direction == "d":
             right()

所以我想要的是第二个实际输入(direction = raw_input(“你想在哪里移动?(WASD)”)而不是播放器的程序。

有办法做到这一点吗? 编辑:     我正在运行Windows 10

2 个答案:

答案 0 :(得分:0)

您必须替换class2(string p)的调用来调用处理输入的自定义函数。

类似的东西:

raw_input

my_other_script.py 中有一个名为from my_other_script import get_input def move(): global board direction = "x" while direction != "a" and direction != "w" and direction != "s" and direction != "d": direction = get_input(board) if direction == "a": left() elif direction == "w": up() elif direction == "s": down() elif direction == "d": right() 的函数可以执行您想要生成输入的任何内容

get_input

请注意,我正在通过def get_input(board): # my conditions go here return direction ,因此您可以了解当前的电路板状态,并使用它来选择最佳移动。

如果您无法替换board来电,则可以使用monkey patch it模块mock

答案 1 :(得分:0)

不,这将是非常艰难和充实的。

我建议将AI合并到你的脚本中,然后让用户选择自己玩或允许AI玩:

print "Would you like to play, or watch the AI play?"
print " 1) User"
print " 2) AI "
userOrAI = raw_input("")
if (userOrAI == "1"):
    move()
if (userOrAI == "2"):
    AImove() #you would need to create a function to play as AI here
else:
   print "Invalid entry"