diff --git a/Semesterprojekt/src/GUI/GUI.java b/Semesterprojekt/src/GUI/GUI.java new file mode 100644 index 0000000..e4e61b3 --- /dev/null +++ b/Semesterprojekt/src/GUI/GUI.java @@ -0,0 +1,71 @@ +package GUI; + +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.TreeMap; + +import javax.swing.JButton; +import javax.swing.JFrame; + +import Verarbeitung.TicTacToe; + +public class GUI extends JFrame{ + + private TicTacToe ttt; + private ArrayList buttons = new ArrayList<>(); + + public GUI(TicTacToe ttt) { + + this.ttt = ttt; + + this.setTitle("TicTacToe"); + this.setSize(500,500); + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.setLocationRelativeTo(null); + this.setLayout(new GridLayout(3,3)); + + fuelleArrayList(); + + this.setVisible(true); + + } + + private void fuelleArrayList() { + + for(int i=0;i<9;i++) { + JButton b = new JButton(); + b.setContentAreaFilled(false); + b.setFocusPainted(false); + + b.setVisible(true); + buttons.add(b); + this.add(b); + + final int a = i; + b.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + + System.out.println("Button "+buttons.indexOf(b)+" wurde gedrueckt"); + + TreeMap belegteFelder = ttt.getBelegteFelder(); + + if (belegteFelder.get(buttons.indexOf(b)) == 'X' || belegteFelder.get(buttons.indexOf(b)) == 'O') { + System.out.println("Feld " + buttons.indexOf(b) + " schon belegt, machen Sie eine erneute Eingabe..."); + } else { + belegteFelder.put(buttons.indexOf(b), ttt.getAktuellerSpieler()); + b.setName(""+ttt.getAktuellerSpieler()); + } + + + if (ttt.getAktuellerSpieler() == 'X')ttt.setAktuellerSpieler('O'); + else ttt.setAktuellerSpieler('X'); + + } + }); + } + } +} diff --git a/Semesterprojekt/src/TicTacToe.java b/Semesterprojekt/src/TicTacToe.java deleted file mode 100644 index a201afb..0000000 --- a/Semesterprojekt/src/TicTacToe.java +++ /dev/null @@ -1,104 +0,0 @@ -import java.util.Scanner; -import java.util.TreeMap; - -public class TicTacToe { - - private static TreeMap belegteFelder = new TreeMap<>(); - private static char aktuellerSpieler = 'X'; - private static int ausgewaehltesFeld = 0; - - - public static void main(String[] args) { - - System.out.println("Spieler 1 ist X, Sieler 2 ist O.\nDie Felder sind von 1 bis 9 durchnummerriert.\nUm ein Feld für ein Zug auszuwählen muss die Zahl des Feldes eingegeben werden...."); - - fuelleTreeMap(); - - for(int i=1;i<=9;i++) { - - erfasseEingabe(); - gibAktuellenStandAus(); - if(i >= 5) pruefeSieg(); - - if(aktuellerSpieler == 'X') aktuellerSpieler = 'O'; - else aktuellerSpieler = 'X'; - - } - - System.out.println("Ergebnis des Spiels ist ein Untentschieden!"); - - } - - //Fuellt die TreeMap mit Standart Werten - private static void fuelleTreeMap() { - for(int i=1;i<=9;i++) { - belegteFelder.put(i, (char) (48+i)); - } - } - - private static void gibAktuellenStandAus() { - - System.out.println("\n-------------"); - int counter = 0; - while(counter < 9){ - System.out.printf("|%2s |%2s |%2s |",belegteFelder.get(counter+=1), belegteFelder.get(counter+=1), belegteFelder.get(counter+=1)); - System.out.println("\n-------------"); - } - - } - - private static void erfasseEingabe() { - - Scanner s = new Scanner(System.in); - - System.out.println("Spieler "+aktuellerSpieler+" ist am Zug!"); - - System.out.println("Geben Sie eine Feldnummer ein:\n>>"); - - try { - ausgewaehltesFeld = s.nextInt(); - System.out.println("Die Eingabe: "+ausgewaehltesFeld); - }catch(Exception E) { - System.out.println("Es wurde keine passende Eingabe getätigt,\nversuchen Sie es erneut..."); - erfasseEingabe(); - } - - if(belegteFelder.get(ausgewaehltesFeld) == 'X' || belegteFelder.get(ausgewaehltesFeld) == 'O') { - System.out.println("Feld "+ausgewaehltesFeld+" schon belegt, machen Sie eine erneute Eingabe..."); - erfasseEingabe(); - }else { - belegteFelder.put(ausgewaehltesFeld, aktuellerSpieler); - } - - - } - - private static void pruefeSieg() { - - if(belegteFelder.get(1) == aktuellerSpieler && belegteFelder.get(2) == aktuellerSpieler && belegteFelder.get(3) == aktuellerSpieler) { - System.out.println("Spieler "+aktuellerSpieler+" hat drei '"+aktuellerSpieler+"' in der ersten Waagerechte und hat somit gewonnen!"); - System.exit(0); - }else if(belegteFelder.get(4) == aktuellerSpieler && belegteFelder.get(5) == aktuellerSpieler && belegteFelder.get(6) == aktuellerSpieler) { - System.out.println("Spieler "+aktuellerSpieler+" hat drei '"+aktuellerSpieler+"' in der zweiten Waagerechte und hat somit gewonnen!"); - System.exit(0); - }else if(belegteFelder.get(7) == aktuellerSpieler && belegteFelder.get(8) == aktuellerSpieler && belegteFelder.get(9) == aktuellerSpieler) { - System.out.println("Spieler "+aktuellerSpieler+" hat drei '"+aktuellerSpieler+"' in der dritten Waagerechte und hat somit gewonnen!"); - System.exit(0); - }else if(belegteFelder.get(1) == aktuellerSpieler && belegteFelder.get(4) == aktuellerSpieler && belegteFelder.get(7) == aktuellerSpieler) { - System.out.println("Spieler "+aktuellerSpieler+" hat drei '"+aktuellerSpieler+"' in der ersten Senkrechte und hat somit gewonnen!"); - System.exit(0); - }else if(belegteFelder.get(2) == aktuellerSpieler && belegteFelder.get(5) == aktuellerSpieler && belegteFelder.get(8) == aktuellerSpieler) { - System.out.println("Spieler "+aktuellerSpieler+" hat drei '"+aktuellerSpieler+"' in der zweiten Senkrechte und hat somit gewonnen!"); - System.exit(0); - }else if(belegteFelder.get(3) == aktuellerSpieler && belegteFelder.get(6) == aktuellerSpieler && belegteFelder.get(9) == aktuellerSpieler) { - System.out.println("Spieler "+aktuellerSpieler+" hat drei '"+aktuellerSpieler+"' in der dritten Senkrechte und hat somit gewonnen!"); - System.exit(0); - }else if(belegteFelder.get(1) == aktuellerSpieler && belegteFelder.get(5) == aktuellerSpieler && belegteFelder.get(9) == aktuellerSpieler) { - System.out.println("Spieler "+aktuellerSpieler+" hat drei '"+aktuellerSpieler+"' in der ersten Diagonale und hat somit gewonnen!"); - System.exit(0); - }else if(belegteFelder.get(3) == aktuellerSpieler && belegteFelder.get(5) == aktuellerSpieler && belegteFelder.get(7) == aktuellerSpieler) { - System.out.println("Spieler "+aktuellerSpieler+" hat drei '"+aktuellerSpieler+"' in der zweiten Diagonale und hat somit gewonnen!"); - System.exit(0); - } - } -} diff --git a/Semesterprojekt/src/Verarbeitung/TicTacToe.java b/Semesterprojekt/src/Verarbeitung/TicTacToe.java new file mode 100644 index 0000000..f94cb78 --- /dev/null +++ b/Semesterprojekt/src/Verarbeitung/TicTacToe.java @@ -0,0 +1,154 @@ +package Verarbeitung; + +import java.util.Scanner; +import java.util.TreeMap; + +import GUI.GUI; + +public class TicTacToe { + + private GUI gui; + private TreeMap belegteFelder = new TreeMap<>(); + private char aktuellerSpieler = 'X'; + private int ausgewaehltesFeld = 0; + + public TicTacToe() { + + Scanner s = new Scanner(System.in); + System.out.println("Wollen Sie mit einer GUI('gui' eingeben) oder mit der Konsole('konsole' eingeben) spielen?"); + String befehl = s.nextLine(); + + fuelleTreeMap(); + + if (befehl.equalsIgnoreCase("gui")) { + + System.out.println("Spieler 1 ist X, Sieler 2 ist O.\nUm ein Feld für ein Zug auszuwählen muss dieses Feld angeklickt werden..."); + + gui = new GUI(this); + + + + + } else if (befehl.equalsIgnoreCase("konsole")) { + System.out.println("Spieler 1 ist X, Sieler 2 ist O.\nDie Felder sind von 1 bis 9 durchnummerriert.\nUm ein Feld für ein Zug auszuwählen muss die Zahl des Feldes eingegeben werden..."); + + for (int i = 1; i <= 9; i++) { + + erfasseEingabe(); + gibAktuellenStandAus(); + if (i >= 5) + pruefeSieg(); + + if (aktuellerSpieler == 'X')aktuellerSpieler = 'O'; + else aktuellerSpieler = 'X'; + + } + + System.out.println("Ergebnis des Spiels ist ein Untentschieden!"); + } else { + System.out.println("Eingabe ungültig!"); + } + } + + // Fuellt die TreeMap mit Standart Werten + private void fuelleTreeMap() { + for (int i = 1; i <= 9; i++) { + belegteFelder.put(i, (char) (48 + i)); + } + } + + private void gibAktuellenStandAus() { + + System.out.println("\n-------------"); + int counter = 0; + while (counter < 9) { + System.out.printf("|%2s |%2s |%2s |", belegteFelder.get(counter += 1), belegteFelder.get(counter += 1), + belegteFelder.get(counter += 1)); + System.out.println("\n-------------"); + } + } + + private void erfasseEingabe() { + + Scanner s = new Scanner(System.in); + + System.out.println("Spieler " + aktuellerSpieler + " ist am Zug!"); + + System.out.println("Geben Sie eine Feldnummer ein:\n>>"); + + try { + ausgewaehltesFeld = s.nextInt(); + System.out.println("Die Eingabe: " + ausgewaehltesFeld); + } catch (Exception E) { + System.out.println("Es wurde keine passende Eingabe getätigt,\nversuchen Sie es erneut..."); + erfasseEingabe(); + } + + if (belegteFelder.get(ausgewaehltesFeld) == 'X' || belegteFelder.get(ausgewaehltesFeld) == 'O') { + System.out.println("Feld " + ausgewaehltesFeld + " schon belegt, machen Sie eine erneute Eingabe..."); + erfasseEingabe(); + } else { + belegteFelder.put(ausgewaehltesFeld, aktuellerSpieler); + } + + } + + private void pruefeSieg() { + + if (belegteFelder.get(1) == aktuellerSpieler && belegteFelder.get(2) == aktuellerSpieler + && belegteFelder.get(3) == aktuellerSpieler) { + System.out.println("Spieler " + aktuellerSpieler + " hat drei '" + aktuellerSpieler + + "' in der ersten Waagerechte und hat somit gewonnen!"); + System.exit(0); + } else if (belegteFelder.get(4) == aktuellerSpieler && belegteFelder.get(5) == aktuellerSpieler + && belegteFelder.get(6) == aktuellerSpieler) { + System.out.println("Spieler " + aktuellerSpieler + " hat drei '" + aktuellerSpieler + + "' in der zweiten Waagerechte und hat somit gewonnen!"); + System.exit(0); + } else if (belegteFelder.get(7) == aktuellerSpieler && belegteFelder.get(8) == aktuellerSpieler + && belegteFelder.get(9) == aktuellerSpieler) { + System.out.println("Spieler " + aktuellerSpieler + " hat drei '" + aktuellerSpieler + + "' in der dritten Waagerechte und hat somit gewonnen!"); + System.exit(0); + } else if (belegteFelder.get(1) == aktuellerSpieler && belegteFelder.get(4) == aktuellerSpieler + && belegteFelder.get(7) == aktuellerSpieler) { + System.out.println("Spieler " + aktuellerSpieler + " hat drei '" + aktuellerSpieler + + "' in der ersten Senkrechte und hat somit gewonnen!"); + System.exit(0); + } else if (belegteFelder.get(2) == aktuellerSpieler && belegteFelder.get(5) == aktuellerSpieler + && belegteFelder.get(8) == aktuellerSpieler) { + System.out.println("Spieler " + aktuellerSpieler + " hat drei '" + aktuellerSpieler + + "' in der zweiten Senkrechte und hat somit gewonnen!"); + System.exit(0); + } else if (belegteFelder.get(3) == aktuellerSpieler && belegteFelder.get(6) == aktuellerSpieler + && belegteFelder.get(9) == aktuellerSpieler) { + System.out.println("Spieler " + aktuellerSpieler + " hat drei '" + aktuellerSpieler + + "' in der dritten Senkrechte und hat somit gewonnen!"); + System.exit(0); + } else if (belegteFelder.get(1) == aktuellerSpieler && belegteFelder.get(5) == aktuellerSpieler + && belegteFelder.get(9) == aktuellerSpieler) { + System.out.println("Spieler " + aktuellerSpieler + " hat drei '" + aktuellerSpieler + + "' in der ersten Diagonale und hat somit gewonnen!"); + System.exit(0); + } else if (belegteFelder.get(3) == aktuellerSpieler && belegteFelder.get(5) == aktuellerSpieler + && belegteFelder.get(7) == aktuellerSpieler) { + System.out.println("Spieler " + aktuellerSpieler + " hat drei '" + aktuellerSpieler + + "' in der zweiten Diagonale und hat somit gewonnen!"); + System.exit(0); + } + } + + public void setAktuellerSpieler(char aktuellerSpieler) { + this.aktuellerSpieler = aktuellerSpieler; + } + + public char getAktuellerSpieler() { + return aktuellerSpieler; + } + + public TreeMap getBelegteFelder() { + return belegteFelder; + } + + +} diff --git a/Semesterprojekt/src/Verarbeitung/main.java b/Semesterprojekt/src/Verarbeitung/main.java new file mode 100644 index 0000000..2a6c917 --- /dev/null +++ b/Semesterprojekt/src/Verarbeitung/main.java @@ -0,0 +1,11 @@ +package Verarbeitung; + +public class main { + + public static void main(String[] args) { + + TicTacToe ttt = new TicTacToe(); + + } + +}