找回密码
 点一下
查看: 1211|回复: 6

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

[复制链接]
发表于 2018-10-14 21:11:26 | 显示全部楼层 |阅读模式
本帖最后由 wang1995le 于 2018-10-15 22:17 编辑

比如100个机枪兵,5个玩家的话就是每人随机获得其中的20个,10个玩家的话就是每人随机获得其中的10个
发表于 2018-10-14 22:31:31 | 显示全部楼层
获取当前活跃玩家总数量。用个变量x计数当前已经分配的个数,x对当前活跃玩家总数取模得到数既为第几个活跃玩家。然后把这个遍历到的单位的拥有者设置成这个活跃玩家就OK了。

点评

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

使用道具 举报

 楼主| 发表于 2018-10-15 21:57:42 | 显示全部楼层
windywel 发表于 2018-10-14 22:31
获取当前活跃玩家总数量。用个变量x计数当前已经分配的个数,x对当前活跃玩家总数取模得到数既为第几个活跃 ...

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

点评

不好意思没说清楚。取模的意思就是小学数学里的余数的高级说法。下面举个简单例子: 【例子】 一共有4个单位,2位玩家。单位编号id=0,1,2,3(你可以在遍历的时候用一个变量保存编号,每次加1)。玩家编号0,1.  详情 回复 发表于 2018-10-16 04:14
回复

使用道具 举报

发表于 2018-10-15 22:30:36 | 显示全部楼层
2楼取模可能说错了,Trunc(x个机枪兵/玩家数)
Trunc去除小数后的整数,触发里面有的
回复

使用道具 举报

发表于 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个单位平均分配给了这两个玩家。这样你可以保证平均分配。
(如果你单位总数除以玩家数不是整数的话,余下的那些这种分配方法也会依次分配单位,不过稍微对最后几个人有点不公平)
   

点评

单位编号不是从1顺次上去的,这个方案不大合适。 最简单的就是让所有待分配的兵形成一个单位组,记做Ug,统计一下有几个兵,记做a。让所有待分配的玩家形成一个玩家组,记做Pg,统计一下有几个人,记做b。然后做除  详情 回复 发表于 2018-10-24 11:24
回复

使用道具 举报

发表于 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里还剩几个,不够分配每人一个,这时候可以根据设计需要,忽略他们、弄死他们或者分配给某些人。

点评

可以自己用一个局部变量从1开始...Anyway, 你的方案挺实用的。  详情 回复 发表于 2018-10-25 17:37
回复

使用道具 举报

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

可以自己用一个局部变量从1开始...Anyway, 你的方案挺实用的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-4-25 16:38 , Processed in 0.279716 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表