wang1995le 发表于 2018-10-14 21:11:26

请问如何将地图上的单位平均分给每个游戏中的玩家

本帖最后由 wang1995le 于 2018-10-15 22:17 编辑

比如100个机枪兵,5个玩家的话就是每人随机获得其中的20个,10个玩家的话就是每人随机获得其中的10个

windywel 发表于 2018-10-14 22:31:31

获取当前活跃玩家总数量。用个变量x计数当前已经分配的个数,x对当前活跃玩家总数取模得到数既为第几个活跃玩家。然后把这个遍历到的单位的拥有者设置成这个活跃玩家就OK了。

wang1995le 发表于 2018-10-15 21:57:42

windywel 发表于 2018-10-14 22:31
获取当前活跃玩家总数量。用个变量x计数当前已经分配的个数,x对当前活跃玩家总数取模得到数既为第几个活跃 ...

“x对当前活跃玩家总数取模得到数既为第几个活跃玩家”这个怎么做,不太理解是什么意思

hzmwe 发表于 2018-10-15 22:30:36

2楼取模可能说错了,Trunc(x个机枪兵/玩家数)
Trunc去除小数后的整数,触发里面有的

windywel 发表于 2018-10-16 04:14:12

wang1995le 发表于 2018-10-15 21:57
“x对当前活跃玩家总数取模得到数既为第几个活跃玩家”这个怎么做,不太理解是什么意思

不好意思没说清楚。取模的意思就是小学数学里的余数的高级说法。下面举个简单例子:

【例子】 一共有4个单位,2位玩家。单位编号id=0,1,2,3(你可以在遍历的时候用一个变量保存编号,每次加1)。玩家编号0,1.
    第1个单位编号对2取模, 0%2=0, 所以第1个单位给0号玩家,也就是第一个玩家。
    第2个单位编号对2取模, 1%2=1, 所以第2个单位给1号玩家,也就是第二个玩家。
    第3个单位编号对2取模, 2%2=0, 所以第3个单位给0号玩家,也就是第一个玩家。
    第4个单位编号对2取模, 3%2=1, 所以第4个单位给1号玩家,也就是第二个玩家。
这样你就把4个单位平均分配给了这两个玩家。这样你可以保证平均分配。
(如果你单位总数除以玩家数不是整数的话,余下的那些这种分配方法也会依次分配单位,不过稍微对最后几个人有点不公平)
   

yxxiaobin 发表于 2018-10-24 11:24:33

windywel 发表于 2018-10-16 04:14
不好意思没说清楚。取模的意思就是小学数学里的余数的高级说法。下面举个简单例子:

【例子】 一共有4 ...

单位编号不是从1顺次上去的,这个方案不大合适。
最简单的就是让所有待分配的兵形成一个单位组,记做Ug,统计一下有几个兵,记做a。让所有待分配的玩家形成一个玩家组,记做Pg,统计一下有几个人,记做b。然后做除法,a/b,再舍余(不要四舍五入),得到每个人需要分配多少个兵,记做X,然后从Ug里选取X个兵,把他们移出Ug,并分配个Pg里第1个玩家,然后再从Ug里选取X个兵,移出Ug并分配给第二个玩家,以此类推。当然这里最好用循环。多数情况下,分配完毕后Ug里还剩几个,不够分配每人一个,这时候可以根据设计需要,忽略他们、弄死他们或者分配给某些人。

windywel 发表于 2018-10-25 17:37:39

yxxiaobin 发表于 2018-10-24 11:24
单位编号不是从1顺次上去的,这个方案不大合适。
最简单的就是让所有待分配的兵形成一个单位组,记做Ug ...

可以自己用一个局部变量从1开始...Anyway, 你的方案挺实用的。
页: [1]
查看完整版本: 请问如何将地图上的单位平均分给每个游戏中的玩家