Tic Tac Toe: KI funktioniert nicht

Status
Nicht offen für weitere Antworten.

Reality

Top Contributor
Hi,
gestern Abend habe ich einfach mal entschlossen Tic Tac Toe zu programmieren, aber bei der KI (Künstliche Intelligenz), hat es gescheitert.
Vorerst: Ich bin damit noch nicht fertig. Ich will erst einmal verhindern, dass der Spieler gewinnt bzw. drei in der richtigen Reigenfolge schafft.


Code:
import java.io.*;

class TicTacToe {
  public static void main(String[] args) {

  int eingabe= -1;
  char matrix[][]={
                {' ', ' ', ' ','#', ' ', ' ', '#', ' ', ' ',' '},
                {' ', '1', ' ','#', ' ', '2', '#', ' ', '3', ' '},
                {'#', '#', '#', '#', '#', '#', '#', '#', '#', '#'},
                {' ', '4', ' ', '#', ' ', '5', '#', ' ', '6', ' '},
                {'#', '#', '#', '#', '#', '#', '#', '#', '#', '#'},
                {' ', '7', ' ', '#', ' ', '8', '#', ' ', '9', ' '},
                {' ', ' ', ' ','#', ' ', ' ', '#', ' ', ' ', ' '}, };

  do{
    try{
      BufferedReader daten= new BufferedReader(new InputStreamReader(System.in));

      for(int j=0; j<matrix.length; j++){
        for (int i = 0; i < 10; i++) {
          System.out.print(String.valueOf(matrix[j][i]));

        }
        System.out.println();
      }
      System.out.println("Welches Feld soll angekreuzt werden? (0 eingeben, um abzubrechen)");

      eingabe = Integer.parseInt(daten.readLine());

      if(eingabe == 0)
        System.out.println("Beendet.");

      else
        switch(eingabe)
        {
        case 1:
        matrix[1][1]='X';
        break;
        case 2:
        matrix[1][5]='X';
        break;
        case 3:
        matrix[1][8]='X';
        break;
        case 4:
        matrix[3][1]='X';
        break;
        case 5:
        matrix[3][5]='X';
        break;
        case 6:
        matrix[3][8]='X';
        break;
        case 7:
        matrix[5][1]='X';
        break;
        case 8:
        matrix[5][5]='X';
        break;
        case 9:
        matrix[5][8]='X';
        break;
        default:
        System.out.println("Feld nicht vorhanden!");
        }
    // 1, 2
    if(matrix[1][1]=='X' && matrix[1][5]=='X' && matrix[1][8]!='X' || matrix[1][8]!='O')
      matrix[1][8]='O';

    //1, 4
    else if(matrix[1][1]=='X' && matrix[3][1]=='X' && matrix[5][1]!='X' || matrix[5][1]!='O')
      matrix[5][1]='O';

    //4, 7
    else if(matrix[3][1]=='X' && matrix[5][1]=='X' && matrix[1][1]!='X' || matrix[1][1]!='O')
      matrix[1][1]='O';

    //2, 5
    else if(matrix[1][5]=='X' && matrix[3][5]=='X' && matrix[5][5]!='X' || matrix[5][5]!='O')
      matrix[5][5]='O';

    //5, 8
    else if(matrix[3][5]=='X' && matrix[5][5]=='X' && matrix[1][5]!='X' || matrix[1][5]!='O')
      matrix[1][5]='O';

    //3, 6
    else if(matrix[1][8]=='X' && matrix[3][8]=='X' && matrix[5][8]!='X' || matrix[5][8]!='O')
      matrix[5][8]='O';

    //6, 9
    else if(matrix[3][8]=='X' && matrix[5][8]=='X' && matrix[1][8]!='X' || matrix[1][8]!='O')
      matrix[1][8]='O';

    //4, 5
    else if(matrix[3][1]=='X' && matrix[3][5]=='X' && matrix[3][8]!='X' || matrix[3][8]!='O')
      matrix[3][8]='O';

    //5, 6
    else if(matrix[3][5]=='X' && matrix[3][8]=='X' && matrix[3][1]!='X' || matrix[3][1]!='O')
      matrix[3][1]='O';

    //1, 5
    else if(matrix[1][1]=='X' && matrix[3][5]=='X' && matrix[5][8]!='X' || matrix[5][8]!='O')
      matrix[5][8]='O';

    //5, 9
    else if(matrix[3][5]=='X' && matrix[5][8]=='X' && matrix[1][1]!='X' || matrix[1][1]!='O')
      matrix[1][1]='O';

    } catch(IOException f){
      System.out.println("Fehler bei der Eingabe! Bitte nur Zahlen eingeben!");
    }
    }while(eingabe!=0);
  }
}

Kompiliert das bitte mal. Es kreuzt einfach nicht an den richtigen Stellen an.
Zuvor war der Code bei mir so:

Code:
// 1, 2
    if(matrix[1][1]=='X' && matrix[1][5]=='X')
      matrix[1][8]='O';

    //1, 4
    if(matrix[1][1]=='X' && matrix[3][1]=='X')
      matrix[5][1]='O';

    //4, 7
    if(matrix[3][1]=='X' && matrix[5][1]=='X')
      matrix[1][1]='O';

    //2, 5
    if(matrix[1][5]=='X' && matrix[3][5]=='X')
      matrix[5][5]='O';

    //5, 8
    if(matrix[3][5]=='X' && matrix[5][5]=='X')
      matrix[1][5]='O';

    //3, 6
    if(matrix[1][8]=='X' && matrix[3][8]=='X')
      matrix[5][8]='O';

    //6, 9
    if(matrix[3][8]=='X' && matrix[5][8]=='X')
      matrix[1][8]='O';

    //4, 5
    if(matrix[3][1]=='X' && matrix[3][5]=='X')
      matrix[3][8]='O';

    //5, 6
    if(matrix[3][5]=='X' && matrix[3][8]=='X')
      matrix[3][1]='O';

    //1, 5
    if(matrix[1][1]=='X' && matrix[3][5]=='X')
      matrix[5][8]='O';

    //5, 9
    if(matrix[3][5]=='X' && matrix[5][8]=='X')
      matrix[1][1]='O';

