请问如何将地图上的单位平均分给每个游戏中的玩家
本帖最后由 wang1995le 于 2018-10-15 22:17 编辑比如100个机枪兵,5个玩家的话就是每人随机获得其中的20个,10个玩家的话就是每人随机获得其中的10个
获取当前活跃玩家总数量。用个变量x计数当前已经分配的个数,x对当前活跃玩家总数取模得到数既为第几个活跃玩家。然后把这个遍历到的单位的拥有者设置成这个活跃玩家就OK了。 windywel 发表于 2018-10-14 22:31
获取当前活跃玩家总数量。用个变量x计数当前已经分配的个数,x对当前活跃玩家总数取模得到数既为第几个活跃 ...
“x对当前活跃玩家总数取模得到数既为第几个活跃玩家”这个怎么做,不太理解是什么意思 2楼取模可能说错了,Trunc(x个机枪兵/玩家数)
Trunc去除小数后的整数,触发里面有的 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个单位平均分配给了这两个玩家。这样你可以保证平均分配。
(如果你单位总数除以玩家数不是整数的话,余下的那些这种分配方法也会依次分配单位,不过稍微对最后几个人有点不公平)
windywel 发表于 2018-10-16 04:14
不好意思没说清楚。取模的意思就是小学数学里的余数的高级说法。下面举个简单例子:
【例子】 一共有4 ...
单位编号不是从1顺次上去的,这个方案不大合适。
最简单的就是让所有待分配的兵形成一个单位组,记做Ug,统计一下有几个兵,记做a。让所有待分配的玩家形成一个玩家组,记做Pg,统计一下有几个人,记做b。然后做除法,a/b,再舍余(不要四舍五入),得到每个人需要分配多少个兵,记做X,然后从Ug里选取X个兵,把他们移出Ug,并分配个Pg里第1个玩家,然后再从Ug里选取X个兵,移出Ug并分配给第二个玩家,以此类推。当然这里最好用循环。多数情况下,分配完毕后Ug里还剩几个,不够分配每人一个,这时候可以根据设计需要,忽略他们、弄死他们或者分配给某些人。 yxxiaobin 发表于 2018-10-24 11:24
单位编号不是从1顺次上去的,这个方案不大合适。
最简单的就是让所有待分配的兵形成一个单位组,记做Ug ...
可以自己用一个局部变量从1开始...Anyway, 你的方案挺实用的。
页:
[1]