Помогите Поделить игроков на 2 команды

  • Автор темы Автор темы koliab
  • Дата начала Дата начала

koliab

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
kolia1_1
Игроки:
Bukkit.getOnlinePlayers();

Команды:
private static ArrayList<Player> RedTeam = new ArrayList<>();
private static ArrayList<Player> GreenTeam = new ArrayList<>();

Нужно поделить их ~поровну,
игроков 5 == RedTeam(3) GreenTeam(2)?
игроков 4 == RedTeam(2) GreenTeam(2)

Делал так но чую не то, есть другие варианты?
Код:
      for (Player player : Bukkit.getOnlinePlayers()) {
                Random rand = new Random();
                int random = rand.nextInt(100) + 1;
                if (random >= 0 && random <= 50) {
                    RedTeam.add(player);
                } else if (random >= 51 && random <= 100) {
                    GreenTeam.add(player);
                }
            }
 
Последнее редактирование:
При таком варианте не всегда команды будут равноценны (например, может быть 4 против 2). Лучше найти половину от количества всех игроков (int halfAmount = Bukkit.getOnlinePlayers().size() / 2) и поместить первые halfAmount игроков в одну команду, а остальных в другую
 
Код:
    public void add(String player) {
        int min = Integer.MAX_VALUE;
        for (Entry<String, Team> team : teams.entrySet()) {
            if (team.getValue().getSize() < min) {
                min = team.getValue().getSize();
            }
        }
        List<Team> tmp = new ArrayList<Team>();
        for (Entry<String, Team> team : teams.entrySet()) {
            if (team.getValue().getSize() == min) {
                tmp.add(team.getValue());
            }
        }
        Team team = tmp.get((new Random()).nextInt(tmp.size()));
        team.add(player);
    }
Рандомное и ровное деление на любое число команд.
Как то так юзается.
Код:
        Map<String, Team> teams = new HashMap<String, Team>();
        teams.put("red", new Team("red"));
        teams.put("green", new Team("green"));
        Arena arena = new Arena(teams);
        for(Player player: Bukkit.getOnlinePlayers()) {
            arena.add(player.getName());
        }
 
Последнее редактирование:
Не то что мне надо
Как раз то. Тебе же делить надо на команды не? Мой метод рандомно распределяет по командам с меньшим числом юзеров. В конце становится поровну.
 
Последнее редактирование:
Как раз то. Тебе же делить надо на команды не? Мой метод рандомно распределяет по командам с меньшим числом юзеров. В конце становится поровну.
Через скорбордный теам мне не надо
 
Ну вот у меня есть команды, мне нужно поделить их и внести игрока в команду

Код:
ArrayList<Player> red = new ArrayList<>();
        ArrayList<Player> green = new ArrayList<>();
        Player[] players = Bukkit.getOnlinePlayers().toArray(new Player[0]);
 
Короче давай так.
Код:
package Example;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Random;

import org.bukkit.entity.Player;

public class Arena {
    private Map<String, Team> teams;

    public Arena(Map<String, Team> teams) {
        this.teams = teams;
    }

    public void add(Player player) {
        int min = Integer.MAX_VALUE;
        for (Entry<String, Team> team : teams.entrySet()) {
            if (team.getValue().getSize() < min) {
                min = team.getValue().getSize();
            }
        }
        List<Team> tmp = new ArrayList<Team>();
        for (Entry<String, Team> team : teams.entrySet()) {
            if (team.getValue().getSize() == min) {
                tmp.add(team.getValue());
            }
        }
        Team team = tmp.get((new Random()).nextInt(tmp.size()));
        team.add(player);
    }

    public Team getPlayerTeam(Player player) {
        for (Entry<String, Team> team : teams.entrySet()) {
            if (team.getValue().contains(player)) {
                return team.getValue();
            }
        }
        return null;
    }
   
    public Team getTeam(String name) {
        return this.teams.get(name);
    }
   
    public String toString() {
        return this.teams.toString();
    }
}
Код:
package Example;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.entity.Player;
public class Team {
    private String name;
    private List<String> players = new ArrayList<String>();
    public Team(String name) {
        this.name = name;
    }
    public int getSize() {
        return this.players.size();
    }
    public void add(Player player) {
        this.players.add(player.getName());
    }
    public boolean contains(Player player) {
        return this.players.contains(player.getName());
    }
    public String getTeamName() {
        return this.name;
    }
   
    public List<String> getPlayers() {
        return this.players;
    }
    public String toString() {
        return this.name+":"+this.players.toString();
    }
}
Код:
        Map<String, Team> teams = new HashMap<String, Team>();
        teams.put("red", new Team("red"));
        teams.put("green", new Team("green"));;
        Arena arena = new Arena(teams);
        for(Player player : Bukkit.getOnlinePlayers()) {
            arena.add(player);
        }
 
Короче давай так.
Код:
package Example;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Random;

import org.bukkit.entity.Player;

public class Arena {
    private Map<String, Team> teams;

    public Arena(Map<String, Team> teams) {
        this.teams = teams;
    }

    public void add(Player player) {
        int min = Integer.MAX_VALUE;
        for (Entry<String, Team> team : teams.entrySet()) {
            if (team.getValue().getSize() < min) {
                min = team.getValue().getSize();
            }
        }
        List<Team> tmp = new ArrayList<Team>();
        for (Entry<String, Team> team : teams.entrySet()) {
            if (team.getValue().getSize() == min) {
                tmp.add(team.getValue());
            }
        }
        Team team = tmp.get((new Random()).nextInt(tmp.size()));
        team.add(player);
    }

    public Team getPlayerTeam(Player player) {
        for (Entry<String, Team> team : teams.entrySet()) {
            if (team.getValue().contains(player)) {
                return team.getValue();
            }
        }
        return null;
    }
  
    public Team getTeam(String name) {
        return this.teams.get(name);
    }
  
    public String toString() {
        return this.teams.toString();
    }
}
Код:
package Example;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.entity.Player;
public class Team {
    private String name;
    private List<String> players = new ArrayList<String>();
    public Team(String name) {
        this.name = name;
    }
    public int getSize() {
        return this.players.size();
    }
    public void add(Player player) {
        this.players.add(player.getName());
    }
    public boolean contains(Player player) {
        return this.players.contains(player.getName());
    }
    public String getTeamName() {
        return this.name;
    }
  
    public List<String> getPlayers() {
        return this.players;
    }
    public String toString() {
        return this.name+":"+this.players.toString();
    }
}
Код:
        Map<String, Team> teams = new HashMap<String, Team>();
        teams.put("red", new Team("red"));
        teams.put("green", new Team("green"));;
        Arena arena = new Arena(teams);
        for(Player player : Bukkit.getOnlinePlayers()) {
            arena.add(player);
        }
чем плох этот вариант?


PHP:
               Player[] players = Bukkit.getOnlinePlayers().toArray(new Player[0]);

                for (int i = 0; i < Bukkit.getOnlinePlayers().size(); i++) {

                    if (GreenTeam.size() < RedTeam.size()) {
                        GreenTeam.add(players[i]);
                    } else {
                        RedTeam.add(players[i]);
                    }
                }
 
чем плох этот вариант?


PHP:
               Player[] players = Bukkit.getOnlinePlayers().toArray(new Player[0]);

                for (int i = 0; i < Bukkit.getOnlinePlayers().size(); i++) {

                    if (GreenTeam.size() < RedTeam.size()) {
                        GreenTeam.add(players[i]);
                    } else {
                        RedTeam.add(players[i]);
                    }
                }
Зубри жаву, завтра наизусть расскажешь
 
Назад
Верх