JBTALKS.CC
标题:
用java 写一个program 关于解决游戏分组的问题
[打印本页]
作者:
怪佬独行侠
时间:
2013-12-12 10:14 PM
标题:
用java 写一个program 关于解决游戏分组的问题
我目前会基本的java coding
最近办活动玩游戏想要试试看写个 program 帮忙有效的分组
program 的要求如下:
因为是采用PK 形式所以一个游戏都是两组进行
多少个游戏,多少个场地都是由user 输入
我想做到的是在这个program 可以random 出来每组遇到的对手,但是不能重复
游戏场地设置好几个地方,只是每组到达的次序不同,一次一个地点就只能两组,而且不能重复
谁能教我应该从哪里开始?
我尝试在random 那部分开始可是碰到了很多问题,因为我random 出来的号码会有重复,不知道要怎样去解决重复的问题
求各位的帮忙~小的感激不尽~
作者:
Ah Zhe
时间:
2013-12-13 02:18 PM
不懂你要什么,单纯回答你“random不要重复”的问题,把random出来的号码add进arraylist,下一次random时,检查arraylist里面没有这个号码,不然就重新random过
作者:
slay_alex92
时间:
2013-12-16 11:08 AM
本帖最后由 slay_alex92 于 2013-12-16 11:11 AM 编辑
我不太知道你的program的架構要怎麼寫
不過照你說的方式
我大概會用以下的方法
String[] player = new String[8]; //做一個array,來放player,length自訂
int[] list = new int[8]//用來儲存已經出現過的號碼,length跟上一個array一樣
int remain = player.length; //取得還剩下多少player還沒被random到
int listIndex = 0; //list的index
public String randomPlayer () //回return random出來的player的名字
{
while(true)
{
int n = (int)(Math.random() * remain);
boolean check = false; //用來判斷這個random出來的號碼之前有沒有出現過
for(int i = 0; i < list.length; i++)
{
if(n == list[i])
check = true; //如果出現過,把check改成true
}
if(! check) //如果還沒有出現過
{
list[listIndex] = n; //把這個數字加到list裡面,說明他這次出現過了,下次不要再選到
listindex++;
return player[n]; //return random出來的player的String
}
}
}
复制代码
因為我沒有你的code,所以沒有辦法測試哦~ 不過我寫的應該沒錯
另外這個方法是我臨時想出來的,有點複雜,說不定用ArrayList可以更快做出來
作者:
Super-Tomato
时间:
2013-12-20 04:26 PM
可以給你個建議,定義出一個 integer array 之後,使用循環隨機對換 value 值(team[a] <=> team[b]). 循環完畢即可得到不重復的亂數排列了。
欢迎光临 JBTALKS.CC (https://www.jbtalks.cc/)
Powered by Discuz! X2.5