Fehler bei TicTacToe

info=)

Mitglied
Hallo,
ich muss nächste Woche ein Schulprojekt abgeben, in dem es darum geht ein TicTacToe-Spiel in BlueJ zu programmieren. Leider ist dabei jetzt ein Fehler aufgetreten und ich weiß ehrlich gesagt nicht, woran es liegt.
Ich hoffe, ihr könnt mir dabei helfen. =)

Ich habe die Klassen SPIEL, SPIELER und SPIELFELD erstellt, als Hilfe waren die Klassen Kreis, Dreieck und Leinwand schon vorgegeben.
Die Attributdeklaration sieht folgendermaßen aus:
SPIEL:
Java:
private SPIELER aktuellerSpieler;
private SPIELFELD spielfeld1;
private SPIELFELD [] aktuellesSpielfeld;
private SPIELER spieler1;
private SPIELER spieler2;

und der Konstruktor von SPIEL:

Java:
public SPIEL(SPIELER NeuerSpieler1,SPIELER NeuerSpieler2){
spieler1=NeuerSpieler1;
spieler2=NeuerSpieler2;
spieler1.SpielBekanntmachen(this);
spieler2.SpielBekanntmachen(this);
spielfeld1=new SPIELFELD();
spielfeld1.SpielbrettZeichnen();
spieler1.SpielsymbolSetzen(1);
spieler2.SpielsymbolSetzen(2);
aktuellesSpielfeld=new SPIELFELD();
}

SPIELER:
Java:
public SPIEL spiel1;
public String name;
public int spielsymbol;

SPIELFELD:
Java:
private int [] spielfeld;
private SPIEL aktuellesSpiel;
private SPIELER spieler;

Jetzt erhalte ich beim Übersetzen aber die Fehlermeldung 'incompatible types' für die Zeile
Code:
aktuellesSpielfeld=new SPIELFELD();
. Könnt ihr mir helfen, das zu beheben?

Für Eure Hilfe schon einmal Vielen Dank im Voraus!
 

pl4gu33

Top Contributor
private SPIELFELD [] aktuellesSpielfeld;

aktuellesSpielfeld=new SPIELFELD();


da liegt der Fehler du willst dem Array ein Spielfeld zuweisen :)

du musst dem Spielfeld schon ein Array geben wie z.b.

aktuellesSpielfeld =new SPIELFELD[5]; oder so ...
 
Zuletzt bearbeitet:

info=)

Mitglied
Oh, ja, danke.
Ich habe allerdings jetzt noch eine andere Frage/ bzw. ein anderes Problem:
In einer Methode habe ich folgenden Code programmiert:
Java:
public void SpielzugVerarbeiten(int feldnummer){
int symbol;
symbol=aktuellerSpieler.SpielsymbolGeben();
if(aktuellesSpielfeld[feldnummer]==null){
    aktuellesSpielfeld[feldnummer]=symbol;
    spielfeld1.NeuGesetztenSteinZeichnen(feldnummer);
}else{
    System.out.println("Das gewählte Feld ist leider bereits besetzt!");
}
...
[/Java]
Für die Zeile [c] aktuellesSpielfeld[feldnummer]=symbol;
kommt diese Fehlermeldung auch. Was muss ich ändern?
 

njans

Top Contributor
Java:
SPIELFELD [] aktuellesSpielfeld;
aktuellesSpielfeld ist ein Array vom Typ SPIELFELD. Da musst du dann auch Objekte vom Typ SPIELFELD reinpacken ;)
ints gehören da eben dann nicht rein.
 

pl4gu33

Top Contributor
Java:
aktuellesSpielfeld[feldnummer]=symbol;

aktuellesSpielfeld[...] kann nur Spielfelder aufnehmen, du versuchst symbol(was ein int ist soweit ich das sehe) zu zuweisen

[EDIT]zu spät :)[/EDIT]
 

info=)

Mitglied
Ja aber dann (wenn ich symbol vom typ SPIELFELD schreibe) kann ich SpielsymbolGeben() nicht mehr zuweisen. Wie könnte ich das dann lösen?
 
Zuletzt bearbeitet:

njans

Top Contributor
Java:
private SPIELFELD spielfeld1;
private SPIELFELD [] aktuellesSpielfeld;

Die beiden variablen wundern mich. Wieso ist denn da ein Spielfeld und dann noch ein Spielfeld-Array? Reicht es nicht, wenn du aus aktuellesSpielfeld ein int array machst und dann einfach nur Einträge der Form hast: 0 = kein Spieler, 1 = Spieler1, 2 = Spieler2 ?
 

info=)

Mitglied
Danke.
Leider ist noch ein Fehler aufgetreten:
Ich habe noch folgende Methoden angelegt:
in SPIELER:
Java:
public void SpielzugAusführen(int feldnummer){
spiel1.SpielzugVerarbeiten(feldnummer);

}

in SPIELFELD:
Java:
public void NeuGesetztenSteinZeichnen(int feldnummer){
spieler.SpielzugAusführen(feldnummer);
if(spielfeld[feldnummer]==1){
    if(feldnummer==1){
        aktuellesSpiel.DreieckLinksOben();
    }
    if(feldnummer==2){
        aktuellesSpiel.DreieckMitteOben();
    }

usw...



Wenn ich das jetzt ausprobiere, erhalte ich für die Zeile [c]spieler.SpielzugAusführen(feldnummer); [/c] die Fehlermeldung:java.lang.NullPointerException:null.
Wo liegt der Fehler?
 

AquaBall

Top Contributor
?
Kannst du mir das genauer erklären?

Warum dein
Code:
spieler == null
ist kann ich nicht sagen, dazu hast du zu wenig code gezeigt.

... weiter oben weist du zwar spieler1=NeuerSpieler1 zu, aber auch ohne Erklärung wo das herkommt.
Und "spieler" kann ich nirgends entdecken.
(PS: das sollte neuerSpieler1 heißen - lowerCamelCase)
 
Zuletzt bearbeitet:

info=)

Mitglied
'spieler' wird in SPIELFELD als Attribut deklariert:
Java:
private int [] spielfeld;
private SPIEL aktuellesSpiel;
private SPIELER spieler;

Die Wertzuweisung kommt aus dem Konstruktor von SPIEL.
 

info=)

Mitglied
@ AquaBall
In SPIEL lege ich spieler1 als Attribut an und weise ihm dann über den Paramater im Konstruktor NeuerSpieler1 zu, dann kann ich beim Anlegen von jedem Objekt den Namen individuell eingeben. Stimmt doch, oder?
Aber wie bekomme ich jetzt die NullPointerException raus?
 

AquaBall

Top Contributor
In SPIEL lege ich spieler1 als Attribut an und weise ihm dann über den Paramater im Konstruktor NeuerSpieler1 zu, dann kann ich beim Anlegen von jedem Objekt den Namen individuell eingeben. Stimmt doch, oder?

