Variablen Int-Array Int Zuweisen

4a616e

Mitglied
Hallo,
ich Programmiere Momentan Tic-Tac-Toe in einem Framework unsrer Firma plus eigenen Gui-Designer.
Ich habe Folgendes Problem und zwar habe ich ein int[]-Array mit 9 Buttons, die alle einen Wert von Null am Anfang haben. Es gibt einen Spieler und eine KI, der Spieler bzw die KI haben einen Normalen int Wert (Spieler = 1 und X ; und KI war auserhalb des Framework 2 bzw O).
Nun Versuche ich gerade irgendwie ein int[] einem int Wert zuzuweisen jedoch klappt das natürlich nicht. Ich habe jetzt bloß keine Ahnung wie ich das genau anstellen soll (hatte es schon versucht die Spieler auch in ein Array reinzuwerfen was aber auch nicht so wirklich geklappt hat). Die Anpassungen in Model View Controller kommen dann noch es soll erst mal das Programm laufen. Teile die mit Sternchen gekennzeichnet sind, sind Firmen eigene Framwork Strukturen die ich so nicht abbilden darf.
Das Problem liegt in der setXO()- , ki()- Methode.
Schonmal Danke für die Antworten.

Hier mein Code:
Java:
public class DevelForm extends AbstractJavaViewerForm {
    public static int spieler = 1; //Aktueller Spieler
    int icounter = 1;

    private Model model;

    @Override
    public AbstractGuiControl getGui() {
        return develForm;
    }

    public DevelForm(******) {
        super(connector, form);
        $$internalCreateGui$$(null);
        postCreateGui();
    }

    private void postCreateGui() {
        model = new Model();
    }

    public class Model{
        private int[] value;
        FrameworkImage X,O;

        public Model() {
            this(new int[]{0,0,0,0,0,0,0,0,0});
        }

        public Model(int[] value){
            this.value = value;
            X = FrameworkImage.getRelativeToClass(DevelForm.class, "X.png");
            O = FrameworkImage.getRelativeToClass(DevelForm.class, "0.png");
        }

        public int[] getValue() {
            return value;
        }
        public void setValue(int[] value) {
            this.value = value;
        }

        public int getValueAt(int index){
            return value[index];
        }
        public void setValueAt(int idx, int value) {
            this.value[idx] = value;
        }


        public void setXO(int spieler){
            GuiButton button;
            switch(spieler){
                case 0:
                    value = spieler;
                    button.setIcon(null);
                    break;
                case 1:
                    value = spieler;
                    button.setIcon(X);
                    break;
                case 2:
                    value = spieler;
                    button.setIcon(O);
                    break;
            }
        }
    }

    public class Controller {
    }

    public class View{
    }

    public void checkforset(Model model) {
        if (model.getValueAt(0) == 1 || model.getValueAt(0) == 2) {
            develForm.button_0.setEnabled(false);
        }
        if (model.getValueAt(1) == 1 || model.getValueAt(1) == 2) {
            develForm.button_1.setEnabled(false);
        }
        if (model.getValueAt(2) == 1 || model.getValueAt(2) == 2) {
            develForm.button_2.setEnabled(false);
        }
        if (model.getValueAt(3) == 1 || model.getValueAt(3) == 2) {
            develForm.button_3.setEnabled(false);
        }
        if (model.getValueAt(4) == 1 || model.getValueAt(4) == 2) {
            develForm.button_4.setEnabled(false);
        }
        if (model.getValueAt(5) == 1 || model.getValueAt(5) == 2) {
            develForm.button_5.setEnabled(false);
        }
        if (model.getValueAt(6) == 1 || model.getValueAt(6) == 2) {
            develForm.button_6.setEnabled(false);
        }
        if (model.getValueAt(7) == 1 || model.getValueAt(7) == 2) {
            develForm.button_7.setEnabled(false);
        }
        if (model.getValueAt(8) == 1 || model.getValueAt(8) == 2) {
            develForm.button_8.setEnabled(false);
        }
    }

