Java 为正确的对象创建对象

Java 为正确的对象创建对象,java,swing,Java,Swing,首先,我为这个问题的标题道歉,我不知道该给它取什么名字 不管怎样,我正在做一个游戏,那里可以有很多玩家,每个人都可以养很多宠物。我已经开发了游戏的主要结构,例如玩家类、宠物类和主类。。从那以后,我一直在开发GUI,在那里我会问有多少玩家,每个玩家想要多少宠物。。我遇到的难题是如何为每个玩家创建宠物 我已经创建了一个非常基本的表单,要求玩家选择一个宠物类型,给它一个名字,然后创建宠物 public void createPets( final Player player){ //various

首先,我为这个问题的标题道歉,我不知道该给它取什么名字

不管怎样,我正在做一个游戏,那里可以有很多玩家,每个人都可以养很多宠物。我已经开发了游戏的主要结构,例如玩家类、宠物类和主类。。从那以后,我一直在开发GUI,在那里我会问有多少玩家,每个玩家想要多少宠物。。我遇到的难题是如何为每个玩家创建宠物

我已经创建了一个非常基本的表单,要求玩家选择一个宠物类型,给它一个名字,然后创建宠物

public  void createPets( final Player player){

//various buttons,comboBox and labels go here
//layout managers
//add it all to a frame

JButton jbCreatePet = new JButton("Create Pet");

jbCreatePet.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
        String name = jtfName.toString();

        if (cbSpecies.getSelectedIndex() == 0){
            Alien alien = new Alien();
            alien.setName(name);
            player.getAllPets.add(alien);


        }
        else if(cbSpecies.getSelectedIndex() == 1){
            create other pet2
        }
        else{
            create other pet3
        }
    }
});

player is a Player object passed into the method using a for loop.. 

for (Player player: allPlayers){
    createPets(player);
}
现在我知道使用for循环是不正确的,例如表单将直接跳到最后一个玩家,其他玩家都无法创建宠物

所以我有几个问题:

当我将创建的宠物分配到所有宠物的玩家列表时,eclipse告诉我必须创建它。我有点理解为什么,但我想知道的是,将玩家参数设置为final是否意味着我不能为其他玩家创建宠物,只有第一个玩家

我如何向每个玩家显示我的形态,例如游戏中的两名玩家都有两个宠物,玩家1选择一个宠物并给它起一个名字然后创建它,然后他会被告知他需要创建另一个宠物形态再次显示,所以他创建了另一个宠物,然后它的玩家2选择并创建了两个宠物。。。我想我正在试图找出如何在正确的时间将正确的player参数传递到createPet方法中

请让我知道,如果你想让我澄清任何其他

非常感谢能帮助我的人

当我将创建的宠物分配到所有宠物的玩家列表时,eclipse告诉我必须创建它。我有点理解为什么,但我想知道的是,将玩家参数设置为final是否意味着我不能为其他玩家创建宠物,只有第一个玩家

Eclipse不需要这样做——Java是因为您在匿名内部类中使用Player参数,所以它必须是final。这不会阻止你对其他玩家使用同样的方法

我如何向每个玩家显示我的形态,例如游戏中的两名玩家都有两个宠物,玩家1选择一个宠物并给它起一个名字然后创建它,然后他会被告知他需要创建另一个宠物形态再次显示,所以他创建了另一个宠物,然后它的玩家2选择并创建了两个宠物。。。我想我正在试图找出如何在正确的时间将正确的player参数传递到createPet方法中

主游戏对象将控制以上所有内容,对吗?我想您可以使用for循环,即在循环内部显示一个模式对话框,如JOptionPane

另一个选择是创建JPanel视图,允许所有玩家输入他们的宠物。这一切都取决于你,我建议你尝试不同的方法

在早期,您需要确保做的一件主要事情是将程序的逻辑与GUI强烈分离。例如,您的玩家和宠物类不应该了解GUI,也不应该有任何Swing代码,因此逻辑上添加宠物的代码不是GUI,而是GUI可以并且将使用的代码

编辑 考虑给你的游戏类登记RealStPrrePrame播放器或EddiePrPrPrame播放器方法,任何玩家都可以调用他们的名字,他们的宠物,以及任何其他可能需要玩游戏的属性。然后在按下JButton时调用此方法一次。除非所有玩家都已正确注册,否则不允许游戏进行

当我将创建的宠物分配到所有宠物的玩家列表时,eclipse告诉我必须创建它。我有点理解为什么,但我想知道的是,将玩家参数设置为final是否意味着我不能为其他玩家创建宠物,只有第一个玩家

Eclipse不需要这样做——Java是因为您在匿名内部类中使用Player参数,所以它必须是final。这不会阻止你对其他玩家使用同样的方法

我如何向每个玩家显示我的形态,例如游戏中的两名玩家都有两个宠物,玩家1选择一个宠物并给它起一个名字然后创建它,然后他会被告知他需要创建另一个宠物形态再次显示,所以他创建了另一个宠物,然后它的玩家2选择并创建了两个宠物。。。我想我正在试图找出如何在正确的时间将正确的player参数传递到createPet方法中

主游戏对象将控制以上所有内容,对吗?我想您可以使用for循环,即在循环内部显示一个模式对话框,如JOptionPane

另一个选择是创建JPanel视图,允许所有玩家输入他们的宠物。这一切都取决于你,我建议你尝试不同的方法

一件主要的事情 您需要确保在早期就将程序的逻辑与GUI紧密分离。例如,您的玩家和宠物类不应该了解GUI,也不应该有任何Swing代码,因此逻辑上添加宠物的代码不是GUI,而是GUI可以并且将使用的代码

编辑
考虑给你的游戏类登记RealStPrrePrame播放器或EddiePrPrPrame播放器方法,任何玩家都可以调用他们的名字,他们的宠物,以及任何其他可能需要玩游戏的属性。然后在按下JButton时调用此方法一次。除非所有玩家都已正确注册,否则不要让游戏继续进行。

好的,谢谢你清理了第一部分。是的,最初我使用的是JOptionPane,但我认为使用框架会更方便用户,这可能是这样,但可能没有那么容易。谢谢您的编辑。您能详细介绍一下使用JPanel创建视图吗?关于逻辑和GUI的分离,我认为目前为止我在这方面做得很好。。在玩家或宠物类中,这并不意味着有GUI。我会小心,因为我的进展,这是一个MVC的正确吗?好的,谢谢你清理了第一部分。是的,最初我使用的是JOptionPane,但我认为使用框架会更方便用户,这可能是这样,但可能没有那么容易。谢谢您的编辑。您能详细介绍一下使用JPanel创建视图吗?关于逻辑和GUI的分离,我认为目前为止我在这方面做得很好。。在玩家或宠物类中,这并不意味着有GUI。我会小心,因为我的进展,这是一个MVC的正确吗?