Ich versteh nicht, wie du das meinst.
Natürlich kannst du jeden Objekt einen beliebigen Namen geben.
aber anlegen musst du es, und Wert zuweisen.
 

info=)

Mitglied
Ich schick den Code als PN, da wir in der Parallelklasse mal einen ähnlichen Fall hatten, wo mehr Leute ins Internet geschaut haben und dann alle die gleiche Lösung hatten. Es gab ne 6 für alle, weil niemand sagen konnte oder wollte, wer denn abgeschrieben hat.
Bin jetzt fast fertig mit dem Projekt und will kein Risiko mehr eingehen.
 

pl4gu33

Top Contributor
in SPIELFELD:
Java:
public void NeuGesetztenSteinZeichnen(int feldnummer){
spieler.SpielzugAusführen(feldnummer);
if(spielfeld[feldnummer]==1){
    if(feldnummer==1){
        aktuellesSpiel.DreieckLinksOben();
    }
    if(feldnummer==2){
        aktuellesSpiel.DreieckMitteOben();
    }

usw...


das hast du gepostet und wir wollen einfach nur sehen, wo du den spieler in Spielfeld einen Wert zuweist,... weil von allein nimmt der keinen Wert an :)
 

info=)

Mitglied
soll ich die Zuweisung im Konstruktor machen? Dann müsste ich aber in SPIEL vieles ändern, weil ich da ja Referenzattribute habe.
Wäre es irgendwie möglich den Wert von aktuellerSpieler in SPIELFELD zu übertragen und spieler zuzuweisen?
 

AquaBall

Top Contributor
Solange du keinen Code postest können wir kaum helfen.

Schon allein die Frage, ob du mit spieler den spieler1 oder spieler2 meinst, ist ja nicht klar.
irgendwo muss halt stehen:
Java:
spieler =...

Poste den Code-Ausschnitt, und dokumentier meinetwegen deinem Lehrer, dass hier gelernt hast, und nicht abgeschrieben.
 

pl4gu33

Top Contributor
du kannst es z.b. so machen :

Java:
public void NeuGesetztenSteinZeichnen(int feldnummer, Spieler sp){
sp.SpielzugAusführen(feldnummer);
if(spielfeld[feldnummer]==1){
    if(feldnummer==1){
        aktuellesSpiel.DreieckLinksOben();
    }
    if(feldnummer==2){
        aktuellesSpiel.DreieckMitteOben();
    }

du übergibst den Spieler einfach in der Methode

oder halt wirklich den Spieler vorher zuweisen
 
Zuletzt bearbeitet:

info=)

Mitglied
Vielen Dank, das konnte ich soweit jetzt umsetzen. Hab noch ein paar Ungenauigkeiten gefunden, um die ich mich jetzt kümmern muss, sollte allerdings klappen.
Sollte noch ein Problem auftauchen, werde ich mich nochmal melden. :)
 

info=)

Mitglied
Hallo,
wie gesagt habe ich heute mein Projekt nochmal verbessert - was ja auch relativ gesehen ist - aber es läuft immer noch nicht richtig.
Sobald ich auf SpielzugAusführen(int feldnummer) eines Spielerobjekts klicke, kommt in der Konsole folgende Meldung:
Das gewählte Feld ist leider bereits besetzt!
Mike , jetzt bist du dran. Bitte wähle ein neues Feld aus!
Anna , jetzt bist du dran. Bitte wähle ein neues Feld aus!

Das kann irgendwie nicht stimmen, zumal auch nie ein Spielsymbol gezeichnet wird.

Könnt ihr bitte über meinen kompletten Code vielleicht nochmal drüberschauen und die Programmierfehler darin finden?
Im Moment bin ich mit meinem Latein echt am Ende, aber die Note auf das Projekt ist echt ein wesentlicher Bestandteil für die auf meinem Abschlusszeugnis und daher schon wichtig.
Vielen, vielen Dank für Eure Mühe!

Ach ja, der Code:

SPIEL:
Java:
public class SPIEL {

private SPIELER aktuellerSpieler;
private SPIELFELD spielfeld1;
private int [] aktuellesSpielfeld;
private SPIELER spieler1;
private SPIELER spieler2;


private Dreieck spielfigur1;
private Dreieck spielfigur2;
private Dreieck spielfigur3;
private Dreieck spielfigur4;
private Dreieck spielfigur5;
private Dreieck spielfigur6;
private Dreieck spielfigur7;
private Dreieck spielfigur8;
private Dreieck spielfigur9;

private Kreis spielfigur10;
private Kreis spielfigur11;
private Kreis spielfigur12;
private Kreis spielfigur13;
private Kreis spielfigur14;
private Kreis spielfigur15;
private Kreis spielfigur16;
private Kreis spielfigur17;
private Kreis spielfigur18;



public SPIEL(SPIELER NeuerSpieler1,SPIELER NeuerSpieler2){
spieler1=NeuerSpieler1;
spieler2=NeuerSpieler2;
spieler1.SpielBekanntmachen(this);
spieler2.SpielBekanntmachen(this);
spielfeld1=new SPIELFELD();
spielfeld1.SpielbrettZeichnen();
spieler1.SpielsymbolSetzen(1);
spieler2.SpielsymbolSetzen(2);
aktuellesSpielfeld=new int [9];
}

private void SpielfeldZeichnen(){
spielfigur1=new Dreieck(60, 60, 50, 20, "gelb");
spielfigur2=new Dreieck(60, 60, 120, 20, "gelb");
spielfigur3=new Dreieck(60, 60, 190, 20, "gelb");
spielfigur4=new Dreieck(60, 60, 190, 90, "gelb");
spielfigur5=new Dreieck(60, 60, 120, 90, "gelb");
spielfigur6=new Dreieck(60, 60, 50, 90, "gelb");
spielfigur7=new Dreieck(60, 60, 120, 160, "gelb");
spielfigur8=new Dreieck(60, 60, 50, 160, "gelb");
spielfigur9=new Dreieck(60, 60, 190, 160, "gelb");


spielfigur10=new Kreis(60, 50, 20, "blau");
spielfigur11=new Kreis(60, 120, 20, "blau");
spielfigur12=new Kreis(60, 190, 20, "blau");
spielfigur13=new Kreis(60, 190, 90, "blau");
spielfigur14=new Kreis(60, 120, 90, "blau");
spielfigur15=new Kreis(60, 50, 90, "blau");
spielfigur16=new Kreis(60, 120, 160, "blau");
spielfigur17=new Kreis(60, 50, 160, "blau");
spielfigur18=new Kreis(60, 190, 160, "blau");

}

public void DreieckLinksOben(){
spielfigur1=new Dreieck(60, 60, 50, 20, "gelb");
}
public void DreieckMitteOben(){
spielfigur2=new Dreieck(60, 60, 120, 20, "gelb");
}
public void DreieckRechtsOben(){
spielfigur3=new Dreieck(60, 60, 190, 20, "gelb");
}
public void DreieckMitteRechts(){
spielfigur4=new Dreieck(60, 60, 190, 90, "gelb");
}
public void DreieckMitteMitte(){
spielfigur5=new Dreieck(60, 60, 120, 90, "gelb");
}
public void DreieckMitteLinks(){
spielfigur6=new Dreieck(60, 60, 50, 90, "gelb");
}
public void DreieckMitteUnten(){
spielfigur7=new Dreieck(60, 60, 120, 160, "gelb");
}
public void DreieckLinksUnten(){
spielfigur8=new Dreieck(60, 60, 50, 160, "gelb");
}
public void DreieckRechtsUnten(){
spielfigur9=new Dreieck(60, 60, 190, 160, "gelb");
}


public void KreisLinksOben(){
spielfigur10=new Kreis (60, 20, 20, "blau");
}
public void KreisMitteOben(){
spielfigur11=new Kreis(60, 90, 20, "blau");
}
public void KreisRechtsOben(){
spielfigur12=new Kreis(60, 160, 20, "blau");
}
public void KreisMitteRechts(){
spielfigur13=new Kreis(60, 160, 90, "blau");
}
public void KreisMitteMitte(){
spielfigur14=new Kreis(60, 90, 90, "blau");
}
public void KreisMitteLinks(){
spielfigur15=new Kreis(60, 20, 90, "blau");
}
public void KreisMitteUnten(){
spielfigur16=new Kreis(60, 90, 160, "blau");
}
public void KreisLinksUnten(){
spielfigur17=new Kreis(60, 20, 160, "blau");
}
public void KreisRechtsUnten(){
spielfigur18=new Kreis(60, 160, 160, "blau");
}





public void SpielStarten(){
aktuellerSpieler=spieler1;
spielfeld1.SpielbrettZeichnen();
System.out.println("Spiel beginnt!");
String name;
name=aktuellerSpieler.NameGeben();
System.out.println(name  +  " beginnt! ");
}


public void SpielzugVerarbeiten(int feldnummer){
int symbol;
symbol=aktuellerSpieler.SpielsymbolGeben();
if(aktuellesSpielfeld[feldnummer]==0){
    aktuellesSpielfeld[feldnummer]=symbol;
    spielfeld1.NeuGesetztenSteinZeichnen(feldnummer, aktuellerSpieler);
}else{
    System.out.println("Das gewählte Feld ist leider bereits besetzt!");
}

if(SpielendeTesten()){
    String text;
    text = aktuellerSpieler.NameGeben();
    System.out.println(text  +  " , du hast das Spiel gewonnen. Herzlichen Glückwunsch!");
}else{
    if(aktuellerSpieler==spieler1){
        aktuellerSpieler=spieler2;
    }else{
        aktuellerSpieler=spieler1;
    }
    String neu=aktuellerSpieler.NameGeben();
    System.out.println(neu + " , jetzt bist du dran. Bitte wähle ein neues Feld aus!");
}
}


public boolean SpielendeTesten(){
boolean prüfung;
prüfung=false;
if(aktuellesSpielfeld[0]!=0){
if(aktuellesSpielfeld[4]!=0){
if(aktuellesSpielfeld[8]!=0){
if( aktuellesSpielfeld[0]==aktuellesSpielfeld[1] && aktuellesSpielfeld[1]==aktuellesSpielfeld[2]){
    prüfung=true;
    System.out.println("Das Spiel ist beendet!");
}else{
    if( aktuellesSpielfeld[3]==aktuellesSpielfeld[4] && aktuellesSpielfeld[4]==aktuellesSpielfeld[5]){
    prüfung=true;
    System.out.println("Das Spiel ist beendet!");
    }else{
        if( aktuellesSpielfeld[6]==aktuellesSpielfeld[7] && aktuellesSpielfeld[7]==aktuellesSpielfeld[8]){
            prüfung=true;
            System.out.println("Das Spiel ist beendet!");
        }else{
            if( aktuellesSpielfeld[0]==aktuellesSpielfeld[3] && aktuellesSpielfeld[3]==aktuellesSpielfeld[6]){
                prüfung=true;
                System.out.println("Das Spiel ist beendet!");
            }else{
                if( aktuellesSpielfeld[1]==aktuellesSpielfeld[4] && aktuellesSpielfeld[4]==aktuellesSpielfeld[7]){
                    prüfung=true;
                    System.out.println("Das Spiel ist beendet!");
                }else{
                    if( aktuellesSpielfeld[2]==aktuellesSpielfeld[5] && aktuellesSpielfeld[5]==aktuellesSpielfeld[8]){
                        prüfung=true;
                        System.out.println("Das Spiel ist beendet!");
                    }else{
                        if( aktuellesSpielfeld[0]==aktuellesSpielfeld[4] && aktuellesSpielfeld[4]==aktuellesSpielfeld[8]){
                            prüfung=true;
                            System.out.println("Das Spiel ist beendet!");
                        }else{
                            if( aktuellesSpielfeld[2]==aktuellesSpielfeld[4] && aktuellesSpielfeld[4]==aktuellesSpielfeld[6]){
                                prüfung=true;
                                System.out.println("Das Spiel ist beendet!");
                            }else{
                                System.out.println("Es steht noch kein Sieger fest!");
                            }
                        }
                    }
                }
            }
        }
    }
}
}
}
}
return prüfung;
}
}

SPIELER:
Java:
public class SPIELER{

public SPIEL spiel1;
public String name;
public int spielsymbol;
public SPIELFELD spielfeldJetzt;

 


public SPIELER(String NeuerName){
name=NeuerName;
}

public void SpielBekanntmachen(SPIEL spiel){
spiel1=spiel;
}


public void SpielsymbolSetzen(int symbol){
spielsymbol=symbol;
}

public String NameGeben(){
return name;
}

public int SpielsymbolGeben(){
return spielsymbol;
}

public void SpielzugAusführen(int feldnummer){
spiel1.SpielzugVerarbeiten(feldnummer);
}
}