Da war das Problem, dass an manchen Stellen der Computer zwei Stellen gleichzeitig angekreutzt hat.

Wie kann ich das besser hinkriegen?!

Liebe Grüße
Reality
 
G

Guest

Gast
Mhhh also beim ersten versuch von dir ischs klar, dass manchmnal 2 sachen angekreutz wurden, da ja sicherlich manchmal 2 bedingungen, z.B bei Zwickmöhlen gestimmt haben, aber der 2. Versuch, mhhh, ich hab ihn nur überflogen aber er shceint eigentlich richtig zu sein. Vllt sind es schreib fehler oder so. Ich habs jetz noch nicht compiliert aber ich machs noch. Leider hab ich jetzt keine Zeit, aber heute abend sicher. Man schauen was des ergibt
Fox
 
G

Guest

Gast
Also ich habs aus probiert, und es kreuzt wirklcih imme an total falschen stellen an. WÜrde auf schreibfehler tippen, weil osnst müsste es eigentlcih stimmen.
Naja prüf nochaml alles durch oder schreib alles neu :shock: !
Vllt klappts dann
Fox
 
G

Guest

Gast
Ultimative KI:

Code:
import java.io.*;

class TicTacToe {
    
static int freieFelder;
static int[][] Feld=new int[3][3];

static void zeigFeld()
{
int x,y;
for(y=0;y<3;y++)
{
   for(x=0;x<3;x++)
   {
      if(Feld[x][y]==1) System.out.print("O ");
      else if(Feld[x][y]==-1) System.out.print("X ");
      else System.out.print(". ");
   }
System.out.println();
}
}

static boolean dreiInReihe()
{
if((Feld[0][0]!=0)&&(Feld[0][0]==Feld[0][1])&&(Feld[0][1]==Feld[0][2]))
   return true;
if((Feld[1][0]!=0)&&(Feld[1][0]==Feld[1][1])&&(Feld[1][1]==Feld[1][2]))
   return true;
if((Feld[2][0]!=0)&&(Feld[2][0]==Feld[2][1])&&(Feld[2][1]==Feld[2][2]))
   return true;
if((Feld[0][0]!=0)&&(Feld[0][0]==Feld[1][0])&&(Feld[1][0]==Feld[2][0]))
   return true;
if((Feld[0][1]!=0)&&(Feld[0][1]==Feld[1][1])&&(Feld[1][1]==Feld[2][1]))
   return true;
if((Feld[0][2]!=0)&&(Feld[0][2]==Feld[1][2])&&(Feld[1][2]==Feld[2][2]))
   return true;
if((Feld[0][0]!=0)&&(Feld[0][0]==Feld[1][1])&&(Feld[1][1]==Feld[2][2]))
   return true;
if((Feld[2][0]!=0)&&(Feld[2][0]==Feld[1][1])&&(Feld[1][1]==Feld[0][2]))
   return true;
return false;
}

static boolean sieg(int x,int y,int spielerZug,int spielerWin)  // Berechnet ob spielerWin gewinnt, wenn spielerZug auf die Position x, y setzt
{                                                    // unter der Vorraussetzung, dass spielerWin immer perfekt spielt
int a,b;
boolean sieg;
freieFelder--;
Feld[x][y]=spielerZug;
if(!dreiInReihe())
{
   if(freieFelder == 0) sieg=false;
   else
   {
      if(spielerZug==spielerWin) sieg=true; else sieg=false;
      for(b=0;b<3;b++)
         for(a=0;a<3;a++)
            if(Feld[a][b]==0)
            {
               if(spielerZug==spielerWin)
                  sieg=sieg&&sieg(a,b,-spielerZug,spielerWin);
               else
                  sieg=sieg||sieg(a,b,-spielerZug,spielerWin);
            }
   }
}
else {
    if(spielerZug==spielerWin) sieg=true;
    else sieg=false;
}
Feld[x][y]=0;
freieFelder++;
return sieg;
}

public static void main(String[] args)
{
int x,y,x_Pos=0,y_Pos=0;
char antwort=' ';
BufferedReader stdin=null;

for(x=0;x<=2;x++)
   for(y=0;y<=2;y++) Feld[x][y]=0;
freieFelder=9;
zeigFeld();
do {
   System.out.print("Soll ich anfangen? ");
   try {
    stdin = new BufferedReader(
       new InputStreamReader(System.in));
    antwort = stdin.readLine().charAt(0);
   } catch (Exception e) {
           e.printStackTrace();  
   }    
   antwort |=32;
} while (!((antwort=='j') || (antwort=='n')));
if(antwort=='j') {
   Feld[1][1]=1;
   freieFelder--;
   zeigFeld();
   }

while(freieFelder>0 && (!dreiInReihe()) ) {
do {
    try {
        System.out.print("\nx_Pos: ");
        String inputString = stdin.readLine();
        x_Pos=Integer.parseInt(inputString);
        System.out.print("y_Pos: ");
        inputString = stdin.readLine();
        y_Pos=Integer.parseInt(inputString);
    } catch (Exception e) {
           e.printStackTrace();  
    }   
} while (Feld[x_Pos-1][y_Pos-1]!=0);
Feld[x_Pos-1][y_Pos-1]=-1; 
freieFelder--;

boolean gefunden=false;
out:
for(y=0;y<3;y++)
   for(x=0;x<3;x++)
      if(Feld[x][y]==0 && sieg(x,y,1,1)) 
         {                               
            Feld[x][y]=1;
            freieFelder--;
            gefunden=true;
            break out;
         }
if(!gefunden)
out:
for(y=0;y<3;y++)
   for(x=0;x<3;x++)
      if(Feld[x][y]==0 && !sieg(x,y,1,-1) )
         {                                
            Feld[x][y]=1;
            freieFelder--;
            break out;
         }
zeigFeld();
}
}
}
 

