我的文字游戏战利品系统遇到了问题

时间:2014-08-07 02:05:17

标签: java text

            public void mouseClicked(MouseEvent m) {
            JList l = (JList)m.getSource();
            // If click twice then collect item
            if (m.getClickCount() == 2 && l.getSelectedValue() != null) {
                String i = l.getSelectedValue().toString();
                int q = Integer.parseInt(i.replaceAll("\\)","").split("\\(")[1]), q1 = 0;
                String i2 = i.split("\\(")[0];
                String i3 = i2.substring(0, i2.length() - 1);
                if (q > 1) {
                    q1 = Integer.parseInt(JOptionPane.showInputDialog("How many would you like to take?"));
                }
                else
                    q1 = 1;
                PlayerHandler.addItem(i3, q1);
                if (q1 == q) {
                    lmb.remove(l.getSelectedIndex());
                }
                else {
                    String t = l.getSelectedValue().toString();
                    int s = l.getSelectedIndex();
                    lmb.remove(s);
                    lmb.add(s, t.replaceAll(Integer.toString(q), Integer.toString(q - q1)));
                }
                lma.clear();
                PlayerHandler.listInventory(lma);
            }
        }
    });

我正在尝试学习文字游戏项目,并且在敌人死亡后我遇到了收集物品的问题。

当库存出现并且每个项目有两个或更多时,会弹出一个窗口,询问玩家输入他们想要的数量,让我们说库存中有5把木剑,它会允许他们拿出100把木剑,将它们放入库存中并留下一把木剑(-95)"在怪物战利品表中。

如果您需要更多信息,请告诉我,这已经很晚了,而且我的思想家非常讨厌。

2 个答案:

答案 0 :(得分:0)

更改行:

q1 = Integer.parseInt(JOptionPane.showInputDialog("How many would you like to take?"));

要:

q1 = Math.min(Integer.parseInt(JOptionPane.showInputDialog("How many would you like to take?")), q);

答案 1 :(得分:0)

验证他们的输入。您可以进行简单比较,以确保他们请求的金额小于或等于可用金额。此外,根据您的代码段,我建议您使用比m,1,q,q1,i,i2和i3更多的描述性变量名称。当您稍后再尝试使用该代码时,如果您的变量被正确命名,将更容易记住所有操作。