Kann man diesen Codeteil irgendwie kürzer fassen?
Also wenn es beispielsweise bis Feld 50 weitergehen würde.
Copy und Paste der If-Anweisung geht natürlich immer, aber es muss doch einen eleganteren Weg geben.
Feld ist passenderweise eine mögliche Übersetzung für Array. Wenn Du also 50 Felder hast, kannst Du ein Array verwenden:
Java:
JComponent felder[]=newJComponent[50];// statt JComponent ggf. den passenden Typ einsetzen
Damit hast Du einen index-basierten Zugriff auf die Felder: felder[0] kennzeichnet das erste Feld. In der Regel organisiert man es so, dass "FeldSpieler" den Index des Feldes angibt, auf dem der Spieler "steht" (oder was auch immer). Damit braucht man lediglich
[ode=Java]
felder[feldSpieler].setBackground(Color.blue);
[/code]
schreiben.
Tatsächlich wirst Du die anderen Felder aber zurücksetzen wollen. Das erreicht man mit einer Schleife, z. B.:
Übrigens: es gibt in Java Benennungskonventionen. Namen von Variablen und Parametern schreibt man in lowerCamelCase, Typbezeichner (z. B. Klassennamen) in UpperCamelCase.
Das bereits genannte Array oder eine Liste ist in diesem Fall die naheliegendste Lösung (pass mit den Indizes auf, Arrays und Listen starten bei 0. Korrigier also entweder jeweils den Index oder setz die Größe auf n+1 und rufe den Index 0 nie auf).
Falls du andere Datentypen als positiven Integer verwenden willst, gibt's genau dafür Maps (z.B. HashMap<String, Component> oder EnumMap<PlayerEnum, Component>).
Diese wird - wie das Array - einmalig initialisiert und ermöglicht dann recht angenehme Zugriffsmethoden.
Kann man diesen Codeteil irgendwie kürzer fassen?
Also wenn es beispielsweise bis Feld 50 weitergehen würde.
Copy und Paste der If-Anweisung geht natürlich immer, aber es muss doch einen eleganteren Weg geben.
Du solltest nicht so linear sondern mehr Objektorientiert arbeiten. Vergiss alles in irgend welche Arrays zu packen und getrennt voneinander zu verwalten, Objekte wären z.B.: Spielbrett kennt seine Felder und diese kennen den Spieler usw. Um das mal zu verdeutlichen folgendes Beispiel.
Java:
publicstaticclassPlayer{privatefinalint id;privateString name;privateColor color;publicPlayer(int id,String name,Color color){this.id = id;this.name = name;this.color = color;}publicintgetId(){return id;}publicStringgetName(){return name;}publicvoidsetName(String name){this.name = name;}publicColorgetColor(){return color;}publicvoidsetColor(Color color){this.color = color;}}privatestaticvoidsetBackground(Field field,Player player){
field.setBackground(player.getColor());}publicstaticvoidmain(String[] ioPaths)throwsException{Player playerOne =newPlayer(1,"Spieler 1",Color.BLUE);Field fieldOne =new...setBackground(fieldOne, playerOne);// oder besser
fieldOne.setBackground(playerOne);// die Methode setBackground würde dann - this.setBackground(player.getColor()); - This wäre dann ein Field}
Das ist natürlich sehr simpel da ich dein Projekt nicht kenne soll aber verdeutlichen was ich meine.