0

我是 java/programming 的新手,我认为一个很好的学习方法是制作一个简单的文本 RPG 游戏。我在一个班级档案上,您可以在其中雇用工人为您开采矿石。基本上,我从用户那里拿了 2000 金币,并在 1-5 之间随机选择一个数字 10 次,他们根据该数字 10 次获得矿石。(例如,1 是铜,4 是金)

这就是我到目前为止所拥有的,当我运行它时,它需要我的金币,但只给我 1 矿石,而它真的应该给我 10,有什么帮助吗?编辑:抱歉忘了提我有 int x = 0;在顶部

if ((input.input.equalsIgnoreCase("a")) && inventory.goldCoins >= 2000) {
    System.out.println("You have hired Sanchez for $2000!");
    inventory.goldCoins -= 2000;

    do {
        int workerOre = (int )(Math.random() * 5 + 1);
        if (workerOre == 1) {
            inventory.addInventory("Copper Ore");
            menu.start();
        } else if (workerOre == 2) {
            inventory.addInventory("Iron Ore");
            menu.start();
        } else if (workerOre == 3) {
            inventory.addInventory("Steel Ore");
            menu.start();
        } else if (workerOre == 4) {
            inventory.addInventory("Gold Ore");
            menu.start();
        } else if (workerOre == 5) {
            inventory.addInventory("Copper Ore");
        }
        x++;
    } while (x < 10);
    System.out.println("Sanchez has finished his shift and the ore has been added to your inventory!");
} else if ((input.input.equalsIgnoreCase("a")) && inventory.goldCoins < 2000) {
    System.out.println("You do not have enough money!");
    worker();
}
4

3 回答 3

1

原因可能是您从未初始化 x,所以它只是等于一些垃圾值。尝试int x = 0在你的 do-while 循环之前添加。

我还注意到您menu.start()在将矿石添加到库存后调用,您的程序是否有可能永远不会回到循环中?

确定案例后,您将需要使用 abreak跳出 switch 语句,其次,您可以default在 switch 的末尾添加 a ,如果曾经有时间不满足 case 1 到 case 4 . 前任:

switch(ore)
{
    case 1: inventory.addInventory("Copper Ore");
        break;
    case 2: inventory.addInventory("Iron Ore");
        break;
    case 3: inventory.addInventory("Steel Ore");
        break;
    case 4: inventory.addInventory("Gold Ore");
        break;
    default: inventory.addInventory("Copper Ore");
}
于 2013-09-24T02:53:12.633 回答
0

看起来您从未初始化x.

只需int x = 0在开始之前添加do...while.

于 2013-09-24T02:50:42.310 回答
0

尝试类似:

for (int i = 0; i < 10; i++) {
    mineOre();
}

public void mineOre() {
    int ore = (int) Math.random() * 5 + 1;
    switch (ore) {
        case 1: inventory.addInventory("Copper Ore");
        case 2: inventory.addInventory("Iron Ore");
        case 3: inventory.addInventory("Steel Ore");
        case 4: inventory.addInventory("Gold Ore");
        case 5: inventory.addInventory("Copper Ore");
    }
    menu.start();
}
于 2013-09-24T02:51:44.313 回答