我想制作一个简单的“蛇与梯子”游戏来完成动作,这样如果我降落在一个梯子上,它将被表示为一个阵列
Ladder = [3 5 11 20];
,然后我希望我的Position
增加LadderGain = [18 3 15 9];
,反之亦然Snakes
。
我的想法是
if Position == Ladder
Position = Position + LadderGain;
end
认为它落地的指数会延续到LadderGain
。这没用。我想知道如何在没有过多if语句的情况下使这个操作工作。
if Ladder(Ladder == Position)
Position = Position + LadderGain(find(Ladder == Position,1));
end
这是我提出的解决方案。
答案 0 :(得分:1)
我会这样接近:
Ladder = [3 5 11 20]; % Ladder positions.
LadderGain = [18 3 15 9]; % Ladder gains.
while true % Loop.
Position = input('Enter position: '); % Request user input.
if any(Position == Ladder) % Check if Position matches any of the Ladder positions.
idx = find(Position == Ladder); % Find the index of the matching case.
Position = Position + LadderGain(idx); % Add the corresponding gain to the position.
end
fprintf('Position: %d\n', Position); % Display new position.
end
测试案例1:玩家不会降落在梯子上。
Enter position: 0
Position: 0
测试案例2:玩家落在梯子上。
Enter position: 3
Position: 21