2017-07-22 2 views
0

Ich versuche, ein Inventar für mein Spiel zu machen, und ich habe zwei Probleme, die ich nicht herausfinden, wie zu beheben. Eines der Probleme ist, dass die Slots auf der gleichen Position zu sein scheinen, ich möchte einen Platz von 25 Pixles haben und das andere Problem ist, dass das Spiel nur einen Slot zu der Zeit anstelle von allen zeigt.
Denken Sie daran, dass ich kein guter Programmierer bin.

Finden Sie den ersten leeren Steckplatz in Array-Liste mit for-Schleife

Hier ist mein Code:

public void loadInventory(Graphics g){ 
    if(item != null){ 
     for (int i = 0; i < slot.length; i++){ 
      if (slot[i] == null) { 
       slot[i] = ""; 
       break; 
      } 
     } 
    for (int i = 0; i < slot.length; i++){ 
      if (slot[i] != null){    
       g.drawString(item.getName() + ": " + itemGroup.size(), 400, 100 + (i * 25)); 
       break; 
      } 
     } 
    } 
} 

Antwort

0

Hier ist Artikel nicht auf das Verfahren, sondern ein Feld zur Verfügung gestellt:

public void loadInventory(Graphics g){ 
    if(item != null){ 

, Sie also zu jedem Zeitpunkt das Element außer Kraft setzen, die Sie aufrufen die Methode loadInventory().
Ändern der Methode, so dass ist, akzeptiert ein Array oder besser eine Liste von Item:

public void loadInventory(Graphics g, List<Item> items){ 

und nutzen diese Liste, sie zu zeichnen:

for (int i = 0; i < slot.length; i++){ 
     if (slot[i] != null && items.get(i) != null){    
      g.drawString(items.get(i).getName() + ": " + itemGroup.size(), 400, 100 + (i * 25));  
     } 
    } 
} 

Und die break entfernen, die die Schleife endet.

+0

Wenn ich alle Unterbrechungen entferne, dann sind alle Schlitze mit dem gleichen Gegenstand gefüllt. Und wenn ich einen anderen Gegenstand nehme, dann sind alle Plätze mit diesem Gegenstand gefüllt. – Grim

+0

Ich habe meine Antwort überarbeitet. – davidxxx

+0

Jetzt erhalte ich einen Fehler in der Zeile, in der ich ein Element zur Liste hinzufüge. – Grim

0

Entfernen Sie die Break-Anweisungen - sie stoppen die Ausführung des Codes und lassen den Rest der Logik nicht zu.

Sie brauchen das extra für die Aussage auch nicht.

public void loadInventory(Graphics g){ 
    for (int i = 0; i < slot.length; i++){ 
     if(item != null){ 
      if (slot[i] == null) { 
       slot[i] = ""; 
      } 
     } if (slot[i] != null){    
       g.drawString(item.getName() + ": " + itemGroup.size(), 400, 100 + (i * 25)); 
      } 
    } 
Verwandte Themen