m0_58663160 2021-05-26 20:01 采纳率: 0%
浏览 10

求求求求求求求看一下大佬们

要求就是我运行要让玩家循环玩,一轮一轮的,我发现现在有一个问题,当玩家走捷径时,它自动就停止了改玩家之后的所有玩家,直接到下一轮 或是走蛇梯子直接停止 大佬看下代码 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编程架构设计的方案 有偿