目前正在编写我的决赛,这是一款基于文本的冒险游戏。我无法启动角色选择。我的目的是创建myCharacter的对象,然后用我的角色类中的方法填充变量。我想使用while循环来避免在设置角色之前初始化游戏并且h1将角色放在第一个房间中以开始游戏。相反,变量永远不会设置,它只是一个永久的循环。
//Select Player
while (myCharacter.HP == 0)
{
input = JOptionPane.showInputDialog("Select your Character\nDerek\nEmily\nMichael");
switch (input)
{
case "Derek" :
myCharacter.SetVariables("Derek", "", 100, 50, false,
false, false, false, false, 0, h1);
break;
case "Emily" :
myCharacter.SetVariables("Emily", "", 150, 20, false,
false, false, false, false, 0, h1);
break;
case "Michael" :
myCharacter.SetVariables("Michael", "", 75, 75, false,
false, false, false, false, 0, h1);
break;
default:
JOptionPane.showMessageDialog(null,"Please enter a given name");
}
}
这是我的角色类,其中包含设置变量的方法。
class Character
{
String Name;
String Description;
int HP;
int attack;
//inventory
boolean mainKey = false;
boolean H1toH2 = false;
boolean knife = false;
boolean gasMask = false;
boolean gasMaskUse = false;
int bandage = 0;
Room currentRoom;
public void SetVariables(String N, String D, int H, int A, boolean MK,
boolean DK, boolean K, boolean GM, boolean GMU, int B, Room CR)
{
N = Name;
D = Description;
H = HP;
A = attack;
MK = mainKey;
DK = H1toH2;
K = knife;
GM = gasMask;
GMU = gasMaskUse;
B = bandage;
CR = currentRoom;
}
}
我没有这本介绍班的最好的老师。很多人都在努力解决这个问题,所以我转向了youtube并阅读了很多书。
答案 0 :(得分:3)
您应该将参数分配给类字段,而不是相反:
public void SetVariables(String N, String D, int H, int A, boolean MK,
boolean DK, boolean K, boolean GM, boolean GMU, int B, Room CR)
{
Name = N;
Description = D;
...
}
答案 1 :(得分:0)
您的变量名称是向后的。
例如,应该是this.Name = N;
。使用this
将帮助您理解/识别您实际执行的操作。设置"此类的字段为值"。
此外,Java变量/方法命名约定规定除了类或接口之外,不应使用起始大写字母
还鼓励每个值使用单独的setter方法,而不是让其他人读取并找出你设置的未命名参数