Reality

Top Contributor
Hi,
der Code sieht ja recht interessant aus. Selbst geproggt?
Werd ihn mir mal genauer anschauen, wenn ich Zeit habe. Muss ja noch Mathe lernen...

Liebe Grüße
Reality
 
G

Guest

Gast
Ja. Ist selbst geproggt.
Hatte ich vor ein paar Jahren in C gechrieben und dann einfach nach Java portiert.
 

DesertFox

Bekanntes Mitglied
Als ich dieses Thema gesehen hab, hab cih auch mal angefangen, auch TicTacToe zu programmieren.
Natürlich sind ein paar einflüsse von den dem codebeispiel oben eingeflossen, wie z.B das Spielfeld als int zu setzten oder am anfang die abfrage, wer anfangen will, aber sonst habe cih alles selber gemacht, nur diese 2 sachen. kannste dir ja auch mal anschauen.

Code:
import java.io.*;

public class NeuerVersuch 
{
	static int [][]Spielfeld = new int[3][3];
	static int FreieFelder = 9;
	static void Feldanzeige()
	{
	int x,y; 
	for( y = 0; y < 3; y++) 
	{ 
		for( x = 0; x < 3; x++) 
	    { 
			if ( Spielfeld[x][y] == 2 ) 
				System.out.print("O "); 
			else
				if( Spielfeld[x][y] == 1) 
					System.out.print("X "); 
				else 
					System.out.print(". "); 
	    }
		System.out.println();
	}
	}
	static void KeinFeldübrig()
	{
		if ( FreieFelder == 0 )
		{
			System.out.println( "Leider konnte keiner gewinnen. Enter drücken um zu beenden. " );
			beenden();
		}
		FreieFelder--;
		return;
	}
	static void beenden()
	{
		try
		{
			BufferedReader Schluss = new BufferedReader(new InputStreamReader(System.in)); 
			String Ende = (Schluss.readLine());
		}
		catch ( IOException f )
		{}
		System.exit(0);
	}
	static void Ergebnis( int Gewinner)
	{
		Feldanzeige();
		System.out.println("");
		if ( Gewinner == 1 )
		System.out.println( "Herzlichen Glückwunsch, sie konnten die KI besiegen! Bitte drücken sie Enter, um das Programm zu beenden.");
		if ( Gewinner == 2 )
		System.out.println( "Schade, sie konten die KI leider nicht besiegen! Bitte drücken sie Enter, um das Programm zu beenden.");
		beenden();
	}
	static void dreiInReihe()
	{
		for ( int i = 0; i<3; i++ )
		{ 	int Kreise = 0, Kreuze = 0, kreise = 0, kreuze = 0; 
			for ( int j = 0 ; j <3 ; j++)
			{
				if ( Spielfeld[i][j] == 1 )	Kreise++;
				else if ( Spielfeld[i][j] == 2 )Kreuze++;
				if ( Spielfeld[j][i] == 1 )	kreise++;
				else if ( Spielfeld[j][i] == 2)	kreuze++;
				if ( Kreise == 3 || kreise == 3)	Ergebnis(1);
				if ( kreuze == 3 || Kreuze == 3 )Ergebnis(2);
			}
		}
		int Kreise = 0, Kreuze = 0, kreise = 0, kreuze = 0; 
		for ( int i = 0, j = 0; i < 3; i++, j++ )
		{
			if ( Spielfeld[i][j] == 1 ) Kreise++;
			else if ( Spielfeld[i][j] == 2) Kreuze++;
			else break;
			if ( Kreise == 3 )Ergebnis(1);
			if ( Kreuze == 3 )Ergebnis(2);		
		}
		if (Spielfeld[0][2]==Spielfeld[1][1]&&Spielfeld[1][1]==Spielfeld[2][0])
		{if (Spielfeld[1][1] == 1)
		Ergebnis(1); else if (Spielfeld[1][1] == 2) Ergebnis(2);
		}
		return;
	}
	static boolean zweiInReihe()
	{ 
		for (int i = 0; i < 3 ; i++ )
		{ int Kreuze = 0, Kreise = 0, kreuze = 0, kreise = 0, Kreiselchen = 0, Xse = 0;
			for (int j = 0, b = 2, a = 0; j < 3; j++, b--, a++)
			{
				if ( Spielfeld[i][j] == 2 ) Kreise++;
				if ( Spielfeld[i][j] == 1 ) Kreuze++;
				if ( Spielfeld[j][i] == 2 ) kreise++;
				if ( Spielfeld[j][i] == 1 ) kreuze++;
				if ( Spielfeld[a][b] == 1 ) Kreiselchen++;
				if ( Spielfeld[a][b] == 2 ) Xse++;
				if ( Kreuze == 2 && Kreise == 0 || Kreise == 2 && Kreuze == 0 ){{
				for ( int L = 0; L < 3; L++){
				if ( Spielfeld [i][L] != 1 && Spielfeld[i][L] != 2) 
				{ Spielfeld[i][L] = 2; return true; }}}}
				else if ( kreuze == 2 && kreise == 0 || kreise == 2 && kreuze == 0 ){{
				for ( int k = 0; k < 3; k++){
				if ( Spielfeld [k][i] != 1 && Spielfeld[k][i] != 2 ) 
				{ Spielfeld[k][i] = 2; return true; }}}}
				else if ( Xse == 2 && Kreiselchen == 0 || Kreiselchen == 2 && Xse == 0 ){{
				for ( int n = 0, m = 2; n < 3; n++, m--){
				if ( Spielfeld [n][m] != 1 && Spielfeld[n][m] != 2 ) 
				{ Spielfeld[n][m] = 2; return true; }}}}
			}
		}
		return false;
	}
	static boolean MittleresFeld()
	{
		if ( Spielfeld[1][1] == 0 )
		{Spielfeld[1][1] = 2; return true;}
		else return false;
	}
	static void BeliebigesFeld()
	{
		for ( int i = 0; i < 3; i++)
		{
			for ( int j = 0; j < 3; j++)
			{
				if ( Spielfeld[j][i] != 1 && Spielfeld[j][i] != 2 )
				{Spielfeld[j][i] = 2; return;}
			}
		}
	}
	static void KI()
	{
		if ( zweiInReihe() == true )
			return;
		if (MittleresFeld() == true)
			return;
		else BeliebigesFeld();
		return;
	}
	public static void main(String[] args) 
	{            
		for ( int z = 0; z < 3; z++)
		{ for ( int y = 0; y <3 ; y++)
			Spielfeld[z][y] = 0;
		}
		char c = 0;
		try{
			System.out.println( "Willst du anfangen (j/n)?");
			do{
			BufferedReader Anfangen = new BufferedReader( new InputStreamReader(System.in));
			String anfangen = Anfangen.readLine();
			if ( anfangen != null && anfangen.length() > 0 )
			c = anfangen.charAt( 0 );
			if ( c == 'n')
			break;
			if ( c == 'j')
				break;
			} while ( true );
		}catch (IOException f){}
		if ( c == 'n' )
			{Spielfeld[1][1] = 2;
			KeinFeldübrig();
			System.out.println();}
		do{
		Feldanzeige();
		dreiInReihe();
		KeinFeldübrig();
		int X, Y;
		try {
		do {
			System.out.println("");
			System.out.print( "X: ");
			BufferedReader XAchse = new BufferedReader(new InputStreamReader(System.in));
			X = Integer.parseInt(XAchse.readLine()); 
			System.out.print( "Y: ");
			BufferedReader YAchse = new BufferedReader(new InputStreamReader(System.in));
			Y = Integer.parseInt(YAchse.readLine());
			System.out.println("");
			if ( Spielfeld[X-1][Y-1] != 1 && Spielfeld[X-1][Y-1] != 2 )
				{Spielfeld[X-1][Y-1] = 1; break;}
			System.out.println( "Dieses Feld ist schon besetzt, bitte wählen sie ein anderes1 ");
			Feldanzeige();
			}
		while ( true );
		}
		catch ( IOException f) {}
		dreiInReihe();
		KeinFeldübrig();
		KI();
		} while ( true );
	}
}
Desert
 

