4

我为我的 Java 课制作了一个狗文字冒险游戏,我最近的任务是为游戏添加概率和训练。

基本上我生成了一个随机数,如果与技能“摇”相关的数字大于设定的数字,那么狗将成功执行该技巧。

那部分对我来说是 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;
        }
    }
4

3 回答 3

7

我无法准确说出您要寻求帮助的确切内容,但是我可以看到的最明显的问题是,在 where 的情况下sitSkill == 3,您仍然调用sitSkill++,因此在该迭代之后,它将等于四,导致如果滚动太低,将触发 else 语句。

于 2013-08-29T03:56:39.040 回答
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 ++;
}
于 2013-08-29T03:59:09.210 回答
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;
        }
    }
于 2013-08-29T04:55:16.943 回答