Oyunum için bir envanter sistemi kurdum. Ekran tıklandığında, MousePressedEvent
, oyundaki tüm layers
içinden, EventListener
(My EventListener
) öğemi alan tüm nesnelere geçirilir. EventListener
sınıfı iyi çalışıyor ve aşağıda gösterildiği gibi kullanarak, envanterimi almayı başardım, böylece öğeleri bir yuvadan kaldırabilir ve geri koyabilirsiniz. Bununla birlikte yapmak istediklerim, bunları içeren herhangi bir slottan çıkartabilmeleri ve bunları slotların herhangi bir yerine yerleştirebilmeleridir (hedef slot boş olduğu sürece). Buna izin verdiğimi düşündüm, çünkü if
bildirimde olduğu gibi, eğer yuva seçiliyse, onu hiçbir zaman yuvaya ekleyemem. Ama bu aslında işe yaramıyor. Herhangi bir fikir? Slot.java
sınıftaJava: Envanterimde bırakma eylemine izin veriliyor mu?
Kodu: Sözde kodda
public boolean onMousePressed(MousePressedEvent e) {
Point p = new Point(Mouse.getX(), Mouse.getY());
if (!this.getBounds().contains(p)) return false;
boolean left = (e.getButton() == MouseEvent.BUTTON1);
boolean right = (e.getButton() == MouseEvent.BUTTON3);
boolean hasItems = (items.size() > 0);
if (this.getBounds().contains(p)){
if (right && !selected && hasItems){
select(true);
s = new Slot(new Vector2i(Mouse.getX(), Mouse.getY()));
addComponent(s);
s.add(items.get(0));
remove(items.get(items.size() - 1));
} else if (right && selected){
s.add(items.get(0));
remove(items.get(items.size() - 1));
if (items.size() == 0) {
setBackgroundImage(ImageUtil.getImage("/ui/panels/inventory/slot.png"));
selected = false;
return true;
}
return true;
} else if ((left || right) && s==null) {
return true;
} else if (left && s != null){ //If left clicked, add to the slot from s regardless of if we are selected.
add(s.getItems().get(0));
s.remove(s.getItems().get(s.getItems().size() - 1));
if (s.getItems().size() == 0){
s.setBackgroundImage(ImageUtil.getImage("/ui/panels/inventory/slot.png"));
removeComponent(s);
s = null;
selected = false;
return true;
}
}
}
return false;
}
: Her else if
açıklamada baskı hatlarında ekleyerek
Bu kodun açıklamayla nasıl ilişkili olduğunu göremiyorum. Kodu asgari bir örnekle kapatabilir ve ne yaptığını ve liste ve döngüler ile ifs ve benzeri gibi programlama terimlerinde ne yapmadığına dair bir açıklama verebilir misiniz? Oyununuzun kavramları kod için gerçekten alakalı değildir. – zapl
@zapl daha iyi? Şeyler açıklığa kavuşturmak için bir sözde kod sürümü ekledim –
Sözde kodunuzun hangi bölümünün beklediğiniz gibi çalışmadığını belirtebilir misiniz? Bir çok kenar durumu var .... –