If(),否则在c ++中使用if()替代(这是AI吗?)

Nic*_* P. 9 c++ optimization if-statement artificial-intelligence

首先,我是一个菜鸟.我也是一个从来没有写过一毛钱代码的看门人.这只是我喜欢做的事情.这是有趣的:)话虽这么说,我写了这个控制台为基础的tic-tak-toe游戏,有足够的ai不会失去每场比赛.(我猜ai应该被称之为.)如果计算机的语句转向,它有70个if/else.我使用了3个int数组,如下所示:

int L[2], M[2], R[2];
Run Code Online (Sandbox Code Playgroud)

0 =空白; 1 = X; 2 = O;
然后董事会'看起来'像
L [0] | M [0] | R [0]
L [1] | M [1] | R [1]
L [2] | M [2] | [R [2]

所以我基本上写出了我可以想到的每一种可能的情况:

if(M[0]==1 & M[1]==1 & M[2]==0){M[2] = 2;}//here the computer prevents a win 
else if(L[0] ==2&M[1]==2&R[2]==0){R[2]=2;}//here the computer wins
//and so on....68 more times!
Run Code Online (Sandbox Code Playgroud)

我猜我的问题是(是):
有更好的方法吗?
有没有办法用更少的代码行来实现相同的结果?
这被认为是人工智能吗?

Col*_*lin 5

标准算法称为Minimax.它基本上构建了一个树,其中游戏的开头是根,然后子代表X在第一个转弯时可以做出的每个可能的移动,然后每个节点的子节点都是O可以响应的移动,一旦整个树被填满(这对于Tic-Tac-Toe来说是可能的,但是对于像Chess计算机这样的游戏仍然没有足够的内存),你可以恢复工作,假设两个玩家都足够聪明,最佳移动,并达到最佳移动.以下是Minimax的另一种解释,特别是使用Tic Tac Toe作为例子.