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