Java 骰子游戏无限玩家

Java 骰子游戏无限玩家,java,arrays,Java,Arrays,我正在做一个骰子游戏,它将有3种变化。 我可以设置游戏中的玩家数量、要玩的回合数和游戏类型 点数的增加与游戏类型有关。玩家应一个接一个地掷骰子,最后得分最多的人获胜 到目前为止,我已经建模了一个立方体,但是我的骰子游戏类或玩家类有问题 以下是多维数据集的代码: public class Wuerfel { int max; int min; int augen; Wuerfel() { min = 1; max = 6;

我正在做一个骰子游戏,它将有3种变化。 我可以设置游戏中的玩家数量、要玩的回合数和游戏类型

点数的增加与游戏类型有关。玩家应一个接一个地掷骰子,最后得分最多的人获胜

到目前为止,我已经建模了一个立方体,但是我的骰子游戏类或玩家类有问题

以下是多维数据集的代码:

public class Wuerfel {
    int max;
    int min;
    int augen;

    Wuerfel() {
        min = 1;
        max = 6;    
    }

    Wuerfel(int min, int max) {
        this.min = min;
        this.max = max;
    }

    public int getAugen() {
        return augen;
    }

    int wuerfeln() {
        this.augen = (int) (Math.random() * ((max - min)+1)+min);
        return augen;
    }

    public java.lang.String toString() {
        String text = "Wuerfel" + min + " .. " + max + " gewuerfelt: " + augen;
        return text;
    }
而玩家:

public class Spieler {
    String name;
    int gesamtAugen;
    int gewuerfelteAugen;

    public void setName(String name) {
        name = JOptionPane.showInputDialog("Bitte neuen Spielernamen eingeben: ");
    }

    int getGesamtaugen() {
        return gesamtAugen;
    }

    int wuerfeln() {
        Wuerfel w = new Wuerfel();
        w.wuerfeln();
        this.gesamtAugen = gesamtAugen + w.augen;
        this.gewuerfelteAugen = w.augen;
        return gesamtAugen & w.augen;
    }

    Spieler() {
        name = null;
        gesamtAugen = 0;
    }

}
还有游戏:

public class Wuerfelspiel {

    int a; //Spieleranzahl
    int v; //Variante
    int r; //Rundenanzahl

    public static void main(String[] args) {

        Wuerfelspiel wu = new Wuerfelspiel();

        wu.a = Integer.parseInt(JOptionPane.showInputDialog("Bitte geben Sie eine Spieleranzahl ein: "));
        wu.v = Integer.parseInt(JOptionPane.showInputDialog("Bitte geben Sie eine Variante ein:"+"\n" +
                "(1) Alle Augen werden addiert" + "\n" +
                "(2) Nur die geraden Augen werden addiert" + "\n" +
                "(3) Die böse Eins" + "\n"));
        wu.r = Integer.parseInt(JOptionPane.showInputDialog("Bitte geben Sie eine Rundenanzahl ein: "));

        Spieler[] spieler = null;
        spieler = new Spieler[wu.a];
        for (int i = 0; i < wu.a; i++) {
            spieler[i].setName(JOptionPane.showInputDialog("Bitte geben Sie einen Spielernamen ein: "));
        }

        for (int i = 0; i < wu.a; i++) {
            spieler[i].wuerfeln();
            System.out.println( spieler[i].name + "hat gewuerfelt: " + spieler[i].gewuerfelteAugen + " Gesamtpunkte: " + spieler[i].gesamtAugen);
        }

        for (int i = 0; i < wu.a; i++) {
            System.out.println("Der Endstand ist: " + "\n" + spieler[i].gesamtAugen);
        }

    }
}
公共类Wuerfelspiel{
int a;//Spieleranzahl
int v;//变量
int r;//rundenanazahl
公共静态void main(字符串[]args){
Wuerfelspiel wu=新的Wuerfelspiel();
wu.a=Integer.parseInt(JOptionPane.showInputDialog(“bite-geben-Sie-eine-Spieleranzahl-ein:”);
wu.v=Integer.parseInt(JOptionPane.showInputDialog(“BITE geben Sie eine VARIANE ein:”+“\n”+
“(1)所有奥根-沃登添加“+”\n”+
(2)不可添加“+”\n+
“(3)死böse Eins”+“\n”);
wu.r=Integer.parseInt(JOptionPane.showInputDialog(“bite-geben-Sie-eine-rundenanazahl-ein:”);
Spieler[]Spieler=null;
斯皮勒=新斯皮勒[wu.a];
for(int i=0;i
到目前为止,我的代码中没有关于游戏类型的内容。我可能最终会这么做


我知道这一定是件很愚蠢的事,我来不了。我真的很难写一个main方法。当我试图更改数组中某个对象的名称时,总是会出现空指针异常。我可以将Spiler类型的对象保存到数组中吗?为什么不可能更改它们的变量?

您创建了一个空的
spieler
数组,并试图调用每个元素上的方法(它们是
null
),例外情况也是如此

因此,在实际调用方法(在数组元素上)之前,需要先使用
Spieler
对象初始化数组,如下所示:

Spieler[] spieler = new Spieler[wu.a];
for(int i = 0; i < wu.a; i++) {
    spieler[i] = new Spieler();//load each array element with Spieler object
}
Spieler[]Spieler=新Spieler[wu.a];
for(int i=0;i

作为旁注,保留变量名(如
a
v
r
)不是一种好的做法,这些变量名不容易理解,因此通过在类中传达它们的用途来正确命名它们。

为什么
setName()
方法使用作为参数传入的
名称