SPIELFELD:
Java:
public class SPIELFELD{

private int [] spielfeld;
private SPIEL aktuellesSpiel;
private SPIELER spieler;
private Quadrat hintergrund;
private Quadrat quadrat1;
private Quadrat quadrat2;
private Quadrat quadrat3;
private Quadrat quadrat4;
private Quadrat quadrat5;
private Quadrat quadrat6;
private Quadrat quadrat7;
private Quadrat quadrat8;
private Quadrat quadrat9;




public SPIELFELD(){
spielfeld=new int [9];

for (int i=0; i<9; i++){
spielfeld[i]=0;
}
SpielbrettZeichnen();
}

public void BelegungAendern(int feldnummer, int spielfigur){
if (spielfeld[feldnummer]==0){
spielfeld[feldnummer]=spielfigur;
}else{
System.out.println("Das gewünschte Feld ist leider bereits belegt!");
}

}

public void SpielbrettZeichnen(){
hintergrund= new Quadrat(220, 10, 10, "schwarz");
quadrat1=new Quadrat (60, 20, 20, "rot");
quadrat2=new Quadrat (60, 90, 20, "rot");
quadrat3=new Quadrat (60, 160, 20, "rot");
quadrat4=new Quadrat (60, 160, 90, "rot");
quadrat5=new Quadrat (60, 90, 90, "rot");
quadrat6=new Quadrat (60, 20, 90, "rot");
quadrat1=new Quadrat (60, 90, 160, "rot");
quadrat1=new Quadrat (60, 20, 160, "rot");
quadrat1=new Quadrat (60, 160, 160, "rot");



}

public void NeuGesetztenSteinZeichnen(int feldnummer, SPIELER sp){
sp.SpielzugAusführen(feldnummer);
if(spielfeld[feldnummer]==1){
    if(feldnummer==1){
        aktuellesSpiel.DreieckLinksOben();
    }
    if(feldnummer==2){
        aktuellesSpiel.DreieckMitteOben();
    }
    if(feldnummer==3){
        aktuellesSpiel.DreieckRechtsOben();
    }
    if(feldnummer==4){
        aktuellesSpiel.DreieckMitteLinks();
    }
    if(feldnummer==5){
        aktuellesSpiel.DreieckMitteMitte();
    }
    if(feldnummer==6){
        aktuellesSpiel.DreieckMitteRechts();
    }
    if(feldnummer==7){
        aktuellesSpiel.DreieckLinksUnten();
    }
    if(feldnummer==8){
        aktuellesSpiel.DreieckMitteUnten();
    }
    if(feldnummer==9){
        aktuellesSpiel.DreieckRechtsUnten();
    }
}

if(spielfeld[feldnummer]==2){
    if(feldnummer==1){
        aktuellesSpiel.KreisLinksOben();
    }
    if(feldnummer==2){
        aktuellesSpiel.KreisMitteOben();
    }
    if(feldnummer==3){
        aktuellesSpiel.KreisRechtsOben();
    }
    if(feldnummer==4){
        aktuellesSpiel.KreisMitteLinks();
    }
    if(feldnummer==5){
        aktuellesSpiel.KreisMitteMitte();
    }
    if(feldnummer==6){
        aktuellesSpiel.KreisMitteRechts();
    }
    if(feldnummer==7){
        aktuellesSpiel.KreisLinksUnten();
    }
    if(feldnummer==8){
        aktuellesSpiel.KreisMitteUnten();
    }
    if(feldnummer==9){
        aktuellesSpiel.KreisRechtsUnten();
    }
}
}
}
 

Ikaron

Bekanntes Mitglied
Zur Not könntest du mich in Skype adden (xXIkaron) und wir das per Bildschirmübertragung machen.. ^^
Das Spielfeld kann man SEHR stark vereinfachen, einfach indem man
Code:
int[][] spielfeld = new int[9][9];[/c] verwendet^^ Und dann beim Zeichnen einfach durchloopen und je nachdem einfach schauen: wenn spielfeld[x][y] == 0, dann ist es leer, bei 1 hat da Spieler 1 einen Stein und bei 2 Spieler 2. So würde ich das zumindest machen.
Wäre dann auch leichter auf 4x4 zu erhöhen^^
 
Zuletzt bearbeitet:

Crian

Top Contributor
Java:
private Dreieck spielfigur1;
private Dreieck spielfigur2;
private Dreieck spielfigur3;
private Dreieck spielfigur4;
private Dreieck spielfigur5;
private Dreieck spielfigur6;
private Dreieck spielfigur7;
private Dreieck spielfigur8;
private Dreieck spielfigur9;

Sowas schreit nach Listen.
 

AquaBall

Top Contributor
WOW!
Mir bleibt die Luft weg!

Gut dass du den Code gepostet hast.
Den schreibt auch sicher (hoffentlich) keiner ab!

Ich glaube du kannst schon recht gut programmieren, hast aber noch keine Ahnung von Strukturen.
Den Code solltest du mindestens um 90% kürzen können. Dann findest du auch Fehler leichter.

Der Sinn von Programmieren: Gleiches erkennen und im Idealfall NUR EINMAL schreiben.
Fang mal klein an und mach aus deinen Spielfiguren ein Array.

Wir helfen dir gerne. (Und du warst schon sehr fleißig im Tippen.)
 

info=)

