创建一个函数循环

1次观看(过去30天)
厄里斯Rusnac
厄里斯Rusnac 2021年4月27日
回答: 杰夫•海斯 2021年4月28日
制作游戏yahtzee的一个函数,直到达到5种,这是我当前的代码
函数Roll_again = yatzhee(结果)
%构成一个0组成的向量
numOfEachOutcome = 0 (1,6);
%计算每个数字1-6中有多少,并将结果创建一个向量
I = 1:长度(结果)
numOfEachOutcome(result (i)) = numOfEachOutcome(result (i)) + 1;
结束
将commonOutcome赋值为1。
commonOutcome = 1;
发现共同的结果。
I = 2:6
如果(numOfEachOutcome(我)> numOfEachOutcome (commonOutcome))
commonOutcome = i;
结束
结束
Roll_again = [];
I = 1:5
如果((我)~ = commonOutcome结果);
Roll_again = [Roll_again i];
结束
结束
所有这些都会给你一个需要重新滚动的答案。
rrollresult = ceil(randi([1,6],1,size(roll_again,2))))
I = 1:size(roll_again,2)
result (roll_again(i)) = rerollResult(i);
结束
Final = true;
I = 2:5
如果结果(1)(我)~ =结果
Final = false;
结束
结束
如果最后
返回
其他的
结果
结束
结束
当前结果为
雅哲([4 5 4 4 4])
rerollResult =
3.
结果=
4 3 4 4 4
ans =
2
ans是它需要重新滚动的位置,我需要将其命名为throwAgain,最好先显示
所以在它的当前状态下,函数只会再次滚动一次,我需要它滚动直到5个同类被接收,并显示它滚动了多少次。

答案(1)

杰夫•海斯
杰夫•海斯 2021年4月28日
厄里斯-如果你想一直滚动直到得到一个Yatzhee,那么你可能会使用a 循环。
%将滚动计数设置为1,因为这将是初始滚动
rollCount = 1;
%可能希望添加另一个条件,以只允许滚动的最大数量
%(像游戏一样)
%,因此我们继续循环,直到roll_again数组为空
~ isempty (roll_again)
rrollresult = ceil(randi([1,6],1,size(roll_again,2))))
rollCount = rollCount + 1;
%如果不是所有的重新滚动都匹配公共结果,则删除
%那些做了又重新开始的人
如果~all(rerollResult == commonOutcome)
roll_again(rerollResult == commonOutcome) = [];
其他的
流(“用了%d卷才得到一个雅哲!”\ n”, rollCount);
打破
结束
结束
上面的方法可以更有效。您可能还想删除一些 从你的代码中循环,因为我不认为它们都是必要的(除非这是作业的一部分)。

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!