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) "в таблице монстра-лута.
Если вам нужна дополнительная информация, дайте мне знать, это довольно поздно, и мой мыслитель очень пожарен.
Измените строку:
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);
if (q > 1) { q1 = Integer.parseInt(JOptionPane.showInputDialog("How many would you like to take?")); }
На основании описания, переменная 'q' будет количеством предметов, доступных в инвентаре. Следовательно, использование Math.min с q будет означать «Вы можете взять не более« q »предметов»
Подтвердите их ввод. Вы можете сделать простое сравнение, чтобы убедиться, что запрашиваемая сумма меньше или равна доступной сумме. Кроме того, на основе вашего фрагмента кода я предлагаю вам использовать более описательные имена переменных, чем m, 1, q, q1, i, i2 и i3. Когда вы вернетесь, чтобы попытаться работать над этим кодом позже, будет легче запомнить, что все делает, если ваши переменные правильно названы.
JSpinner
который может быть сконфигурирован со значением max / min