基本上,我正在创建一个游戏:连接4.如果用户每次移动都要赢,我希望AI在水平和垂直方向上进行检查。实际情况是,它应该一次只执行一次检查,因为无论如何都不能同时进行2次移动。
所以,我创建了2个检查功能。一个用于水平检查,一个用于垂直检查。即:
假设玩家计数器为'X'
且AI计数器为'O'
:
def horizonal_check():
if 'XXX'= True:
AI='XXXO'
我实际游戏中的if语句更加复杂,但实质上,这是它检查的内容然后允许AI将自己的计数器放置在适当的位置并阻止我获胜。
def vertical_check():
if 'XXX' = True:
AI = 'XXXO'
这实现了与上述函数相同的策略,但唯一的区别是,它检查连续3个计数器的垂直组合而不是水平组合。
所以我真正想做的是将这2个检查函数存储在一个元组中,然后使用for循环遍历每个函数。这样可确保一次只运行一次检查。这是我的for循环:
Checks = (horizontal_check(), vertical_check()) # Checks stored in a tuple
for c in Checks:
return c
我希望这个for循环一次循环遍历元组中的每个单独检查。但它似乎没有用。 AI什么都不做
答案 0 :(得分:3)
您当前正在创建一个元组,其中包含两个函数调用的返回值,分别为None
和None
,而不是函数本身。
添加功能:
Checks = (horizontal_check, vertical_check) # Checks stored in a tuple
然后给他们打电话:
for c in Checks:
c()
另外,我怀疑这是一个微不足道的例子,但仍然是:
'XXX' = True
是不允许的(至少在if
中),应为'XXX' == True
。return
循环中for
:这是一个禁忌。答案 1 :(得分:0)
很难说,但我想你想要这个
Checks = (horizontal_check, vertical_check) # do not call the function here...
return any(c() for c in Checks) #call it as you loop through ...