我正在编写一个程序,为抽搐流媒体应用程序的 eq 生成随机比赛/类


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中获得一个可以创建随机职业/种族组合的程序。我想确保这个项目考虑到了阶级种族的限制。所以我做了一堆字符串,但我似乎无法获得基于随机种族的随机类。

所以它应该这样工作程序选择一个种族,然后随机选择一个只有那个种族才能玩的职业。因此,所有的弦。请提供任何帮助,我将不胜感激,这样我就可以进入这个项目的第二阶段。

还有一个旁注,我该如何使按钮保持在顶部,弹出的文本显示在下面?

对于您的第一个问题,我的建议是使用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。现在调用这个enum中的get方法,它会返回您为那个竞赛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作为竞赛时,可能的选择将是barddruid,而对于Dwarf,可能的是hellotrial。因此,根据您的需要填写enum

从你的评论来看,你似乎对Java很陌生,所以为了学习,你也可以尝试使用Enum,因为你需要它们。当代码增长时,这将使您的生活比使用2d数组轻松得多。

如果我理解正确,你可以使用2d数组。例如

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

在一个数组中,你可以指定它拥有的所有种族。所以当你随机选择一个类时,你可以选择一个相关的随机种族

最新更新