1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Нужно придумать нормальную структуру

Тема в разделе "Разработка плагинов для новичков", создана пользователем Cristalix, 24 май 2018.

Метки:
  1. Автор темы
    Cristalix

    Cristalix Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Test
    У каждого игрока есть свой уровень.
    Что бы достичь кого либо уровня он должен получать опыт.
    Допустим:
    Что бы перейти на 2 уровень игроку нужно получить 200 опыта.

    Проблема заключается в том что я не могу придумать нормальную реализацию. :rolleyes:

    Может вы мне дадите совет как лучше это сделать?

    В голову пришла один релиз но к сожалению я не умею нормально излагать свои мысли и получилось вот такое говнецо.

    Код:
    public enum Level {
        Level_1(1, 0),
        Level_2(2, 200),
        Level_3(3, 600),
        Level_4(4, 1200),
        Level_5(5, 2400),
        Level_6(6, 3800),
        Level_7(7, 6200),
        Level_8(8, 10000),
        Level_9(9, 15000),
        Level_10(10, 20000),
        Level_11(11, 30000),
        Level_12(12, 40000),
        Level_13(13, 50000),
        Level_14(14, 60000),
        Level_15(15, 70000),
        Level_16(16, 80000),
        Level_17(17, 90000),
        Level_18(18, 100000),
        Level_19(19, 200000),
        Level_20(20, 300000);
        
        private Integer id;
        private Integer needXp;
    
        Level(Integer id, Integer needXp) {
            this.id = id;
            this.needXp = needXp;
        }
    Не ругайте за такое я только пытаюсь
     
  2. Akultist

    Akultist Активный участник Пользователь

    Баллы:
    46
    Лучше алгоритм сделай. К примеру брать уровень игрока и умножать на какую-то цифру (первое что пришло в голову). Например можно сделать что-бы у всех игроков было разное количество опыта до следующего уровня.
    (level * 200) + new Random().nextInt(200) + 1; Или сделать енум до 10 уровней. А после достижения 10 уровня уже проводить алгоритм
     
  3. Cool_boy

    Cool_boy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Не совсем чесно. Автору советую посмотреть как реализована система уровней.
    https://minecraft.gamepedia.com/Experience#Leveling_up
     
  4. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    В данном случае ни level, ни порядковый номер, дублирующийся дважды, не несут смысловой нагрузки.
    Корректнее сделать просто список (загружаемый из конфига, или статичный иммутабельный).
    Номер уровня определить легко — как порядковый номер числа.
    Мне первым в голову пришло ловить эвент изменения опыта, определять, поменялся ли уровень (с какого на какой), бросать два своих эвента (MyPlayerLevelRaising, MyPlayerLevelFalling), ловить по необходимости.
     

Поделиться этой страницей