太阳神三国杀lua吧 关注:2,643贴子:73,400
  • 17回复贴,共1

求助 除了枚举之外 开场随机分配标记能否实现

只看楼主收藏回复

如题:
想在一场军八开赛时,随机分发固定的八个标记且不重複,
目前能想到的只有用math.random然后逐一枚举,
例如若场上有A标记则不放置A标记,改放B标记
想问还有没有别的办法可以处理呢?
感谢!


IP属地:中国台湾1楼2025-01-03 20:54回复
    先生成8个标记,打乱顺序即可


    IP属地:四川来自iPhone客户端2楼2025-01-04 00:27
    收起回复
      2025-05-15 21:16:49
      广告
      没有看明白……是八个不同的标记,分给八个人,且每个人只有一个标记吗?还是不同类型的标记八个,但可以一个人多个不同的标记?


      IP属地:江苏来自Android客户端3楼2025-01-09 14:16
      收起回复
        很久没写过Lua了,大体上应该是这样子做。先生成一个表,然后每次随机索引抽出一个,依次赋给角色。
        local marks = { '@mark1', '@mark2', '@mark3', '@mark4', '@mark5', '@mark6', '@mark7', '@mark8' };
        for i = 1,1,8 do
        local player = players:at(i - 1);
        local index = math.random(1, #marks);
        local mark = marks[index];
        table.remove(marks, index);
        player:getMark(mark, 1);
        end


        IP属地:江苏4楼2025-01-09 23:25
        收起回复
          测试一下,问题可能出在 local player = players:at(i - 1) 这句?
          把这句删掉后就能正常跑了,但也失去"各角色不可重複获得同样的标记"这个但书。


          IP属地:中国台湾5楼2025-01-11 11:09
          收起回复
            尝试了一下,这样修改是可以跑的,而且满足技能要求
            修改的地方我打了注释


            IP属地:湖北6楼2025-01-13 15:01
            收起回复
              如果场上每个角色都会触发一次这个技能导致一共分配了8*8=64个标记的话,我还写了一种方法
              这样的话技能效果就是,游戏开始时,会从1号位开始按座次顺序依次发放标记,每名角色都会触发一次技能并且获得一个标记,一共分配8个互不相同的标记,看看能不能满足你要求,或者看看上面我修改的那个版本


              IP属地:湖北7楼2025-01-13 15:32
              收起回复