Mitglied
@Ikaron
Hab leider kein Skype;(
Ich muss mich an ein paar Vorgaben halten, die ich jetzt mal poste.


Projekt 10. Jahrgangsstufe – Tic Tac Toe
Ihr sollt das Spiel TicTacToe programmieren. Das Spiel ist euch sicher (aus dem Unterricht) bekannt, trotzdem noch einmal die wichtigsten Regeln:

• Das Spielfeld besteht aus 9 Kästchen.
• Zwei Spieler belegen abwechselnd ein noch freies Kästchen mit ihrem Symbol (hier Kreis oder Dreieck). In unserer Variante soll es sich um menschliche Spieler handeln. Es ist aber grundsätzlich vorstellbar, dass der Rechner selbst einer der beiden Spieler ist.
• Gewonnen hat der Spieler, der zuerst drei Symbole in einer
Reihe, einer Spalte oder einer Diagonale anordnen kann.


1. Folgendes Klassendiagramm ist Grundlage für euer Programm

siehe Anhang1

2. Vorschläge für die Realisierung des Spielfeldes

• Die aktuelle Belegung des Spielfeldes wird in einem int-Feld der Länge 9 abgespeichert. Dabei haben die Feldeinträge 0, 1 und 2 folgende Bedeutung: 0: Feld nicht belegt, 1: Spieler 1 hat Feld belegt, 2: Spieler 2 hat Feld belegt
• Grafische Darstellung des Spielfeldes
• Zeichnen eines großen Quadrats, auf dem 9 kleinere Quadrate anderer Farbe abgelegt sind.
• Belegt Spieler 1 ein Feld, so wird einfach an der richtigen Stelle des Spielfelds ein Dreieck gezeichnet, bei Spieler 2 entsprechend ein Kreis.
• Es gilt folgende Zuordnung zwischen dem Feld, in dem die Symbole abgespeichert sind und dem Spielbrett:

siehe Anhang2


3. Hinweise zu den Methoden
SPIEL:

• SpielStarten() Das folgende Struktogramm gibt eine Überblick über die Schritte, die innerhalb der Methode abgearbeitet werden.
siehe Anhang3

• SpielendeTesten() Es wird geprüft, ob beim Spielbrett eine Reihe, eine Spalte oder eine Diagonale mit gleichen Spielsteinen belegt ist. Da das Spielbrett in einem Feld „abgespeichert“ ist, wird also getestet, ob die Felder 0, 3 und 6 bzw. die Felder … mit einem identischen Wert belegt sind.

• SpielzugVerarbeiten(int feldnummer) Das folgende Struktogramm zeigt den in dieser Methode abzuarbeitenden Algorithmus:
siehe Anhang4


• Folgende Schritte sind im Konstruktor SPIEL(SPIELER spieler1, SPIELER spieler2) durchzuführen:
siehe Anhang5


SPIELER:

• void SpielBekanntmachen(SPIEL spiel) Der Spieler muss das aktuelle Spiel „kennen“, d.h. nach dem Erzeugen eines SPIEL-Objekts muss einem geeigneten Referenzattribut des jeweiligen Spielers das aktuelle SPIEL-Objekt zugewiesen werden.

• void SpielsymbolSetzen(int symbol) Als Spielsymbole stehen die Zahlen 1 und 2 zur Verfügung. Diese müssen bei Spieler 1 bzw. 2 festgelegt werden.

• String NameGeben() Man braucht evtl. den Namen des Spielers, beispielsweise zur Ausgabe auf der Konsole.

• int SpielsymbolGeben() Insbesondere beim Setzen des Spielsteins muss man wissen, welches Spielsymbol dem aktuellen Spieler gehört.

• void SpielzugAusfuehren(int feldnummer) Der (vorerst menschliche) Spieler gibt über diese Methode die Nummer des Feldes ein, das er belegen möchte.

SPIELFELD:

• void SpielbrettZeichnen() Diese Methode zeichnet das Spielfeld, also ein großes Quadrat, auf dem 9 kleine Quadrate liegen.

• void BelegungAendern (int feldnummer, int spielfigur) Das entsprechende Feld wird mit dem Spielsymbol des aktuellen Spielers (also 1 oder 2) belegt. In der einfachen Variante wird davon ausgegangen, dass nur freie Felder gewählt werden.

• void NeuGesetztenSteinZeichnen(int feldnummer) Nachdem ein Spieler einen Spielzug ausgeführt hat, der gültig ist, wird ein neuer Stein (d.h. Kreis oder Dreieck) auf dem Spielfeld an der richtigen Position gezeichnet.

Das folgende Sequenzdiagramm verschafft dir einen Überblick über die Kommunikation der am Spiel beteiligen Objekte. Der Spieler 01 (mit dem Spielsymbol 1) wählt dabei das Feld mit der Feldnummer 8.

siehe Anhang6
 

Anhänge

  • Anhang1.odt
    91,1 KB · Aufrufe: 6
  • Anhang2-3.odt
    53,5 KB · Aufrufe: 7
  • Anhang4.odt
    54,1 KB · Aufrufe: 5
  • Anhang5-6.odt
    95,3 KB · Aufrufe: 5

njans

Top Contributor
Magst du dem Aufgabensteller bitte von mir mitteilen, dass er sich doch bitte an die Java Konventionen von Methoden halten mag, wenn er euch das schon beibringen will.
 

info=)

Mitglied
@aquaBall
Fang mal klein an und mach aus deinen Spielfiguren ein Array.

Deklaration?
private Dreieck [] spielfigur;

und Anlegen im Konstruktor:
spielfigur=new Dreieck[9];

Aber wie lege ich dann die einzelnen Figuren an? Über eine for-Schleife? Und was ist mit den Koordinaten?

Stehe mitlerweile echt unter Zeitdruck...
 

njans

Top Contributor
Java:
for(int i = 0 ; i < spielfigur.lentgth; i ++)
  spielfigur[i]  = new Dreieck(...);

Du kannst anhand i auch die Position setztn: z.b. (i%3) * 30
Wobei % der Modulooperator ist. Dieser berechnet den Rest eine Division.
Also hier ein paar Beispiele:
10 % 2 = 0
10 % 3 = 1
10 % 4 = 2
10 % 5 = 0
10 % 6 = 4
 

timbeau

Gesperrter Benutzer
Willst du nicht statt Quadrate zu zeichnen Buttons nutzen?

Java:
private void initTttPanel() {
		tttPanel = new JPanel(new GridLayout(3, 3));
		tttPanel.setBackground(backGroundColor);
		List<Integer> buttonSorted = new LinkedList<Integer>();
		//Buttons befüllen & Actionlistener hinterlegen
}
 

njans

Top Contributor
timbeau ich denke mal, er wird die vorgegebenen Klassen verwenden müssen :/
TO bitte mal bestätigen oder Widerlegen.
----------------------------------------
Die Funktion eines Moduloperators verstehe ich jetzt soweit, aber wie kann ich damit x-/y-Positionen setzen, ich brauche ja 3mal jeweils drei Figuren mitdemselben Rest?

Naja du willst ja ein 3 x 3 Feld erzeugen, dazu brauchst du ja nur x, y Koordinaten.
Wenn du dann (Angenommen ein Rechteck soll 30x30 groß sein und x und y gehen von 1 - 3) jeden x,y Wert mit der Größe multiplizierst, dann geht das ganz einfach:
xWert für die Stelle, an der das Quadrat gezeichnet wird ist x * 30 (30,60,90)
yWert ist analog dazu y * 30 (30,60,90)
Das kannst du über 2 verschachtelte Schleifen erreichen, oder:
Java:
for(int i = 0; i < 9; i ++)
{
 int xKoordinate =  i % 3  // Ist die Spalte 0 - 2
 int yKoordinate =  i/3     // Ist die Zeile 0 - 2
}
 

info=)

Mitglied
Ok, ich kann dir soweit folgen. Aber wie muss ich jetzt sämtliche Methoden (die uns unser Lehrer empfohlen hat) wie DreieckLinksOben() usw. und die, die diese referenzieren, umschreiben?

Ja, wir müssen die vorgegebenen Klassen verwenden.
 

timbeau

Gesperrter Benutzer
void BelegungAendern (int feldnummer, int spielfigur)

sollte ausreichen. Diese Methode sorgt für die Änderung des Spielfeldes.

Notfalls noch eine Methode die die Feldnummer in die Koordinaten umrechnet.

f-nr 1 = 0/0
f-nr 2 = 0/1
...

Java:
private int[] convertIdToRowCol(int input) {
		int[] arr = new int[2];
		if (input == 1) {
			arr[0] = 0;
			arr[1] = 0;
		} else if (input == 2) {
			arr[0] = 0;
			arr[1] = 1;
		} else if (input == 3) {
			arr[0] = 0;
			arr[1] = 2;
		} else if (input == 4) {
			arr[0] = 1;
			arr[1] = 0;
		} else if (input == 5) {
			arr[0] = 1;
			arr[1] = 1;
		} else if (input == 6) {
			arr[0] = 1;
			arr[1] = 2;
		} else if (input == 7) {
			arr[0] = 2;
			arr[1] = 0;
		} else if (input == 8) {
			arr[0] = 2;
			arr[1] = 1;
		} else if (input == 9) {
			arr[0] = 2;
			arr[1] = 2;

		}
		return arr;
	}
 

