我是编程方面的新手(我只知道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
答案 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"