我正在为我的Java课程制作一个狗文本冒险游戏,我最近的任务是为游戏添加概率和训练。
基本上我生成了一个随机数,如果与该技能相关的数字 例如,“Shake”大于设定数字,然后狗将成功执行该技巧。
那部分对我来说是100%的工作。
现在添加培训是我遇到问题的地方。我将每个技能设置为初始值1.每次成功执行一项技能时,该值增加1。
我的目标是让最大值为3,如果达到最大值,那么狗每执行一次就会执行一次技巧!
这就是我所拥有的,希望有人可以解释为什么它不起作用
// Sit
if (Trick.equalsIgnoreCase("Sit")) {
if (roll >= 4 || sitSkill == 3) {
System.out.println("\n" + name + " sat down for you!");
energy -= 10;
food -= 5;
sitSkill ++;
happy ++;
} else {
System.out.println("\n" + name + " did not perform the trick successfuly.");
energy -= 10;
food -= 6;
happy -= 20;
}
}
答案 0 :(得分:7)
我无法确切地说出您正在尝试获得哪些帮助,但我能看到的最明显的问题是,在sitSkill == 3
的情况下,您仍然会调用sitSkill++
,并且所以在那次迭代之后,它将等于4,如果滚动太低,则会触发else语句。
答案 1 :(得分:3)
我认为你必须在达到3后停止增量sitSkill
,否则每次sitSkill == 3
始终为假时它都会递增。
if(roll >= 4 || sitSkill == 3){
if(sitSkill < 3) {
sitSkill++;
}
System.out.println("\n" + Name + " sat down for you!");
Energy -= 10;
Food -= 5;
Happy ++;
}
答案 2 :(得分:0)
更改
if(roll >= 4 || sitSkill == 3)
到
if(roll >= 4 || sitSkill >= 3)
或
if(Trick.equalsIgnoreCase("Sit")){
if(roll >= 4 || sitSkill == 3){
System.out.println("\n" + Name + " sat down for you!");
Energy -= 10;
Food -= 5;
sitSkill = sitSkill == 3 ? sitSkill : sitSkill +);
Happy ++;
}
else{
System.out.println("\n" + Name + " did not perform the trick successfuly.");
Energy -= 10;
Food -= 6;
Happy -= 20;
}
}