簡體   English   中英

如何隨機化然后拆分 ArrayList<string> 分成兩個偶數 ArrayList</string>

[英]How to randomize and then split an ArrayList<String> into two even ArrayLists

我幾乎不知道 java 但我正在嘗試為這個項目學習一些。 我正在嘗試修改一個名為 GyaPickupBot 的程序,它基本上是 IRC 上的“拾取游戲”機器人,玩家可以在其中鍵入: .add 以便添加到想要玩游戲的玩家列表中,並且一旦有足夠的玩家。添加機器人現在宣布游戲服務器(即地震服務器)的 ip。 當指定數量的 player.add 和游戲啟動時。 該機器人僅列出在達到最大玩家數量之前之前添加的玩家:我希望它將所有已添加的玩家分成 2 個大小相等的隨機團隊。 我已經使用 Collections.shuffle 完成了隨機部分,但我不知道如何將玩家分成 2 個大小相等的團隊。 幾周前我給住在日本的作者發了電子郵件,他今天早上終於回復了一些關於如何做到這一點的非常模糊的提示:

嗯……這個時候,我沒有太多的動力去維護這段代碼。 我只能給你一些提示。

private boolean handleReady(String channel, String sender, String login, String hostname, String message) {
boolean isUpdate = false;
String readyGameID = mgr.getReadyGameID();
if (null != readyGameID) {
// *** add some code here to choose teams and store that result to string variable. something like: "team1: ,,,, team2: ,,,,,"
// *** you can get players list by mgr.getPlayers(readyGameID) in order to divide players to 2 teams randomly 

for (String ch : getChannels()) {
sendMessage(ch, mgr.getPickupReadyString(readyGameID));
// sendNotice(ch, mgr.getPickupReadyString(readyGameID));
// *** then, send that string to channel
}
mgr.setLastGame(Calendar.getInstance().getTimeInMillis(), mgr.getPickupReadyString(readyGameID));
ArrayList<String> players = mgr.getPlayers(readyGameID);
for (String nick : players) {
sendNotice(nick, mgr.getPickupReadyPMString(readyGameID));
// *** and send that string to players too
}
isUpdate = mgr.clearPlayers(players);
}
return isUpdate;

我知道這可能比這里要求的要多,但我真的很想學習這個,但我無法弄清楚,任何幫助將不勝感激

下面的代碼未經測試,但應該讓您了解如何繼續。 祝你好運。

// retrieve all players
ArrayList<String> players = mgr.getPlayers(readyGameID);
// randomize the list
Collections.shuffle(players);
// instantiate two arraylists for the teams
ArrayList<String> teamRed = new ArrayList<String>();
ArrayList<String> teamBlue = new ArrayList<String>();

// add the first half of players to teamRed
teamRed.addAll(players.subList(0, players.size() / 2 + players.size()%2));
// and the second half to teamBlue
teamBlue.addAll(players.subList(players.size() / 2 + players.size()%2, players.size()));

// now do whatever you need to do with the two teams

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM