我是Matlab的新手,正在创建一个简单的Tic Tac Toe游戏,用户可以在游戏中对抗计算机。我在GUI中有3x3按钮,对于每个按钮的回调,我已将其设置为如果方形为空则会出现“X”,并将“1”值设置为相应位置的3x3零点矩阵。 / p>
我希望在每个回调之后放置一个'player2'函数,这样计算机就会在矩阵中找到零点的任意点,随机选择一个并给我坐标,然后我将其转换为相应的坐标。按钮在那里放置'O'。
矩阵是handles.move =零(3,3)。
我知道我可能需要使用'if'语句,并且'[i,j] = find(move == 0);'但是我不知道用什么随机命令从零中选择会给我回到坐标的。有什么建议吗?
答案 0 :(得分:2)
调用find(move==0)
将返回move
中等于零的元素的线性索引。例如:
move =
1 0 1
0 0 0
0 1 0
>>indices = find(move==0)
indices =
2
3
4
5
8
9
您可以使用此结果并使用...
随机加扰索引>>scrambled = indices(randperm(length(indices)))
scrambled =
9
2
8
4
3
5
然后选择第一个元素scrambled(1)
作为计算机的下一个选择。可能有几种方法可以解决这个问题。关于这一点的好处是它可以在游戏结束时被调用以检索计算机的下一步。
编辑:
computerMove = indices(randperm(length(indices),1));
这将自动返回第一个元素,正如丹尼斯指出的那样。
答案 1 :(得分:1)