我正在尝试制作一个minimax井字游戏,因为我是Python的新手,并且试图弄清楚一个简单的AI-mini-max游戏是如何工作的。出于某种原因,AI仍然会按顺序排列,以便在板子列表上出现该点。
例如:如果右上角的位置在“ b”列表中排在第一位,则它首先将其选中。看起来它正在计算分数,但我不认为出于某些原因它正在利用分数。我希望它不会按董事会中的空格顺序排列。我想不出一种方法来替换放置“ O”的代码。
public class SettingsDialogFragment extends AppCompatDialogFragment {
// Implementation
}
答案 0 :(得分:0)
str
作为变量名称,因为它是内置变量。enumerate
从列表中获取索引和值。scores
应该在minimax
中定义,因为这是唯一使用它的地方。由于这部分代码,AI占据了第一个位置:
bestScore = -math.inf
turnai = False
i = 0
for str in b:
if str == " ":
b[i] = AI
score = minimax(b, 0, True)
b[i] = " "
print(score)
if score > bestScore and turnai == False: # Allways true first loop
bestScore = score
b[i] = AI
turnai = True # ^ Never true in later loops
具有讽刺意味的是,只有在turnai == false
turnai
布尔值,因为您已明确编写了AI和用户回合的代码。boolean == True
只是说while game:
break
。sw = checkwinner()
,然后检查cw
的值我可以为您解决这个问题,但是我想我已经给您足够的地方可以在这里使用,我会告诉您您的概念不错,因此,如果您再坚持一点,您应该会感到满意结果...
此处的主要逻辑缺陷是,您实际上从不计算给定选择留下的获胜次数...您的minimax函数每次仅返回1。