我希望为一个项目做一个交互式的井字游戏。

4次浏览(最近30天)
摩西桑多瓦尔市
摩西桑多瓦尔市 2021年7月6日
评论道: 里克 2021年7月7日
我想让参与人2成为一个直接的输入而不是随机的行和列我该怎么做呢?
tictactoe播放器的初稿为BME60B 2021夏季
%初始模板来自://www.tatmou.com/matlabcentral/answers/313999-help-with-tictactoe-code
wincounter = (0, 0, 0);
historyofgamestates = {};
游戏= 1:10你可以改变你在这条线上玩多少游戏
gamestate = initializegamestate ();
配子状态的历史=配子状态;
loopcounter = 2;
虽然gamestate。完成= =假
如果gamestate。把= = 1
移动= player1 (gamestate);
elseifgamestate。把= = 1
移动= player2 (gamestate);
其他的
打印(“错误”
结束
gamestate = makeamove (gamestate、移动);
移动(游戏状态,移动)%如果你不想看到每一步,然后注释掉这行
historyofgamestate (loopcounter) = gamestate;
Loopcounter = Loopcounter +1;%增加计数器
drawnow
暂停(1)注释掉这一行,如果你不希望脚本在每次移动后暂停,在执行前等待1秒
如果loopcounter = = 11
打破
结束
结束
如果gamestate。完成= =假
标题(“比赛不分胜负”
wincounter = wincounter + (0,1,0);
elseifgamestate。把= = 1
标题(“胜者为玩家2”
wincounter = wincounter + [0, 0, 1];
elseifgamestate.turn==-1
标题(“胜者为玩家1”
wincounter = wincounter + (1,0,0);
其他的
打印(“错误”
结束
historyofgamestates{游戏}= historyofgamestate;
暂停(1)%如果您不希望脚本在每次游戏结束后暂停,可以注释掉这一行
结束
保存(“game1.mat”“historyofgamestate”%保存游戏,以便我们稍后查看
%%子功能
为了更容易下载和分享,我决定把所有内容都包含在一个文件中
%,但牺牲了模块化和可读性。
功能移动(游戏状态,移动)
%检查只有一个移动
[行,列]=查找(移动);
如果长度(row) ~= 1 &&长度(col) ~= 1
打印(“移动错误”
结束
图(1)
持有在…上
如果gamestate。把= = 1
长方形(“位置”,行- 0.8,(col - 0.2), 0.6, 0.6),“弯曲”[1])
elseifgamestate。把= = 1
绘图([第0.8行第0.2行],-(第0.2列)-(第0.8列)],“k”
情节([- 0.8行- 0.2],[- (col - 0.8) (col - 0.2)],“k”
结束
持有
结束
功能配子状态=初始配子状态
gamestate。董事会= 0 (3);
gamestate。把= 1;
gamestate。完成= false;
图(1)
情节([0 3],[1],“k”“线宽”2);
持有在…上
情节([0 3]- [2 2],“k”“线宽”, 2)
绘图([11],-[03],“k”“线宽”, 2)
图(2 [2],[0 3),“k”“线宽”, 2)
持有
结束
功能gamestate = makeamove (gamestate移动)
%检查只有一个移动
[行,列]=查找(移动);
如果长度(row) ~= 1 &&长度(col) ~= 1
打印(“移动错误”
结束
%检查移动是否合法
如果游戏状态。棋盘(行,列)~=0
打印(《移动错误2》
结束
gamestate。董事会= gamestate。板+ * gamestate.turn移动;
gamestate。把= gamestate.turn * 1;
%检查赢家
checkfor=[sum(gamestate.board,1),sum(gamestate.board,2)”,gamestate.board(1,1)+gamestate.board(2,2)+gamestate.board(3,3),gamestate.board(1,3)+gamestate.board(2,2)+gamestate.board(3,1)];
如果任何(abs(检查)==3)
gamestate。完成= true;
结束
结束
功能移动= player1 (gamestate)
法律= false;
虽然合法==假
行=兰迪([1,3]);
坳=兰迪([1,3]);
如果游戏状态。棋盘(行,列)=0
法律= true;
结束
结束
移动= 0 (3);
(行,坳)= 1;
结束
功能移动= player2 (gamestate)
法律= false;
虽然合法==假
位置=输入
如果游戏状态。棋盘(行,列)=0
法律= true;
结束
结束
移动= 0 (3);
(行,坳)= 1;
结束
1评论
里克
里克 2021年7月7日
您忘记将代码格式化为代码。你也没有问具体的问题。你到底有什么问题?参与人1有一些随机调用,参与人2没有。你是如何修改代码的?

登录评论。

答案(0)

类别

下载188bet金宝搏


释放

R2021a

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始打猎吧!