Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
查看: 871|回复: 3
打印 上一主题 下一主题

用java 写一个program 关于解决游戏分组的问题

[复制链接]

2

主题

0

好友

444

积分

翡翠长老

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

跳转到指定楼层
1#
发表于 2013-12-12 10:14 PM |只看该作者 |倒序浏览
我目前会基本的java coding
最近办活动玩游戏想要试试看写个 program 帮忙有效的分组
program 的要求如下:
因为是采用PK 形式所以一个游戏都是两组进行
多少个游戏,多少个场地都是由user 输入
我想做到的是在这个program 可以random 出来每组遇到的对手,但是不能重复
游戏场地设置好几个地方,只是每组到达的次序不同,一次一个地点就只能两组,而且不能重复
谁能教我应该从哪里开始?
我尝试在random 那部分开始可是碰到了很多问题,因为我random 出来的号码会有重复,不知道要怎样去解决重复的问题
求各位的帮忙~小的感激不尽~




收藏收藏0

18

主题

0

好友

618

积分

青铜长老

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

2#
发表于 2013-12-13 02:18 PM |只看该作者
不懂你要什么,单纯回答你“random不要重复”的问题,把random出来的号码add进arraylist,下一次random时,检查arraylist里面没有这个号码,不然就重新random过


回复

使用道具 举报

3

主题

0

好友

702

积分

青铜长老

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

3#
发表于 2013-12-16 11:08 AM |只看该作者
本帖最后由 slay_alex92 于 2013-12-16 11:11 AM 编辑

我不太知道你的program的架構要怎麼寫
不過照你說的方式
我大概會用以下的方法
  1. String[] player = new String[8]; //做一個array,來放player,length自訂
  2. int[] list = new int[8]//用來儲存已經出現過的號碼,length跟上一個array一樣

  3. int remain = player.length; //取得還剩下多少player還沒被random到
  4. int listIndex = 0; //list的index

  5. public String randomPlayer () //回return random出來的player的名字
  6. {
  7.     while(true)
  8.     {
  9.         int n = (int)(Math.random() * remain);
  10.         boolean check = false; //用來判斷這個random出來的號碼之前有沒有出現過
  11.         for(int i = 0; i < list.length; i++)
  12.         {
  13.             if(n == list[i])
  14.                 check = true; //如果出現過,把check改成true
  15.         }
  16.         if(! check) //如果還沒有出現過
  17.         {
  18.             list[listIndex] = n; //把這個數字加到list裡面,說明他這次出現過了,下次不要再選到
  19.             listindex++;
  20.             return player[n]; //return random出來的player的String
  21.         }
  22.     }
  23. }
复制代码
因為我沒有你的code,所以沒有辦法測試哦~ 不過我寫的應該沒錯
另外這個方法是我臨時想出來的,有點複雜,說不定用ArrayList可以更快做出來



回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

4#
发表于 2013-12-20 04:26 PM |只看该作者
可以給你個建議,定義出一個 integer array 之後,使用循環隨機對換 value 值(team[a] <=> team[b]). 循環完畢即可得到不重復的亂數排列了。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2025-4-7 04:03 PM , Processed in 0.113523 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部