    public boolean checkforwin(Model model) {
        //XButton
        if (((model.getValueAt(0) == 1) && (model.getValueAt(1) == 1) && (model.getValueAt(2) == 1)) || ((model.getValueAt(0) == 2) && (model.getValueAt(1) == 2) && (model.getValueAt(2) == 2))) {
            return true;
        } else if (((model.getValueAt(3) == 1) && (model.getValueAt(4) == 1) && (model.getValueAt(5) == 1)) || ((model.getValueAt(3) == 2) && (model.getValueAt(4) == 2) && (model.getValueAt(5) == 2))) {
            return true;
        } else if (((model.getValueAt(6) == 1) && (model.getValueAt(7) == 1) && (model.getValueAt(8) == 1)) || ((model.getValueAt(6) == 2) && (model.getValueAt(7) == 2) && (model.getValueAt(8) == 2))) {
            return true;
        } else if (((model.getValueAt(0) == 1) && (model.getValueAt(3) == 1) && (model.getValueAt(6) == 1)) || ((model.getValueAt(0) == 2) && (model.getValueAt(3) == 2) && (model.getValueAt(6) == 2))) {
            return true;
        } else if (((model.getValueAt(1) == 1) && (model.getValueAt(4) == 1) && (model.getValueAt(7) == 1)) || ((model.getValueAt(1) == 2) && (model.getValueAt(4) == 2) && (model.getValueAt(7) == 2))) {
            return true;
        } else if (((model.getValueAt(2) == 1) && (model.getValueAt(5) == 1) && (model.getValueAt(8) == 1)) || ((model.getValueAt(2) == 2) && (model.getValueAt(5) == 2) && (model.getValueAt(8) == 2))) {
            return true;
        } else if (((model.getValueAt(0) == 1) && (model.getValueAt(4) == 1) && (model.getValueAt(8) == 1)) || ((model.getValueAt(0) == 2) && (model.getValueAt(4) == 2) && (model.getValueAt(8) == 2))) {
            return true;
        } else if (((model.getValueAt(2) == 1) && (model.getValueAt(4) == 1) && (model.getValueAt(6) == 1)) || ((model.getValueAt(2) == 2) && (model.getValueAt(4) == 2) && (model.getValueAt(6) == 2))) {
            return true;
        } else {
            return false;
        }
    }

    //Buttons
    public void clickedButton0(Event event) {
        clickedButton((GuiButton)event.getSource(), 0);
    }
    public void clickedButton1(Event event) {
        clickedButton((GuiButton)event.getSource(), 1);
    }
    public void clickedButton2(Event event) {
        clickedButton((GuiButton)event.getSource(), 2);
    }
    public void clickedButton3(Event event) {
        clickedButton((GuiButton)event.getSource(), 3);
    }
    public void clickedButton4(Event event) {
        clickedButton((GuiButton)event.getSource(), 4);
    }
    public void clickedButton5(Event event) {
        clickedButton((GuiButton)event.getSource(), 5);
    }
    public void clickedButton6(Event event) {
        clickedButton((GuiButton)event.getSource(), 6);
    }
    public void clickedButton7(Event event) {
        clickedButton((GuiButton)event.getSource(), 7);
    }
    public void clickedButton8(Event event) {
        clickedButton((GuiButton)event.getSource(), 8);
    }

    public void clickedButton(GuiButton button,int modelIdx) {




        this.model.setValueAt(modelIdx, spieler);
        checkforset(model);
        button.setEnabled(false);

        if (checkforwin(model)) {
            develForm.panel_0.setEnabled(false);
            develForm.label_2.setText("Gewinner ist Spieler 1");
        } else if (!checkforwin(model) && (icounter >= 8)) {
            develForm.panel_0.setEnabled(false);
            develForm.label_2.setText("Unentschieden!");
        } else {
            checkforset(model);
            ki();
            checkforset(model);

            if (checkforwin(model)) {
                develForm.panel_0.setEnabled(false);
                develForm.label_2.setText("Gewinner ist KI");
            } else if (!checkforwin(model) && (icounter >= 8)) {
                develForm.panel_0.setEnabled(false);
                develForm.label_2.setText("Unentschieden!");
            }
        }
        icounter++;
    }

