2011-11-25 4 views
2

Эй, я пытаюсь создать случайный способ выбрать команду из 4 из связанного списка, и мне интересно, будет ли этот код работать.создание команды игроков из списка

Вот пример кода

public static void enterGame(Client c) { 
    int n = teamSize; 
    boolean startNewGame = false; 
    if(waitingPlayers.size() <= 3) { 
     return; // not enough players 
    } 
    startNewGame = true; 
    if(startNewGame) { 
     System.out.println("Starting new game"); 
     for(int i=0; i<n; i++) { 
      Collections.shuffle(waitingPlayers); 
      System.out.println("Picking random player"); 
      waitingPlayers.remove(c); 
      System.out.println("removing from random player list"); 
      players.add(c); 
      System.out.println("adding player to ingame list"); 
     } 
    } 
} 
+0

Добро пожаловать в переполнение стека! Пожалуйста, воздержитесь от публикации своего кода в другом месте в будущем. Кроме того, прочтите [FAQ] (http://stackoverflow.com/faq). –

ответ

3

Я хотел бы использовать Collections.shuffle() и подсписок. Чтобы узнать, работает ли ваш код, почему вы его не тестируете (единичный тест или просто попытка попробовать)?

Кроме того, эта часть:

boolean startNewGame = false; 
if(waitingPlayers.size() > 3) { 
     startNewGame = true; 
} else { 
     startNewGame = false; 
     return; 
} 
if(startNewGame) { 

закончилась сложная, я бы заменить его:

if(waitingPlayers.size() <= 3) { 
    return; // not enough players 
} 

Полный код:

public static void enterGame(final Client c) {  
    if(waitingPlayers.size() <= 3) { 
     return; // not enough players 
    } 

    System.out.println("Starting new game"); 
    Collections.shuffle(waitingPlayers); 
    System.out.println("Picking random players"); 
    // ? to be replaced by the real type of objects inside waitingPlayers 
    final List<?> picked = waitingPlayers.subList(0, 3); 
    players.addAll(picked); 
    waitingPlayers.removeAll(picked); 
} 
+0

Что вы подразумеваете под подспиской. – user1064922

+0

http://docs.oracle.com/javase/6/docs/api/java/util/List.html#subList(int, int) –

+0

спасибо! плохо попробуйте это – user1064922

0

У вас есть ошибка - вы выбирая число от 0 до n. Если выбрано n, вы получите исключение за пределы. Другие, что кажется прекрасным.

Смежные вопросы