我编码Connect4游戏。Firstmove发挥底部中间的空板如果我首先,secondmove发挥到左边或者右边的其他球员如果我第二次。为什么我的代码底部的中间和左边的我自己搬家吗?

1视图(30天)
函数国家= play_connect_four_MeisSunnarborg(状态,玩家)
如果firstmove(状态)= = true
4)状态(6日=球员;
结束
如果secondmove(状态)= = true
坳=找到(状态(6:),1);
col-1状态(6日)=球员;
结束
如果secondmove(状态)= = false
坳=找到(状态(6:),1);
状态(6 + 1)上校=球员;
结束
结束
函数firstmove = firstmove(状态)
如果状态= = 0 (6、7)
firstmove = true;
其他的firstmove = false;
结束
结束
函数secondmove = secondmove(状态)
坳=找到(状态(6:),1);
如果坳= = | 2 | 3 | 4 | | | 5 | | 6 | | 7
secondmove = true;
结束
如果坳= = 1
secondmove = false;
结束
结束

接受的答案

詹姆斯Tursa
詹姆斯Tursa 2017年4月27日
编辑:詹姆斯Tursa 2017年4月27日
几个问题:
取代这一行:
如果状态= = 0 (6、7)
这个测试矩阵平等:
如果isequal(状态,0 (6、7)
或者,如果您希望通用代码,并不依赖于任何特定的矩阵大小,也许这不是:
如果(所有(状态(:)= = 0))
取代这一行:
如果坳= = | 2 | 3 | 4 | | | 5 | | 6 | | 7
用这个测试如果数量是几个可能的数字:
如果(ismember (col [2 3 4 5 6 7]))
不名回归变量作为函数名相同。所以改变这条线:
函数firstmove = firstmove(状态)
这样的东西,而不是(和所有变量引用更改为“结果”):
函数结果= firstmove(状态)
评论“secondmove”功能相同。
“firstmove”和“secondmove”函数返回一个值,但是你不做任何与此值调用代码。所以你需要检查你的逻辑,并确定你想怎么处理这些结果变量调用代码。

更多的答案(0)

类别

找到更多的在纸牌游戏帮助中心文件交换

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!