Isaac

Bekanntes Mitglied
Bei Tic Tac Toe ist es doch eigentlich so das man nur die Falle am Anfang verhindern muss. Wenn man das tut muss man doch nur noch Löcher stopfen.


x - -
- o -
o - x

x am Zug und gewinnt. Wenn man diese Konstelation verhidert muss man nur noch 2er jagen.
 

bummerland

Top Contributor
es gibt noch mehr konstellationen, die man verhindern muss:

- o -
- x - (in alle richtungen)
- - -

x am zug gewinnt, denn:

- o -
- x -
- - x

o o -
- x -
- - x

o o x
- x -
- - x
 
G

Guest

Gast
Hier mal was mit ner grafischen Oberfläche, dafür ohne KI. :wink:
Ihr benötigt jedoch noch 2 Grafiken, einmal mit Kreuz und einmal mit einem Kreis. (Siehe Strings sKreis, sKreuz)

Code:
import javax.swing.JFrame;

import java.awt.FlowLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import java.awt.Toolkit;
import javax.swing.UIManager;




public class TicTacToe extends JFrame {

	private javax.swing.JPanel jContentPane = null;

	private String sKreis = ""; // Hier fehlt der Pfad zum Bild mit einem Kreuz (Gif, transparent, Größe 90x90)
	private String sKreuz = ""; // Hier fehlt der Pfad zum Bild mit einem Kreis (Gif, transparent, Größe 90x90)

	private JButton jButton = null;
	private JButton jButton1 = null;
	private JButton jButton2 = null;
	private JButton jButton3 = null;
	private JButton jButton4 = null;
	private JButton jButton5 = null;
	private JButton jButton6 = null;
	private JButton jButton7 = null;
	private JButton jButton8 = null;
	private JButton jButton9 = null;
	private JLabel jLabel1 = null;	
	private int spieler = 0;	


	private String lookAndFeel = null;

	public Test() {
		super();
		
		initialize();
		checkActions();
	}

	private void initialize() {
		this.lookAndFeel = UIManager.getCrossPlatformLookAndFeelClassName();
		try {
		    UIManager.setLookAndFeel(lookAndFeel);
		} catch (Exception e) { }
		this.setTitle("TicTacToe");
		this.setSize(300, 350);
		this.setResizable(false);
		this.setContentPane(getJContentPane());
		this.setLocationRelativeTo(null);

	}
	