njans

Top Contributor
Also das ist echt hässlich ^^
Sry timbeau, aber da nehme
A) lieber einen Switch und
B) leiber keinen Switch, sondern berechne den index direkt (siehe 2 posts vor diesem)
 

info=)

Mitglied
Irgendwie komm ich jetzt nicht mehr recht vom Fleck und morgen ist Endspurt. :( Kann bitte einer von Euch meinen Code soweit überarbeiten, sonst bin ich echt aufgeschmissen.
Vielen, vielen Dank!!
 

timbeau

Gesperrter Benutzer
Ähh, ich geh schlafen. In der Zeit heute wäre das locker drin gewesen...aber ich will deine Arbeit nicht schlecht machen. Wann muss das genau fertig sein? Morgen früh hätte ich Zeit.
 

info=)

Mitglied
Hallo timbeau,
das Projekt muss bis Donnerstag fertig sein. Morgen früh muss ich noch in die Schule, bin mittags ab halb zwei zu Hause.
Vielen Dank für deine -wohl echt notwendige- Unterstützung!
 

AquaBall

Top Contributor
Daraus ein Programm zu machen wird ein gutes Stück Arbeit!

Bevor ich dir die Überarbeitung präsentiere ein paar Vorbemerkungen:

Programmieren lernen macht Spaß, ist aber auch Arbeit.
Meiner Meinung nach bist du noch völlig überfordert mit so einem Projekt.
Dir sind die wesentlichen Strukturen noch absolut zu wenig geläufig, und musst du dir anschauen.
Dazu ein wesentlicher Tip:
a) kleinerer Programme probieren, bis du mit Arrays, Switch, ... spielend umgehen kannst.
b) das Problem zuerst am Papier lösen, und Ablauf selbst erarbeiten.
c) Üben, experimentieren, denken und genaue Arbeitsweise aneignen.

