Я пишу программу, которая генерирует случайную гонку / класс для эквалайзера для приложения потокового вещания

1
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class ClassNameGenerator {

    private static JLabel label;
    private static JLabel label2;

    public static void main (String[] args){

        JFrame frame = new JFrame("EQStreamTool");
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400,350);
        JPanel panel = new JPanel (new FlowLayout(FlowLayout.CENTER, 20, 5));
        for (int i =0; i <10; i++) {
        }
        frame.add(panel);
        JButton button = new JButton("Generate Class/Race");
        panel.add(button);
        label = new JLabel();
        panel.add(label);
        button.addActionListener(new Action());
        label2 = new JLabel();
        panel.add(label2);
        button.addActionListener(new Action());
    }

    static class Action implements ActionListener{

        public void actionPerformed (ActionEvent e){
            String[] races = {"Barbarian", "Dark Elf", "Dwarf", "Erudite", "Gnome", "Ogre", "Troll", "Wood Elf", "Half Elf", "Halfling", "High Elf", "Human", "Iksar"};
            String[] classes = {"Bard", "Druid", "Cleric", "Enchanter", "Magician", "Monk", "Necromancer", "Paladin", "Ranger", "Rogue", "Shadowknight", "Warrior", "wizard"};
            String[] barbClasses = {"Rogue", "Shaman", "Warrior"};
            String[] delfClasses = {"Cleric", "Enchanter", "Magician", "Necromancer", "Rogue", "Shadowknight", "Warrior", "Wizard"};
            String[] dwarfClasses = {"Rogue", "Paladin", "Warrior"};
            String[] eruditeClasses = {"Cleric", "Enchanter", "Magician", "Necromancer", "Paladin", "Shadowknight", "Wizard"};
            String[] gnomeClasses = {"Cleric", "Enchanter", "Magician", "Necromancer", "Paladin", "Rogue", "Shadowknight", "Warrior", "Wizard"};
            String[] halfelfClasses = {"Bard", "Druid", "Paladin", "Ranger", "Rogue", "Shadowknight", "Warrior", "Wizard"};
            String[] halflingClasses = {"Rogue", "Cleric", "Warrior", "Druid", "Paladin", "Ranger"};
            String[] highelfClasses = {"Cleric", "Enchanter", "Magician", "Paladin", "Wizard"};
            String[] humanClasses = {"Rogue", "Bard", "Warrior", "Cleric", "Druid", "Enchanter", "Magician", "Monk", "Necromancer", "Paladin", "Ranger", "Shadowknight", "Wizard"};
            String[] iksarClasses = {"Monk", "Shaman", "Warrior", "Necromancer", "Shadowknight"};
            String[] ogreClasses = {"Shadowknight", "Shaman", "Warrior"};
            String[] trollClasses = {"Shadwknight", "Shaman", "Warrior"};
            String[] woodelfClasses = {"Bard", "Druid", "Ranger", "Rogue", "Warrior"};

            int random = (int) (Math.random()*races.length);
            int random2 = (int) (Math.random()*classes.length);

            label.setText("Your Race is: "  + races[random]); 
            label2.setText("Your Class is: " + classes[random2]);
        }
    }
}

Итак, я пытаюсь получить программу, которая может создать случайную комбинацию класса/расы из старой игры everquest. Я хочу убедиться, что программа учитывает ограничения на классовую гонку. поэтому я сделал кучу строк и не могу получить случайный класс, основанный на случайной гонке.

Таким образом, он должен работать так, как будто эта программа выбирает расу, и случайным образом выбирает класс, в который может играть только эта раса. Отсюда и все струны. Пожалуйста, оцените любую помощь, чтобы я мог перейти ко второму этапу этого проекта.

Также примечание, как сделать так, чтобы кнопка оставалась сверху, а текст, который она выскакивала, отображался под ней?

  • 0
    Также прямо сейчас выскакивают случайные расы и классы, но при этом не учитывается, что вы не можете быть некоторыми классами как определенной расой. вот почему я сделал другие строки.
  • 0
    Вы можете использовать 2d массив
Показать ещё 1 комментарий
Теги:
string
if-statement
random

2 ответа

0
Лучший ответ

Мое предложение для вас в первую проблему - использовать Enum. Я создал образец класса enum, который был бы чем-то вроде,

public enum RestrictedComboEnum {

Barbarian(new String[] { "bard", "druid" }), 
Dwarf(new String[] { "hello","trial" });

RestrictedComboEnum(String[] classes) {
    this.classes = classes;
}

String[] classes;

public String[] getClasses() {
    return this.classes;
}

}

Теперь удалите свой массив строк и классы из вашего вышеуказанного кода. Вместо этого выберите одно из enum качестве ваших рас (вместо строки, которую вы делаете), вызвав getEnumConstants() в этом классе enum который возвращает массив всех enum, в вашем случае все Races с действительными классами. Теперь вызовите метод get в этом enum и он вернет все возможные классы, которые вы ввели для этой enum. Вы можете случайным образом выбрать класс, поскольку он является массивом строки и двигаться вперед оттуда.

Соответствующий код в указанном выше классе будет следующим:

        RestrictedComboEnum[] combinations = RestrictedComboEnum.class
                .getEnumConstants();

        int random = (int) (Math.random() * combinations.length);

        RestrictedComboEnum selectedCombo = combinations[random];

        int random2 = (int) (Math.random() * selectedCombo.getClasses().length);

        label.setText("Your Race is: " + combinations[random]);
        label2.setText("Your Class is: "+ selectedCombo.getClasses()[random2]);

в приведенном выше примере, когда приложение выбирает Barbarian качестве расы, возможный отбор будет либо bard либо druid, а для Dwarf это будет hello и trial. Таким образом, заполните enum в соответствии с вашими потребностями.

Из ваших комментариев вы, кажется, очень новы в Java, поэтому просто для обучения тоже вы можете попробовать использовать Enum, потому что они вам понадобятся. Это должно облегчить вашу жизнь, а затем использовать 2d-массив, когда ваш код будет расти.

  • 0
    Ваше право я новый, очень новый. Но я собираюсь заглянуть в другие перечисления и двумерные массивы, чтобы познакомиться с обоими.
  • 0
    это исправило это прямо. Огромное спасибо. Теперь, если бы я мог просто отформатировать способ, которым jfram помещает вещи в коробку.
Показать ещё 3 комментария
0

если я правильно понял, вы можете использовать 2d-массив. например

String[][] raceAndClasses={{"Barbarian","Dark Elf","Dwarf"},{"Bard", "Druid", "Cleric"},{"Rogue", "Shaman", "Warrior"}};

внутри массива вы можете указать все расы, которые он имеет. Так когда вы выбираете класс случайным образом, вы можете выбрать соответствующую случайную расу

  • 1
    это, вероятно, поможет, ища это сейчас, чтобы увидеть, как я бы настроил это спасибо
  • 0
    я приведу более подробный пример @JeremyZavala
Сообщество Overcoder
Наверх
Меню