    //KI
    public void ki() {
        GuiButton move = null;

        move = winorblock(2);
        if (move == null){
            move = winorblock(1);
            if(move == null){
                move = corner();
                if ((move == null)){
                    move = space();
                    if(move == null){
                        develForm.label_2.setText("Unentschieden!");
                    }else{
                        move.setXO(2);
                    }
                } else {
                    model.setXO(2);
                }
            } else {
                model.setXO(2);
            }
        } else {
            model.setXO(2);
        }
    }
 

Jardcore

Top Contributor
Kannst du vielleicht mal die Fehlermeldung posten?
Normalerweise weist man Werte wie folgt zu:
Java:
int[] intArray1 = new int[5];
intArray1[0] = 1;
intArray1[1] = 2;
intArray1[2] = 3;
intArray1[3] = 4;
intArray1[4] = 5;
// oder

int[] intArray2 = new int[] {1,2,3,4,5};
// oder

int[] intArray3 = new int[5];
for(int index = 0; index < intArray3.lenght; index++) {
    intArray3[index] = index + 1;
}
Wie es aussieht, ist das aber nicht das Problem.

hatte es schon versucht die Spieler auch in ein Array reinzuwerfen was aber auch nicht so wirklich geklappt hat
Hört sich auch nach raten an und nicht an effektiven Arbeiten.
TicTacToe ist ja auch nicht das schwierigste Spiel. Dein Code sieht zu dem auch nicht super und gut strukturiert aus. Wenn du eine gute Struktur hinein bekommst, passieren diese "magischen" Fehler vermutlich auch nicht.
 
Zuletzt bearbeitet:

4a616e

Mitglied
Die Fehler meldung sagt Folgendes:

Bei value = spieler; in setXo , was dementsprechen in ki() einen Fehler gibt bei move.setXO
Incompatibel Types.Requiered Int[] Found Int.

Das mit der Zuweisung ist mir Bewusst, sollte es laut Angaben meines Ausbilders jedoch so lösen. Und da ich eh nur dieses, hoffentlich recht kleine Problem habe, und sonst alle weitere funktioniert bin ich soweit auch ganz glücklich.
Das ganze Erzeugen mit der for Schleife wird hierbei von unserem GUI-Designer selbst weiter Unten geschrieben den Part darf/kann ich leider nicht zeigen (wegen interenen Klassen, Designs etc.) und dieser wäre auch etwas zu lang (ca 400 zeilen).
 

4a616e

Mitglied
Ja soweit war ich auch schon aber ich muss das ganze ja in dem Sinne verallgemeinern dass er den Array Value nicht an einer zugewiesenen Stelle, sondern an der Stelle wo der Button geklickt wurde setzten soll.
 

VfL_Freak

Top Contributor
Moin,
ich muss das ganze ja in dem Sinne verallgemeinern dass er den Array Value nicht an einer zugewiesenen Stelle, sondern an der Stelle wo der Button geklickt wurde setzten soll.
Ehrlich gesagt: keine Ahnung, was Du damit ausdrücken willst ..... :eek:

Fakt ist (und genau das besagt die Fehlermeldung), das Du, wenn Du einen Wert in ein Array einfügen willst, einen Index angeben MUSST !!!
Anders geht es nun mal nicht ..... :oops:

Gruß Klaus
 

Joose

Top Contributor
verallgemeinern dass er den Array Value nicht an einer zugewiesenen Stelle, sondern an der Stelle wo der Button geklickt wurde setzten soll.
Ja dazu musst du aber irgendwo festlegen welcher JButton für welchen Index "zuständig" ist. Du könntest zum Beispiel den JButtons ein ActionCommand setzen welches den Index beinhaltet.
Im ActionListener fragst du das ActionCommand ab und weißt welcher Index gesetzt werden soll.
 

4a616e

Mitglied
@ Vfl_Freak Mein Gedanke war (Fehlermeldung dabei nicht beachten): Ich klicke einen zufälligen Button der dann (durch den Wert des Spielers (1) + switch case) den Value 1 und somit ein Icon X bekomt, das selbe dann über die ki die ja .setXO(2) hat. Heißt ki geht erst alle Prüfungen durch und setzt dann den Value 2 auf den Button der bei der Prüfung rauskam den Value 2 bzw dann das O Icon.

Und somit war mein Gedanke dass ich dem Value = Spieler keinen festen Index angeben darf weil dieser doch sonst Immer auf genau dieser Index-Position den Wert einsetzt und nicht woanders.



@Joose
Okay ich werds mal so probieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
LucasGlockner Effizienter byte-Zugriff auf ein long[]-Array Allgemeine Java-Themen 8
8u3631984 Frage Performance bei Linked List und Array List Allgemeine Java-Themen 5
M Queue mit einem Array implemetieren Allgemeine Java-Themen 16
M Array Rang eines Elements Allgemeine Java-Themen 4
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
noah1407 Array Allgemeine Java-Themen 3
D Methoden Teil-Array mit Maximalwert bestimmen Allgemeine Java-Themen 23
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
N zweidimensionalen Array in dreidimensionalen Array speichern Allgemeine Java-Themen 4
N Schnellste Methode, ein Array durchzugehen? Allgemeine Java-Themen 9
T Objekt Array Aufgabe mit Busdatenbank Allgemeine Java-Themen 2
L Array und Index Allgemeine Java-Themen 26
L die 3 größten Zahlen im Array Allgemeine Java-Themen 1
G jToggleButton in Array/ArrayList Allgemeine Java-Themen 12
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
Willi.We Array sortieren Allgemeine Java-Themen 5
gotzi242 Array Summe bestimmen tipps? Allgemeine Java-Themen 14
H Matrix ohne Array erstellen Allgemeine Java-Themen 9
Aboya Char Array rekursiv vergleichen Allgemeine Java-Themen 15
V4ll3.Wff Array in Java Allgemeine Java-Themen 4
Noahscript Aus einem byte Array Steuerungszeichen und Code bekommen und ersetzen Allgemeine Java-Themen 3
H Array Sportschütze Allgemeine Java-Themen 6
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
M Array verändern Allgemeine Java-Themen 1
A JavaFX 2 dimensionales array Allgemeine Java-Themen 1
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Array dynamisieren oder ArrayList verwenden? Allgemeine Java-Themen 17
M Java 2D Array für ein Grid erstellen ? Allgemeine Java-Themen 2
H Array mit dem Datentype String[] initializieren Allgemeine Java-Themen 7
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
E Datentypen Wie kann ich die Längen der unterschiedlichen Ebenen aus einem Objekt lesen von dem ich weiß, dass es ein mehrdimensionaler Array ist? Allgemeine Java-Themen 3
N Byte Array in Java "dekomprimieren" Allgemeine Java-Themen 3
parrot Array Aufgabe Allgemeine Java-Themen 3
N String Array Eingabe Allgemeine Java-Themen 6
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
N Variablen Array Länge ändern. Allgemeine Java-Themen 8
D Kgv aller Paare aus einem Array mit n integer berechnen Allgemeine Java-Themen 5
W Enumeration ein Array/List als Eigenschaft mitgeben - warum geht das nicht? Allgemeine Java-Themen 0
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
A Array Problem Allgemeine Java-Themen 8
Drachenbauer Wie stelle ich fest, ob ein Objekt in meinem Array vorkommt? Allgemeine Java-Themen 5
F Datei in String-Array einlesen Allgemeine Java-Themen 8
L Objekt aus Objekt-array "löschen" Allgemeine Java-Themen 2
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
X Größten Werte in meinem Array löschen? Allgemeine Java-Themen 16
E Angabe wie groß Array sein soll und in for-schleifen diesen Array füllen Allgemeine Java-Themen 3
F 3 Dimensionales Array mit Allgemeine Java-Themen 9
M Steueralgorithmus verwandelt Array in Anfangszustand Allgemeine Java-Themen 9
W Array vs. ArrayList vs. HashMap Allgemeine Java-Themen 20
D Datentypen 2-3 Baum erstellen mit geordnetem int-array Allgemeine Java-Themen 0
T Objekt in Array packen Allgemeine Java-Themen 6
M Zahlen in Array anordnen Allgemeine Java-Themen 8
M Eclipse Unvollständigen Array ansteuern Allgemeine Java-Themen 2
D Erste Schritte Im Array Werte tauschen Allgemeine Java-Themen 5
Xge For/Array Error: IndexOutOfBounds Allgemeine Java-Themen 4
M Wie kann ich ein int[] Array in einer Methode benutzen? Allgemeine Java-Themen 6
FRI3ND Datentypen Date-Array sortieren - Text mitnehmen? Allgemeine Java-Themen 7
D Integer-Array variabler Größe mit Zahlen befüllen (Schleifen) Allgemeine Java-Themen 0
J Variablen Array ertellen bei model.put Allgemeine Java-Themen 13
S Eindimensionales Array in zweidimensionales Array speichern Allgemeine Java-Themen 5
R convert 2d array list to 2d array Allgemeine Java-Themen 1
J json Array würfel Spalten durcheinander Allgemeine Java-Themen 9
MiMa Array umbau oder Alternative? Allgemeine Java-Themen 5
L Datentypen 3D Array Allgemeine Java-Themen 3
M 2D Array mit unterschiedlichen Längen erstellen und befüllen Allgemeine Java-Themen 11
Mario1409 Methoden JSON Array von URL Allgemeine Java-Themen 8
E Swing Array mit Bildern in GUI darstellen Allgemeine Java-Themen 2
P Array einer abstrakten Klasse Allgemeine Java-Themen 4
H Zweidimensionales Array - Zellen der Tabelle verbinden Allgemeine Java-Themen 2
M Zweidimensionales Array mit Binärzahlen füllen Allgemeine Java-Themen 8
M Array aus Thread Objekten erstellen Allgemeine Java-Themen 2
kodela Dynamisches Array in einer Klasse Allgemeine Java-Themen 5
G Array ohne Aufzählungszeichen ausgeben Allgemeine Java-Themen 6
J Wie kann ich ein Java Array als Säulendiagramm ausgeben? Allgemeine Java-Themen 2
Z 2D Array Pixels reparieren Allgemeine Java-Themen 2
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
B Polibios Array erweitern Allgemeine Java-Themen 1
R Index in einem Array löschen Allgemeine Java-Themen 10
R Index in einem Array löschen Allgemeine Java-Themen 2
U Methoden Algorithmus MergeSort String [ ] array sortieren programmieren Allgemeine Java-Themen 17
J Array-List Bubble-Sort Allgemeine Java-Themen 12
J Array Allgemeine Java-Themen 8
Z Array mit unterschiedlichen Werten Allgemeine Java-Themen 1
L sortiertes Array im main aufrufen klappt nicht. Allgemeine Java-Themen 3
O Mein JButton Array funktioniert nicht Allgemeine Java-Themen 3
A Mit dem letzten bis zum ersten Wert aus Array rechnen Allgemeine Java-Themen 15
A Vector Strings in Array splitten Allgemeine Java-Themen 6
I Muster in Array suchen Allgemeine Java-Themen 10
RalleYTN Datentypen Herausfinden ob Object ein Array ist ohne den Typen des Arrays zu kennen? Allgemeine Java-Themen 12
S Variablen String[] Array per schleife in int[] einlesen Allgemeine Java-Themen 8
B Zahlen manuell eingeben und in Array Speichern Allgemeine Java-Themen 2
R Wärmeleitung, 3d-Array Allgemeine Java-Themen 2
T Java Array in Methoden Allgemeine Java-Themen 1
D Erste Schritte Array von einer forschleife nach ausserhalb trasferieren Allgemeine Java-Themen 3
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
T Array in .txt oder .xml? Allgemeine Java-Themen 15

Ähnliche Java Themen

Neue Themen


Oben