要求就是我运行要让玩家循环玩,一轮一轮的,我发现现在有一个问题,当玩家走捷径时,它自动就停止了改玩家之后的所有玩家,直接到下一轮 或是走蛇梯子直接停止 大佬看下代码 n = input('How many player?') for i=1:n player{i} = input(['Entering the Name of player' num2str(i)] , 's') end round=0; disp(['rand' num2str(round)]) for k=1:length(player) sp=1; % start point playerRoadCount(k) = sp; %创建所有玩家的各个位置的当前步数 disp([ player(k) 'is now at start point square 1']) end playerFinishNub=0;%记录玩家完成的人数 while playerFinishNub=100)%如果这个玩家已经走到头了,就跳出这次循环 continue; end if (playerRoadCount(k)>=100) rolling=0; else rolling=randi([1,6]); end rollingnumber(k,round)=rolling; playerRoadCount(k)=playerRoadCount(k)+rolling; %当前玩家的位置加骰子的步数 switch playerRoadCount(k) case 4 playerRoadCount(k)=25; break; case 13 playerRoadCount(k)=46; break; case 27 playerRoadCount(k)=5; break; case 33 playerRoadCount(k)=49; break; case 40 playerRoadCount(k)=3; case 42 playerRoadCount(k)=63; break; case 43 playerRoadCount(k)=18; break; case 50 playerRoadCount(k)=69; break; case 54 playerRoadCount(k)=31; break; case 62 playerRoadCount(k)=81; break; case 66 playerRoadCount(k)=45; break; case 74 playerRoadCount(k)=92; break; case 76 playerRoadCount(k)=58; break; case 89 playerRoadCount(k)=53; break; case 99 playerRoadCount(k)=41; break; end if playerRoadCount(k)>=100 %如果有玩家达成目标,则完成数加1 playerFinishNub=playerFinishNub+1; disp(['rolling is a' rollingnumber(k) ',' player(k) 'now at' playerRoadCount(k)]) disp([player(k) 'is end!']) else disp(['rolling is a' rollingnumber(k) ',' player(k) 'now at' playerRoadCount(k)]) end end endn = input('How many player?') for i=1:n player{i} = input(['Entering the Name of player' num2str(i)] , 's') end round=0; disp(['rand' num2str(round)]) for k=1:length(player) sp=1; % start point playerRoadCount(k) = sp; %创建所有玩家的各个位置的当前步数 disp([ player(k) 'is now at start point square 1']) end playerFinishNub=0;%记录玩家完成的人数 while playerFinishNub=100)%如果这个玩家已经走到头了,就跳出这次循环 continue; end if (playerRoadCount(k)>=100) rolling=0; else rolling=randi([1,6]); end rollingnumber(k,round)=rolling; playerRoadCount(k)=playerRoadCount(k)+rolling; %当前玩家的位置加骰子的步数 switch playerRoadCount(k) case 4 playerRoadCount(k)=25; break; case 13 playerRoadCount(k)=46; break; case 27 playerRoadCount(k)=5; break; case 33 playerRoadCount(k)=49; break; case 40 playerRoadCount(k)=3; case 42 playerRoadCount(k)=63; break; case 43 playerRoadCount(k)=18; break; case 50 playerRoadCount(k)=69; break; case 54 playerRoadCount(k)=31; break; case 62 playerRoadCount(k)=81; break; case 66 playerRoadCount(k)=45; break; case 74 playerRoadCount(k)=92; break; case 76 playerRoadCount(k)=58; break; case 89 playerRoadCount(k)=53; break; case 99 playerRoadCount(k)=41; break; end if playerRoadCount(k)>=100 %如果有玩家达成目标,则完成数加1 playerFinishNub=playerFinishNub+1; disp(['rolling is a' rollingnumber(k) ',' player(k) 'now at' playerRoadCount(k)]) disp([player(k) 'is end!']) else disp(['rolling is a' rollingnumber(k) ',' player(k) 'now at' playerRoadCount(k)]) end end end
1条回答 默认 最新
- Dummer25 2023-04-04 14:30关注
修改后的代码如下:
n = input('How many player?'); for i=1:n player{i} = input(['Entering the Name of player' num2str(i)] , 's'); end round=0; disp(['rand' num2str(round)]) for k=1:length(player) sp=1; % start point playerRoadCount(k) = sp; %创建所有玩家的各个位置的当前步数 disp([ player(k) 'is now at start point square 1']) end playerFinishNub=0;%记录玩家完成的人数 while playerFinishNub < n %如果还有未完成的玩家,则继续游戏 for k=1:n %轮流进行每个玩家的操作 if (playerRoadCount(k)>=100) continue; %如果这个玩家已经走到头了,就跳过这次循环 end rolling=randi([1,6]); rollingnumber(k,round)=rolling; playerRoadCount(k)=playerRoadCount(k)+rolling; %当前玩家的位置加骰子的步数 switch playerRoadCount(k) case 4 playerRoadCount(k)=25; break; case 13 playerRoadCount(k)=46; break; case 27 playerRoadCount(k)=5; break; case 33 playerRoadCount(k)=49; break; case 40 playerRoadCount(k)=3; case 42 playerRoadCount(k)=63; break; case 43 playerRoadCount(k)=18; break; case 50 playerRoadCount(k)=69; break; case 54 playerRoadCount(k)=31; break; case 62 playerRoadCount(k)=81; break; case 66 playerRoadCount(k)=45; break; case 74 playerRoadCount(k)=92; break; case 76 playerRoadCount(k)=58; break; case 89 playerRoadCount(k)=53; break; case 99 playerRoadCount(k)=41; break; end if playerRoadCount(k)>=100 %如果有玩家达成目标,则完成数加1 playerFinishNub=playerFinishNub+1; disp(['rolling is a' rollingnumber(k) ',' player{k} 'now at' playerRoadCount(k)]) disp([player{k} 'is end!']) else disp(['rolling is a' rollingnumber(k) ',' player{k} 'now at' playerRoadCount(k)]) end end end disp('Game Over!')
在修改后的代码中,我们通过在while循环条件中增加一个判断未完成玩家数量的语句,来保证游戏在所有玩家都到达终点之前不会结束。同时,在主循环中轮流进行每个玩家的操作,如果有玩家达成目标,则完成数加1。
这样,即使有玩家走捷径或者掉蛇或上梯子,也不会影响后续玩家的轮次,从而确保游戏能够无缝地进行下去。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 微信公众号自制会员卡没有收款渠道啊
- ¥15 stable diffusion
- ¥100 Jenkins自动化部署—悬赏100元
- ¥15 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