	public void checkActions()
	{	
		jButton.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent evt)
			{
				jButton.setVisible(false);
				if (getSpieler() == 1)
				{
					jButton.setIcon(new ImageIcon(sKreis));
					jButton.setName("spieler 1");
					jButton.setEnabled(false);
					setSpieler(2);
					controlWin();
					controlUndecided();
				}
				else if (getSpieler() == 2)
				{
					jButton.setIcon(new ImageIcon(sKreuz));
					jButton.setName("spieler 2");
					jButton.setEnabled(false);
					setSpieler(1);
					controlWin();
					controlUndecided();
				}

				jButton.setVisible(true);				
			}
		});
		
		jButton1.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent evt)
			{
				jButton1.setVisible(false);
				if (getSpieler() == 1)
				{
					jButton1.setIcon(new ImageIcon(sKreis));
					jButton1.setName("spieler 1");
					jButton1.setEnabled(false);
					setSpieler(2);
					controlWin();
					controlUndecided();
				}
				else if (getSpieler() == 2)
				{
					jButton1.setIcon(new ImageIcon(sKreuz));
					jButton1.setName("spieler 2");
					jButton1.setEnabled(false);
					setSpieler(1);
					controlWin();
					controlUndecided();
				}
				jButton1.setVisible(true);
				
			}
		});
		
		jButton2.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent evt)
			{
				jButton2.setVisible(false);
				if (getSpieler() == 1)
				{
					jButton2.setIcon(new ImageIcon(sKreis));
					jButton2.setName("spieler 1");
					jButton2.setEnabled(false);
					setSpieler(2);
					controlWin();
					controlUndecided();
				}
				else if (getSpieler() == 2)
				{
					jButton2.setIcon(new ImageIcon(sKreuz));
					jButton2.setName("spieler 2");
					jButton2.setEnabled(false);
					setSpieler(1);
					controlWin();
					controlUndecided();
				}
				jButton2.setVisible(true);
				
			}
		});
		
		jButton3.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent evt)
			{
				jButton3.setVisible(false);
				if (getSpieler() == 1)
				{
					jButton3.setIcon(new ImageIcon(sKreis));
					jButton3.setName("spieler 1");
					jButton3.setEnabled(false);
					setSpieler(2);
					controlWin();
					controlUndecided();
				}
				else if (getSpieler() == 2)
				{
					jButton3.setIcon(new ImageIcon(sKreuz));
					jButton3.setName("spieler 2");
					jButton3.setEnabled(false);
					setSpieler(1);
					controlWin();
					controlUndecided();
				}
				jButton3.setVisible(true);
				
			}
		});
		
		jButton4.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent evt)
			{
				jButton4.setVisible(false);
				if (getSpieler() == 1)
				{
					jButton4.setIcon(new ImageIcon(sKreis));
					jButton4.setName("spieler 1");
					jButton4.setEnabled(false);
					setSpieler(2);
					controlWin();
					controlUndecided();
				}
				else if (getSpieler() == 2)
				{
					jButton4.setIcon(new ImageIcon(sKreuz));
					jButton4.setName("spieler 2");
					jButton4.setEnabled(false);
					setSpieler(1);
					controlWin();
					controlUndecided();
				}
				jButton4.setVisible(true);
				
			}
		});
		
		jButton5.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent evt)
			{
				jButton5.setVisible(false);
				if (getSpieler() == 1)
				{
					jButton5.setIcon(new ImageIcon(sKreis));
					jButton5.setName("spieler 1");
					jButton5.setEnabled(false);
					setSpieler(2);
					controlWin();
					controlUndecided();
				}
				else if (getSpieler() == 2)
				{
					jButton5.setIcon(new ImageIcon(sKreuz));
					jButton5.setName("spieler 2");
					jButton5.setEnabled(false);
					setSpieler(1);
					controlWin();
					controlUndecided();
				}
				jButton5.setVisible(true);
				
			}
		});
		
		jButton6.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent evt)
			{
				jButton6.setVisible(false);
				if (getSpieler() == 1)
				{
					jButton6.setIcon(new ImageIcon(sKreis));
					jButton6.setName("spieler 1");
					jButton6.setEnabled(false);
					setSpieler(2);
					controlWin();
					controlUndecided();
				}
				else if (getSpieler() == 2)
				{
					jButton6.setIcon(new ImageIcon(sKreuz));
					jButton6.setName("spieler 2");
					jButton6.setEnabled(false);
					setSpieler(1);
					controlWin();
					controlUndecided();
				}
				jButton6.setVisible(true);
				
			}
		});
		
		jButton7.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent evt)
			{
				jButton7.setVisible(false);
				if (getSpieler() == 1)
				{
					jButton7.setIcon(new ImageIcon(sKreis));
					jButton7.setName("spieler 1");
					jButton7.setEnabled(false);
					setSpieler(2);
					controlWin();
					controlUndecided();
				}
				else if (getSpieler() == 2)
				{
					jButton7.setIcon(new ImageIcon(sKreuz));
					jButton7.setName("spieler 2");
					jButton7.setEnabled(false);
					setSpieler(1);
					controlWin();
					controlUndecided();
				}
				jButton7.setVisible(true);
				
			}
		});
		
		jButton8.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent evt)
			{
				jButton8.setVisible(false);
				if (getSpieler() == 1)
				{
					jButton8.setIcon(new ImageIcon(sKreis));
					jButton8.setName("spieler 1");
					jButton8.setEnabled(false);
					setSpieler(2);
					controlWin();
					controlUndecided();
				}
				else if (getSpieler() == 2)
				{
					jButton8.setIcon(new ImageIcon(sKreuz));
					jButton8.setName("spieler 2");
					jButton8.setEnabled(false);
					setSpieler(1);
					controlWin();
					controlUndecided();
				}
				jButton8.setVisible(true);
				
			}
		});
		
		jButton9.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent evt)
			{
					setVisible(false);
					TicTacToe startnew = new TicTacToe();
					startnew.setVisible(true);
			}
		});		
	}
	
	private int getSpieler()
	{
		if (spieler == 0)
		{
			spieler = 1;
		}
		return spieler;
	}
	
	private void setSpieler(int spieler)
	{
		this.spieler = spieler;
	}
	
	private void controlWin()
	{
		// Horizontale Spieler 1
		if (getJButton().getName().equals("spieler 1") && getJButton1().getName().equals("spieler 1") && getJButton2().getName().equals("spieler 1"))
		{
			getJLabel1().setText("Spieler 1 hat gewonnen!");
			disableButtons();
			jButton9.setEnabled(true);
		}
		if (getJButton3().getName().equals("spieler 1") && getJButton4().getName().equals("spieler 1") && getJButton5().getName().equals("spieler 1"))
		{
			getJLabel1().setText("Spieler 1 hat gewonnen!");
			disableButtons();
			jButton9.setEnabled(true);
		}
		if (getJButton6().getName().equals("spieler 1") && getJButton7().getName().equals("spieler 1") && getJButton8().getName().equals("spieler 1"))
		{
			getJLabel1().setText("Spieler 1 hat gewonnen!");
			disableButtons();
			jButton9.setEnabled(true);
		}
		
		// Horizontale Spieler 2
		if (getJButton().getName().equals("spieler 2") && getJButton1().getName().equals("spieler 2") && getJButton2().getName().equals("spieler 2"))
		{
			getJLabel1().setText("Spieler 2 hat gewonnen!");
			disableButtons();
			jButton9.setEnabled(true);
		}
		if (getJButton3().getName().equals("spieler 2") && getJButton4().getName().equals("spieler 2") && getJButton5().getName().equals("spieler 2"))
		{
			getJLabel1().setText("Spieler 2 hat gewonnen!");
			disableButtons();
			jButton9.setEnabled(true);
		}
		if (getJButton6().getName().equals("spieler 2") && getJButton7().getName().equals("spieler 2") && getJButton8().getName().equals("spieler 2"))
		{
			getJLabel1().setText("Spieler 2 hat gewonnen!");
			disableButtons();
			jButton9.setEnabled(true);
		}
		
		// Vertikale Spieler 1
		if (getJButton().getName().equals("spieler 1") && getJButton3().getName().equals("spieler 1") && getJButton6().getName().equals("spieler 1"))
		{
			getJLabel1().setText("Spieler 1 hat gewonnen!");
			controlUndecided();
			jButton9.setEnabled(true);
		}
		if (getJButton1().getName().equals("spieler 1") && getJButton4().getName().equals("spieler 1") && getJButton7().getName().equals("spieler 1"))
		{
			getJLabel1().setText("Spieler 1 hat gewonnen!");
			disableButtons();
			jButton9.setEnabled(true);
		}
		if (getJButton2().getName().equals("spieler 1") && getJButton5().getName().equals("spieler 1") && getJButton8().getName().equals("spieler 1"))
		{
			getJLabel1().setText("Spieler 1 hat gewonnen!");
			disableButtons();
			jButton9.setEnabled(true);
		}
		
		// Vertikale Spieler 2
		if (getJButton().getName().equals("spieler 2") && getJButton3().getName().equals("spieler 2") && getJButton6().getName().equals("spieler 2"))
		{
			getJLabel1().setText("Spieler 2 hat gewonnen!");
			disableButtons();
			jButton9.setEnabled(true);
		}
		if (getJButton1().getName().equals("spieler 2") && getJButton4().getName().equals("spieler 2") && getJButton7().getName().equals("spieler 2"))
		{
			getJLabel1().setText("Spieler 2 hat gewonnen!");
			disableButtons();
			jButton9.setEnabled(true);
		}
		if (getJButton2().getName().equals("spieler 2") && getJButton5().getName().equals("spieler 2") && getJButton8().getName().equals("spieler 2"))
		{
			getJLabel1().setText("Spieler 2 hat gewonnen!");
			disableButtons();
			jButton9.setEnabled(true);
		}
		
		// Schräg Spieler 1
		if (getJButton().getName().equals("spieler 1") && getJButton4().getName().equals("spieler 1") && getJButton8().getName().equals("spieler 1"))
		{
			getJLabel1().setText("Spieler 1 hat gewonnen!");
			disableButtons();
			jButton9.setEnabled(true);
		}
		if (getJButton2().getName().equals("spieler 1") && getJButton4().getName().equals("spieler 1") && getJButton6().getName().equals("spieler 1"))
		{
			getJLabel1().setText("Spieler 1 hat gewonnen!");
			disableButtons();
			jButton9.setEnabled(true);
		}
		
		// Schräg Spieler 2
		if (getJButton().getName().equals("spieler 2") && getJButton4().getName().equals("spieler 2") && getJButton8().getName().equals("spieler 2"))
		{
			getJLabel1().setText("Spieler 2 hat gewonnen!");
			disableButtons();
			jButton9.setEnabled(true);
			
		}
		if (getJButton2().getName().equals("spieler 2") && getJButton4().getName().equals("spieler 2") && getJButton6().getName().equals("spieler 2"))
		{
			getJLabel1().setText("Spieler 2 hat gewonnen!");
			disableButtons();
			jButton9.setEnabled(true);
		}
	}
	
	private void controlUndecided()
	{
		if(!getJButton().getName().equals("") && !getJButton1().getName().equals("") && !getJButton2().getName().equals("") && !getJButton3().getName().equals("") && !getJButton4().getName().equals("")
				&& !getJButton5().getName().equals("") && !getJButton6().getName().equals("") && !getJButton7().getName().equals("") && !getJButton8().getName().equals(""))
		{
			getJLabel1().setText("Unentschieden!");
			jButton9.setEnabled(true);
		}
	}
	
	private void disableButtons()
	{
		getJButton().setEnabled(false);
		getJButton1().setEnabled(false);
		getJButton2().setEnabled(false);
		getJButton3().setEnabled(false);
		getJButton4().setEnabled(false);
		getJButton5().setEnabled(false);
		getJButton6().setEnabled(false);
		getJButton7().setEnabled(false);
		getJButton8().setEnabled(false);
	}
	
	private javax.swing.JPanel getJContentPane() {
		if(jContentPane == null) {
			java.awt.FlowLayout flowLayout4 = new FlowLayout();
			jContentPane = new javax.swing.JPanel();
			jContentPane.setLayout(flowLayout4);
			flowLayout4.setAlignment(java.awt.FlowLayout.CENTER);
			flowLayout4.setHgap(0);
			flowLayout4.setVgap(0);
			jContentPane.add(getJButton(), null);
			jContentPane.add(getJButton1(), null);
			jContentPane.add(getJButton2(), null);
			jContentPane.add(getJButton3(), null);
			jContentPane.add(getJButton4(), null);
			jContentPane.add(getJButton5(), null);
			jContentPane.add(getJButton6(), null);
			jContentPane.add(getJButton7(), null);
			jContentPane.add(getJButton8(), null);
			jContentPane.add(getJLabel1(), null);
			jContentPane.add(getJButton9(), null);
		}
		return jContentPane;
	}
	
	  
	private JLabel getJLabel1() {
		if (jLabel1 == null) {
			jLabel1 = new JLabel();
			jLabel1.setVisible(true);
			jLabel1.setPreferredSize(new java.awt.Dimension(140,30));
			jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
			
		}
		return jLabel1;
	}
	
 	
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setPreferredSize(new java.awt.Dimension(97,97));
			jButton.setMargin(new Insets(0,0,0,0));
			jButton.setName("");
		}
		return jButton;
	}

	private JButton getJButton1() {
		if (jButton1 == null) {
			jButton1 = new JButton();
			jButton1.setPreferredSize(new java.awt.Dimension(97,97));
			jButton1.setMargin(new Insets(0,0,0,0));
			jButton1.setName("");
		}
		return jButton1;
	}

	private JButton getJButton2() {
		if (jButton2 == null) {
			jButton2 = new JButton();
			jButton2.setPreferredSize(new java.awt.Dimension(97,97));
			jButton2.setMargin(new Insets(0,0,0,0));
			jButton2.setName("");
		}
		return jButton2;
	}
	/**
 
	private JButton getJButton3() {
		if (jButton3 == null) {
			jButton3 = new JButton();
			jButton3.setPreferredSize(new java.awt.Dimension(97,97));
			jButton3.setMargin(new Insets(0,0,0,0));
			jButton3.setName("");
		}
		return jButton3;
	}
  
	private JButton getJButton4() {
		if (jButton4 == null) {
			jButton4 = new JButton();
			jButton4.setPreferredSize(new java.awt.Dimension(97,97));
			jButton4.setMargin(new Insets(0,0,0,0));
			jButton4.setName("");
		}
		return jButton4;
	}
   
	private JButton getJButton5() {
		if (jButton5 == null) {
			jButton5 = new JButton();
			jButton5.setPreferredSize(new java.awt.Dimension(97,97));
			jButton5.setMargin(new Insets(0,0,0,0));
			jButton5.setName("");
		}
		return jButton5;
	}
   
	private JButton getJButton6() {
		if (jButton6 == null) {
			jButton6 = new JButton();
			jButton6.setPreferredSize(new java.awt.Dimension(97,97));
			jButton6.setMargin(new Insets(0,0,0,0));
			jButton6.setName("");
		}
		return jButton6;
	}
    
	private JButton getJButton7() {
		if (jButton7 == null) {
			jButton7 = new JButton();
			jButton7.setPreferredSize(new java.awt.Dimension(97,97));
			jButton7.setMargin(new Insets(0,0,0,0));
			jButton7.setName("");
		}
		return jButton7;
	}
  
	private JButton getJButton8() {
		if (jButton8 == null) {
			jButton8 = new JButton();
			jButton8.setPreferredSize(new java.awt.Dimension(97,97));
			jButton8.setMargin(new Insets(0,0,0,0));
			jButton8.setName("");
		}
		return jButton8;
	}
	

	private JButton getJButton9() {
		if (jButton9 == null) {
			jButton9 = new JButton();
			jButton9.setPreferredSize(new java.awt.Dimension(140,30));
			jButton9.setText("Neues Spiel");
			jButton9.setEnabled(false);
			jButton9.setBorderPainted(false);
		}
		return jButton9;
	}
		
 	// Zeigt die Maske an
	public static void main (String[] args)
	{
		
		TicTacToe start = new TicTacToe();
		start.setVisible(true);
	}	
}
 

Manfred

Bekanntes Mitglied
Na, da geb ich auch gleich meinen Senf dazu!

Hab kürzlich auch diese "Idee" gehabt.

Auf meiner Seite http://members.chello.at/manfred.fettinger/java/index.htm findet ihr den Download!

Ich habe die KI folgendermaßen programmiert!

Kann ich gewinnen?
Wenn ja, setzen und Sieg!

Wenn nein:
bei Level 1 einfach zufällig setzen

bei Level 2+3 suchen ob gegner schon 2 nebeneinander hat
Wenn ja hinsetzen
Wenn nein, neben eigenen hinsetzen(Level 3), falls kein eigener vorhanden oder kein Platz, dann zufall(Level 2)


Ist zwar nicht optimal, soll heissen, man kann auch in einigen Fällen gewinnen!

Und der Code ist ziemlich verworren..... :roll:
 
G

Guest

Gast
Ups, bei dem Code 2 Posts drüber muss der Konstruktor noch in
TicTacToe unbenannt werden.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Signierte Exe Datei funktioniert nicht mehr Java Basics - Anfänger-Themen 1
A Signierte Exe Datei funktioniert nicht mehr Java Basics - Anfänger-Themen 3
C my_table.setRowSelectionAllowed(true) funktioniert nicht; Java Basics - Anfänger-Themen 0
B Warum funktioniert die Lösung von CodeGym aber meine nicht? Java Basics - Anfänger-Themen 3
I Webservice funktioniert nicht Java Basics - Anfänger-Themen 5
C Abbruch einer Schleife mit break, meine Übung funktioniert nicht richtig Java Basics - Anfänger-Themen 4
S Erstes Programm: Hallo Welt funktioniert nicht. Java Basics - Anfänger-Themen 3
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
G .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
Garrit1994 Continue funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
B Methoden Übergebe Variabel funktioniert nicht Java Basics - Anfänger-Themen 17
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
Fugover Programm funktioniert nicht Java Basics - Anfänger-Themen 11
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
Avalon Warum funktioniert eine Bedingung und eine andere nicht? Java Basics - Anfänger-Themen 2
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
stormyark 4 Bit in einer for-schleife funktioniert nicht Java Basics - Anfänger-Themen 3
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
M Java printf(Locale.... funktioniert nicht Java Basics - Anfänger-Themen 3
N Wieso funktioniert die Deklaration nicht Java Basics - Anfänger-Themen 3
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
districon Backtracking funktioniert nicht ganz Java Basics - Anfänger-Themen 3
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
S Math.random funktioniert nicht Java Basics - Anfänger-Themen 5
S Schleife funktioniert nicht Java Basics - Anfänger-Themen 2
B Ausgabe in TextArea funktioniert nicht Java Basics - Anfänger-Themen 2
Henri Webservice Delete und Update Methode funktioniert nicht Java Basics - Anfänger-Themen 27
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
C System.out.println - Parameterübergabe funktioniert nicht Java Basics - Anfänger-Themen 2
JD_1998 Hilfsmethode if return funktioniert nicht Java Basics - Anfänger-Themen 2
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
T % funktioniert nicht Java Basics - Anfänger-Themen 2
D e(fx)clipse installieren funktioniert nicht Java Basics - Anfänger-Themen 3
D GPIO Nutzung mit Pi4J Library auf Raspberry funktioniert nicht Java Basics - Anfänger-Themen 3
F Java GUI-PaintComponent funktioniert nicht Java Basics - Anfänger-Themen 1
J equals funktioniert nicht - Warum Java Basics - Anfänger-Themen 13
L hilfe run button funktioniert nicht Java Basics - Anfänger-Themen 13
I Array funktioniert nicht. Java Basics - Anfänger-Themen 2
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
V_Fynn03 Erste Schritte BubbleSort Quelltext funktioniert noch nicht Java Basics - Anfänger-Themen 1
V_Fynn03 Erste Schritte JButton funktioniert nicht trotz richtiger Methode. Java Basics - Anfänger-Themen 17
R Erste Schritte Eclipse - Java - System.out.println(); funktioniert nicht Java Basics - Anfänger-Themen 2
G Programm mit Schleife funktioniert nicht Java Basics - Anfänger-Themen 5
T Redirect funktioniert nicht Java Basics - Anfänger-Themen 3
R Mein Plugin funktioniert nicht? Java Basics - Anfänger-Themen 10
J Zufallszahl funktioniert nicht Java Basics - Anfänger-Themen 27
D Klassen add Methode funktioniert nicht. Java Basics - Anfänger-Themen 31
J ImagaIO funktioniert nicht unter Ubuntu Java Basics - Anfänger-Themen 23
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
N Wochentagberechner Ausgabe funktioniert nicht Java Basics - Anfänger-Themen 7
G Mein Java Projekt funktioniert nicht Java Basics - Anfänger-Themen 5
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
W Wieso funktioniert mein Switch Case nicht ?! Java Basics - Anfänger-Themen 9
P Zeichenkette Zeichen ausschlißen funktioniert nicht richtig Java Basics - Anfänger-Themen 9
F Primzahlsuche Schleife funktioniert nicht, HILFE! Java Basics - Anfänger-Themen 8
M Methoden Arrays.deepequals() funktioniert nicht Java Basics - Anfänger-Themen 2
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
F Input/Output die eine txt-Datei funktioniert die andere nicht Java Basics - Anfänger-Themen 8
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
D Funktion zwei Arraylisten zu verleichen ob gleich funktioniert nicht Java Basics - Anfänger-Themen 26
A Hilfe bei Rekursion,Ich verstehe nicht,wie funktioniert die Rekursion in der Methode "walk" Java Basics - Anfänger-Themen 13
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
P Upload Button funktioniert nicht Java Basics - Anfänger-Themen 13
S Dijkstra Algorithmus funktioniert nicht Java Basics - Anfänger-Themen 4
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
M Erste Schritte Importieren funktioniert nicht Java Basics - Anfänger-Themen 7
N Funktion funktioniert nicht immer Java Basics - Anfänger-Themen 6
F FileCreation - PrintWriter funktioniert nicht... Java Basics - Anfänger-Themen 1
I Collections.shuffle funktioniert nicht Java Basics - Anfänger-Themen 1
T Methode in Klasse funktioniert nicht Java Basics - Anfänger-Themen 14
T While Schleife funktioniert nicht Java Basics - Anfänger-Themen 14
C Warum funktioniert 'instanceof' bei generics nicht? Java Basics - Anfänger-Themen 4
M Frage, wie dieser Code funktioniert, bzw. weshab er bei mir nicht funktioniert Java Basics - Anfänger-Themen 4
L Level Reset funktioniert nicht Java Basics - Anfänger-Themen 3
A Java Scanner Funktioniert nicht Java Basics - Anfänger-Themen 2
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 12
B OOP Objekt in IF erzeugen - funktioniert nicht so richtig Java Basics - Anfänger-Themen 11
W Warum funktioniert meine if Anweisung nicht? Java Basics - Anfänger-Themen 8
J Stringvergleich funktioniert nicht Java Basics - Anfänger-Themen 8
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 6
L Taschenrechner mit switch und while funktioniert noch nicht richtig Java Basics - Anfänger-Themen 22

Ähnliche Java Themen

Neue Themen


Oben