z.B. versteh ich folgende Liste nicht:
Code:
  KreisLinksOben(...
  KreisMitteOben(...
  KreisRechtsOben(...
  KreisMitteRechts(...
  KreisMitteMitte(...
  KreisMitteLinks(...
  KreisMitteUnten(...
  KreisLinksUnten(...
  KreisRechtsUnten(...
In der erste Zeile hast du die Reihenfolge: links, mitte, rechts
in der zweiten: rechts, mitte, links
in der dritten: mitte, links, rechts
Außerdem benennst du die mittlere Zeile anders als obere und untere.
Sowas von schlampig!
Das ist aber nicht nur schlampig anzusehen und zu lesen, sondern macht auch was mit dem Porgramm.
Deine Felder sind dadurch numeriert mit:
1 - 2 - 3
6 - 5 - 4
8 - 7 - 9
Dadurch wird der Index unberechenbar!
Wenn du etwas sorgfältiger bist und systematisch durchnumerierst
Code:
  KreisLinksOben(...
  KreisMitteOben(...
  KreisRechtsOben(...
  KreisLinksMitte(...
  KreisMitteMitte(...
  KreisRechtsMitte(...
  KreisLinksUnten(...
  KreisMitteUnten(...
  KreisRechtsUnten(...
dann erhältst du:
1 - 2 - 3
4 - 5 - 6
7 - 8 - 9
Und plötzlich kannst du den Index ganz einfach berechnen:
Zeile = (Index-1)/3; Spalte = (Index-1) % 3
Index = Zeile *3 + Spalte +1
Und schon kannst du alle Koordinaten mit EINEM Ausdruck berechnen!
Java:
z.B.:  Dreieck(60, 60, (i%3)*70+50, (i/3)*70+20, "rot");

Deine SpielendeTesten() ist ja auch eine Katastrophe!
Schon die erste Zeile
Code:
if (aktuellesSpielfeld[0] != 0) {
blockiert alles.
Wenn Feld[0]==0 ist, dann wird in der ganzen Methode absolut nichts mehr getan!!
Formatier den Code richtig, dann siehst du das sofort!
Überleg dir außerdem ein grundlegend anderes Prüfkonzept, und arbeite dabei mit berechneten Indices!


Aber ich will nicht nur meckern, sondern auch helfen:
Hier der Code mal nur umgestellt auf Array und Indexberechnung.
OHNE jede weitere Änderung, und ohne getestet zu haben.
Einzig in der Absicht, dass du dir mal durchschaust, was hier passiert ist, und was du daraus lernst.

Java:
public class SPIEL {

	private SPIELER		aktuellerSpieler;
	private SPIELFELD	spielfeld1;
	private int[]		aktuellesSpielfeld;
	private SPIELER		spieler1;
	private SPIELER		spieler2;

	private Dreieck		spielfigurD[9];

	private Kreis		spielfigurK[9];

	public SPIEL(SPIELER NeuerSpieler1, SPIELER NeuerSpieler2) {
		spieler1 = NeuerSpieler1;
		spieler2 = NeuerSpieler2;
		spieler1.SpielBekanntmachen(this);
		spieler2.SpielBekanntmachen(this);
		spielfeld1 = new SPIELFELD();
		spielfeld1.SpielbrettZeichnen();
		spieler1.SpielsymbolSetzen(1);
		spieler2.SpielsymbolSetzen(2);
		aktuellesSpielfeld = new int[9];
	}

	private void SpielfeldZeichnen() {
		for (i=0;i<9;i++) {
			setzeDreieck(i);
			setzeKreis(i);
		}
	}

	public void setzeDreieck(int feld)   {
		spielfigurK[feld] = new Dreieck(60, 60, (feld%3)*70+50, (feld/3)*70+20, "gelb");
	}
	public void setzeKreis(int feld)   {
		spielfigurD[feld] = new Kreis  (60,     (feld%3)*70+50, (feld/3)*70+20, "blau");
	}
	
	public void SpielStarten() {
		aktuellerSpieler = spieler1;
		spielfeld1.SpielbrettZeichnen();
		System.out.println("Spiel beginnt!");
		String name;
		name = aktuellerSpieler.NameGeben();
		System.out.println(name + " beginnt! ");
	}

	public void SpielzugVerarbeiten(int feldnummer) {
		int symbol;
		symbol = aktuellerSpieler.SpielsymbolGeben();
		if (aktuellesSpielfeld[feldnummer] == 0) {
			aktuellesSpielfeld[feldnummer] = symbol;
			spielfeld1.NeuGesetztenSteinZeichnen(feldnummer, aktuellerSpieler);
		} else {
			System.out.println("Das gewählte Feld ist leider bereits besetzt!");
		}

		if (SpielendeTesten()) {
			String text;
			text = aktuellerSpieler.NameGeben();
			System.out.println(text + " , du hast das Spiel gewonnen. Herzlichen Glückwunsch!");
		} else {
			if (aktuellerSpieler == spieler1) {
				aktuellerSpieler = spieler2;
			} else {
				aktuellerSpieler = spieler1;
			}
			String neu = aktuellerSpieler.NameGeben();
			System.out.println(neu + " , jetzt bist du dran. Bitte wähle ein neues Feld aus!");
		}
	}

	public boolean isSpalteEinfärbig(int spalte) { // das machst du als Hausübung 
	}
	public boolean isSeileEinfärbig(int zeile) { // das machst du als Hausübung 
	}
	public boolean isDiagonale1Einfärbig() { // das machst du als Hausübung 
	}
	public boolean isDiagonale2Einfärbig() { // das machst du als Hausübung 
	}
	public boolean SpielendeTesten() {
		boolean prüfung;
		prüfung = false;
		for (i= 0;i<3;i++) {
			if (isSpalteEinfärbig(i)) {
				prüfung = true;
			}
			if (isZeileEinfärbig(i)) {
				prüfung = true;
			}
		}
		if (isDiagonale1Einfärbig()) {
			prüfung = true;
		}
		if (isDiagonale2Einfärbig()) {
			prüfung = true;
		}
		
		if (prüfung) System.out.println("Das Spiel ist beendet!");
		else System.out.println("Es steht noch kein Sieger fest!");

		return prüfung;
	}
}

Java:
public class SPIELFELD{
	 
	private int [] spielfeld;
	private SPIEL aktuellesSpiel;
	private SPIELER spieler;
	private Quadrat hintergrund;
	private Quadrat quadrat[9];
	 
	public SPIELFELD(){
		spielfeld=new int [9];
		 
		for (int i=0; i<9; i++){
			spielfeld[i]=0;
		}
		SpielbrettZeichnen();
	}
	 
	public void BelegungAendern(int feldnummer, int spielfigur){
		if (spielfeld[feldnummer]==0){
			spielfeld[feldnummer]=spielfigur;
		}else{
			System.out.println("Das gewünschte Feld ist leider bereits belegt!");
		}
	}
	 
	public void SpielbrettZeichnen(){
		hintergrund= new Quadrat(220, 10, 10, "schwarz");
		for (i=0;i<9;i++) {
			quadrat[i] = new Quadrat(60, 60, (i%3)*70+50, (i/3)*70+20, "rot");
		}
	}
	
	public void NeuGesetztenSteinZeichnen(int feldnummer, SPIELER sp){
		sp.SpielzugAusführen(feldnummer);
		if(spielfeld[feldnummer]==1) aktuellesSpiel.setzeDreieck(i -1);
		if(spielfeld[feldnummer]==2) aktuellesSpiel.setzeKreis  (i -1);
	}
}

Ganz dahingestellt seien noch hunderte Fehlerchen und Konzept-Probleme.
z.B. Wozu brauchst du überhaput spielfigur oder quadrat als Variable?
 
Zuletzt bearbeitet:

info=)

Mitglied
Erstmal vielen Dank für Deine Mühe!

Ich habe folgendermaßen ergänzt:

Java:
public boolean istSpalteEinfarbig(int spalte) {
        boolean kontrolle;
        if (spielfigur[spalte]==spielfigur[spalte+3] && spielfigur[spalte+3]==spielfigur[spalte+6]){
                kontrolle=true;
                String text;
                text=aktuellerSpieler.NameGeben();
                System.out.println( text + " , du hast das Spiel gewonnen. Herzlichen Glückwunsch!");
                    }  
        return kontrolle;
    }
    public boolean istZeileEinfarbig(int zeile) { 
        boolean kontrolle;
        if( spielfigur[zeile+2*zeile]==spielfigur[zeile+2*zeile+1] && spielfigur[zeile+2*zeile+1]==spielfigur[zeile+2*zeile+2]){
                kontrolle=true;
                String text;
                text=aktuellerSpieler.NameGeben();
                System.out.println( text + " , du hast das Spiel gewonnen. Herzlichen Glückwunsch!");
            }
    }
    public boolean istDiagonale1Einfarbig() { 
        booelan kontrolle;
        if(spielfigur[0]==spielfigur[4] && spielfigur[4]==spielfigur[8]){
                kontrolle=true;
                String text;
                text=aktuellerSpieler.NameGeben();
                System.out.println( text + " , du hast das Spiel gewonnen. Herzlichen Glückwunsch!");
            }
    }
    public boolean istDiagonale2Einfarbig() { 
        boolean kontrolle;
        if(spielfigur[2]==spielfigur[4] && spielfigur[4]==spielfigur[6]){
                kontrolle=true;
                String text;
                text=aktuellerSpieler.NameGeben();
                System.out.println( text + " , du hast das Spiel gewonnen. Herzlichen Glückwunsch!");
            }


Allerdings bekomme ich bei SPIEL bei setzeDreieck 'incompatible types' für [c]
spielfigurK[feld] = new Dreieck(60, 60, (feld%3)*70+50, (feld/3)*70+20, "gelb");[/c].
 

AquaBall

Top Contributor
Allerdings bekomme ich bei SPIEL bei setzeDreieck 'incompatible types' für [c]
spielfigurK[feld] = new Dreieck(60, 60, (feld%3)*70+50, (feld/3)*70+20, "gelb");[/c].

Das solltest du selbst herausbekommen.
Woran könnte es liegen, dass die ArrayVariable und die new Methode sich hier nicht vertragen?


Es gibt ja noch (sehr) viel zu optimieren:
Überleg mal wie du SpielendeTesten() abändern könntest, wenn du so prüfst:
Java:
public String istSpalteEinfarbig(int spalte) {
        if (spielfigur[spalte]==spielfigur[spalte+3] && spielfigur[spalte+3]==spielfigur[spalte+6])
                return aktuellerSpieler.NameGeben();
        else return null;
    }

PS: Was hast du dir eigentlich gedacht bei:
Code:
spielfigur[zeile+2*zeile] ... spielfigur[zeile+2*zeile+1] ... spielfigur[zeile+2*zeile+2])
Geht das nicht etwas besser?

Aber offensichtlich hast du nun ein bisschen von den Indices für diesen Fall gecheckt.
Weiter so!:toll:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Fehler beim Programmieren von TicTacToe Java Basics - Anfänger-Themen 12
H TicTacToe Fehler beim Compilieren Java Basics - Anfänger-Themen 7
P Ein einfaches Spiel: TicTacToe. Fehler und Vorschläge Java Basics - Anfänger-Themen 3
F Kann mir jemand bei dem Fehler helfen? Java Basics - Anfänger-Themen 6
Juelin jedit Fehler beim starten Java Basics - Anfänger-Themen 2
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
E Matrizenmultiplikation Fehler Java Basics - Anfänger-Themen 0
Z Fehler Zeiterfassungsprogramm Anzeige Java Basics - Anfänger-Themen 3
C SwingWorker mit Fehler Java Basics - Anfänger-Themen 2
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
G Compiler-Fehler Fehler in Zeile 1 beheben, wie? Java Basics - Anfänger-Themen 9
W Fehler in der Datei pom.xml Java Basics - Anfänger-Themen 19
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
ohneInformatik; Dynamische Zinsen. Wo liegt der Fehler? Java Basics - Anfänger-Themen 4
Fiedelbambu deriveFont Fehler wer kann Helfen? Java Basics - Anfänger-Themen 4
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Lion.King Fehler in double und int Java Basics - Anfänger-Themen 7
H BlueJ: was genau ist hier der Fehler? Java Basics - Anfänger-Themen 14
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
D Datentypen LocalDate.parse() ergibt Fehler Java Basics - Anfänger-Themen 5
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
N Fehler "Cannot instantiate the type" Java Basics - Anfänger-Themen 3
L Ich weis nicht was der Fehler ist! Java Basics - Anfänger-Themen 14
L30nS JNI Fehler, JRE und JDK Java Basics - Anfänger-Themen 8
E Executable jar file fehler Java Basics - Anfänger-Themen 9
S Fehler beim Programm Java Basics - Anfänger-Themen 2
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
J Syntax-Fehler? Java Basics - Anfänger-Themen 2
Jose05 Fehler im Programm feststellen Java Basics - Anfänger-Themen 2
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
G Taschenrechner ergibt Fehler in if-Abfrage Java Basics - Anfänger-Themen 6
I Fehler bei for-Schleife Java Basics - Anfänger-Themen 6
lol5443 Tic Tac Toe Fehler Java Basics - Anfänger-Themen 5
K Fehler bei der Implementierung Java Basics - Anfänger-Themen 6
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
W Verschachtelte If-else --> finde meinen Fehler nicht Java Basics - Anfänger-Themen 30
J Fehler bei array aus anderer Klasse Java Basics - Anfänger-Themen 3
H Fehler bei integer Division Java Basics - Anfänger-Themen 28
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
N Was bedeutet dieser Fehler Java Basics - Anfänger-Themen 2
fuerteb Compiler-Fehler Methode wird nicht bzw. als Fehler erkannt Java Basics - Anfänger-Themen 4
Lion.King Fehler Java Basics - Anfänger-Themen 5
AlexG. Nullpointer exeption Fehler Java Basics - Anfänger-Themen 0
C Fehler im Code Java Basics - Anfänger-Themen 10
J Anfänger, Fehler; "Der Hund liegt begraben" Java Basics - Anfänger-Themen 3
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
V Wer findet den Fehler :) Java Basics - Anfänger-Themen 12
B ArrayIndexOutOfBoundsException, ich finde den Fehler nicht? Java Basics - Anfänger-Themen 10
A Compiler Fehler - not a statement Java Basics - Anfänger-Themen 2
Arita welche Fehler gibt es noch? wie kann ich es noch vervollständigen Java Basics - Anfänger-Themen 15
S Fehler bei Code mit SubStrings für mich nicht auffindbar. Java Basics - Anfänger-Themen 4
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
H Logik Fehler erkennen Java Basics - Anfänger-Themen 21
T Fehler in Caesar-Chiffre Java Basics - Anfänger-Themen 7
R Fehlermeldung aber WO liegt der Fehler? Java Basics - Anfänger-Themen 7
B Nicht reproduzierbarer Fehler bei Kompilierung - Shortcut "Bereinigung" Compiler ? Java Basics - Anfänger-Themen 4
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
pumpgun99 Fehler Meldung "else without if" Java Basics - Anfänger-Themen 3
P Was bedeutet dieser Fehler? Java Basics - Anfänger-Themen 31
KogoroMori21 Java Datum Differenz (kleiner Fehler) Java Basics - Anfänger-Themen 10
N java.util.InputMismatchException Fehler Java Scanner Java Basics - Anfänger-Themen 5
H Fehler: NullPointerException und ich weiß net warum Java Basics - Anfänger-Themen 4
R Ich sehe meinen fehler nicht Java Basics - Anfänger-Themen 8
Johannes_ece Fehler: Application Terminated (TypeError): var$0.$moveToolTo is not a function Java Basics - Anfänger-Themen 4
GermanPie Fehler in Putty (kein Hauptmanifestattribut, in jar) Java Basics - Anfänger-Themen 4
M Scannen von *.txt - Dateien; wo sind der oder die Fehler? Java Basics - Anfänger-Themen 4
P Methoden aufrufen - Fehler Java Basics - Anfänger-Themen 20
JavaClap "Bruchrechner" liefert Fehler/keine Ausgabe bei Addition und Subtraktion Java Basics - Anfänger-Themen 0
B if Clause Fehler Java Basics - Anfänger-Themen 2
G Fibonacci Zahlenreihe Fehler Java Basics - Anfänger-Themen 4
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
B Fehler, aber ich weiß nicht warum Java Basics - Anfänger-Themen 3
C system cannot be resolved Fehler in Eclipse Java Basics - Anfänger-Themen 18
J Fehler im Code, aber ich weiß nicht wieso! Java Basics - Anfänger-Themen 6
M Compiler-Fehler Fehler beim Ausführen des Codes Java Basics - Anfänger-Themen 25
M While-Schleifen-Fehler Java Basics - Anfänger-Themen 4
N Fehler bei JUnit Test Java Basics - Anfänger-Themen 5
C Projekte in 2 versch. Arbeitsbereichen: auf ein Projekt verweisen (ohne Fehler zu bekommen) Java Basics - Anfänger-Themen 8
R Java SQL Fehler! Java Basics - Anfänger-Themen 4
L non-static Fehler Java Basics - Anfänger-Themen 16
C Fehler beim Speichern (Build projekt) Java Basics - Anfänger-Themen 42
L Methoden Wie Löse ich ext Methoden Aufruf Fehler? Java Basics - Anfänger-Themen 3
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
C Fehler bei der Compilierung Java Basics - Anfänger-Themen 1
T Mein Programm hat Fehler Java Basics - Anfänger-Themen 4
S Warum dieser Fehler? Java Basics - Anfänger-Themen 1
B Fehler bei Ausführung Java Basics - Anfänger-Themen 5
Kirby.exe Fehler beim Ausgeben Java Basics - Anfänger-Themen 2
X java.lang.NullPointerException fehler ? Java Basics - Anfänger-Themen 1
L Wo ist der Fehler? Java Basics - Anfänger-Themen 87
J Fehler in Programm: Index -1 out of bounds for length 0 Java Basics - Anfänger-Themen 5
M JOptionPane Fehler bei "Abbrechen" des Fensters Java Basics - Anfänger-Themen 10
N Fehler bei string Attribut! Java Basics - Anfänger-Themen 18
W Wo liegt der Fehler? Java Basics - Anfänger-Themen 8
G Palindromtest mit Angabe WO der Fehler ist Java Basics - Anfänger-Themen 2
J Wo ist der Fehler im Programmcode? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben