hinzufügen der Buttons "Spiel zurücksetzen" und "Spiel neustarten" zur
GUI, GUI funktioniert fast einweandsfrei, nur bug dass felder nicht ausgewählt werden könnenmaster
parent
7482b0f399
commit
aaf78509d9
|
|
@ -0,0 +1,182 @@
|
||||||
|
package Anzeige;
|
||||||
|
|
||||||
|
import java.awt.BorderLayout;
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.Font;
|
||||||
|
import java.awt.GridLayout;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
|
|
||||||
|
import Logik.TicTacToe;
|
||||||
|
|
||||||
|
public class GUI extends JFrame{
|
||||||
|
|
||||||
|
private TicTacToe ttt;
|
||||||
|
private ArrayList<JButton> buttons = new ArrayList<>();
|
||||||
|
private JButton neuesSpiel = new JButton();
|
||||||
|
private JButton konsole = new JButton();
|
||||||
|
private boolean spielEnde = false;
|
||||||
|
|
||||||
|
public GUI(TicTacToe ttt) {
|
||||||
|
|
||||||
|
this.ttt = ttt;
|
||||||
|
|
||||||
|
this.setTitle("TicTacToe");
|
||||||
|
this.setSize(500,600);
|
||||||
|
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
this.setLocationRelativeTo(null);
|
||||||
|
this.setLayout(new BorderLayout());
|
||||||
|
|
||||||
|
fuelleArrayList();
|
||||||
|
|
||||||
|
JPanel jp2 = new JPanel();
|
||||||
|
jp2.setLayout(new BorderLayout());
|
||||||
|
jp2.setPreferredSize(new Dimension(500,150));
|
||||||
|
|
||||||
|
neuesSpiel.setFocusPainted(false);
|
||||||
|
neuesSpiel.setFont(new Font("Arial",Font.PLAIN, 30));
|
||||||
|
neuesSpiel.setBackground(new Color(65,65,65));
|
||||||
|
neuesSpiel.setForeground(Color.WHITE);
|
||||||
|
neuesSpiel.setText("Neues Spiel beginnnen?");
|
||||||
|
neuesSpiel.setPreferredSize(new Dimension(500,75));
|
||||||
|
neuesSpiel.setBorderPainted(false);
|
||||||
|
neuesSpiel.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
|
||||||
|
ttt.setCounter(0);
|
||||||
|
ttt.setAktuellerSpieler('X');
|
||||||
|
spielEnde = false;
|
||||||
|
ttt.fuelleTreeMap();
|
||||||
|
|
||||||
|
|
||||||
|
for(JButton b: buttons) {
|
||||||
|
|
||||||
|
b.setForeground(Color.WHITE);
|
||||||
|
b.setText("");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
revalidate();
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
jp2.add(neuesSpiel, BorderLayout.NORTH);
|
||||||
|
|
||||||
|
konsole.setFocusPainted(false);
|
||||||
|
konsole.setFont(new Font("Arial",Font.PLAIN, 30));
|
||||||
|
konsole.setBackground(new Color(90,90,90));
|
||||||
|
konsole.setForeground(Color.WHITE);
|
||||||
|
konsole.setText("Zurück zur Konsole?");
|
||||||
|
konsole.setPreferredSize(new Dimension(500,75));
|
||||||
|
konsole.setBorderPainted(false);
|
||||||
|
konsole.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
dispose();
|
||||||
|
ttt.ermittleEingabeAnfang();
|
||||||
|
|
||||||
|
} catch (Exception e1) {
|
||||||
|
|
||||||
|
System.out.println("Eingabe von GUI zur Konsole konnte nicht aufgerufen werden");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
jp2.add(konsole, BorderLayout.SOUTH);
|
||||||
|
|
||||||
|
|
||||||
|
this.add(jp2, BorderLayout.SOUTH);
|
||||||
|
this.setVisible(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fuelleArrayList() {
|
||||||
|
|
||||||
|
JPanel jp = new JPanel(new GridLayout(3,3));
|
||||||
|
|
||||||
|
for(int i = 0; i < 9; i++) {
|
||||||
|
|
||||||
|
JButton b = new JButton();
|
||||||
|
|
||||||
|
//System.out.println("Button "+i+" wurde erstellt.");
|
||||||
|
|
||||||
|
b.setFocusPainted(false);
|
||||||
|
b.setFont(new Font("Arial",Font.PLAIN, 70));
|
||||||
|
|
||||||
|
if(i%2 == 0) {
|
||||||
|
b.setBackground(new Color(90,90,90));
|
||||||
|
|
||||||
|
}else {
|
||||||
|
b.setBackground(new Color(65,65,65));
|
||||||
|
}
|
||||||
|
|
||||||
|
b.setForeground(Color.WHITE);
|
||||||
|
b.setBorderPainted(false);
|
||||||
|
|
||||||
|
b.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
SwingUtilities.invokeLater(() -> {
|
||||||
|
|
||||||
|
actionListenerInhalt(b);
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
b.setVisible(true);
|
||||||
|
|
||||||
|
|
||||||
|
buttons.add(b);
|
||||||
|
jp.add(b);
|
||||||
|
this.add(jp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void actionListenerInhalt(JButton b) {
|
||||||
|
|
||||||
|
int index = buttons.indexOf(b);
|
||||||
|
if (!ttt.pruefeBelegtesFeld(index) && !spielEnde) {
|
||||||
|
ttt.belegteFelder.put(index, ttt.getAktuellerSpieler());
|
||||||
|
b.setText("" + ttt.getAktuellerSpieler());
|
||||||
|
|
||||||
|
if (ttt.getCounter() >= 4 && ttt.pruefeSieg()) {
|
||||||
|
spielEnde = true;
|
||||||
|
int[] gewinnerIndexe = ttt.getGewinnerIndexe();
|
||||||
|
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
buttons.get(gewinnerIndexe[i]).setForeground(Color.RED);
|
||||||
|
buttons.get(gewinnerIndexe[i]).setText("" + ttt.getAktuellerSpieler());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ttt.setCounter(ttt.getCounter() + 1);
|
||||||
|
|
||||||
|
if (ttt.getAktuellerSpieler() == 'X') {
|
||||||
|
ttt.setAktuellerSpieler('O');
|
||||||
|
} else {
|
||||||
|
ttt.setAktuellerSpieler('X');
|
||||||
|
}
|
||||||
|
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,71 +0,0 @@
|
||||||
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<JButton> 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<Integer, Character> 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');
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,193 @@
|
||||||
|
package Logik;
|
||||||
|
|
||||||
|
import java.util.Scanner;
|
||||||
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
import Anzeige.GUI;
|
||||||
|
|
||||||
|
public class TicTacToe {
|
||||||
|
|
||||||
|
public TreeMap<Integer, Character> belegteFelder = new TreeMap<>();
|
||||||
|
|
||||||
|
private int counter;
|
||||||
|
private GUI gui;
|
||||||
|
private char aktuellerSpieler;
|
||||||
|
private int ausgewaehltesFeld;
|
||||||
|
private int[] gewinnerIndexe = new int[3];
|
||||||
|
|
||||||
|
public TicTacToe() throws Exception {
|
||||||
|
|
||||||
|
ermittleEingabeAnfang();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ermittleEingabeAnfang() throws Exception {
|
||||||
|
|
||||||
|
//setzt praktisch werte zurück
|
||||||
|
fuelleTreeMap();
|
||||||
|
aktuellerSpieler = 'X';
|
||||||
|
counter = 0;
|
||||||
|
|
||||||
|
Scanner s = new Scanner(System.in);
|
||||||
|
System.out.println("\nWollen Sie mit einer GUI('gui' eingeben) oder mit der Konsole('konsole' eingeben) spielen?");
|
||||||
|
String befehl = s.nextLine();
|
||||||
|
|
||||||
|
if (befehl.equalsIgnoreCase("gui")) {
|
||||||
|
|
||||||
|
System.out.println("Um ein Feld für ein Zug auszuwählen muss dieses Feld angeklickt werden...");
|
||||||
|
|
||||||
|
gui = new GUI(this);
|
||||||
|
|
||||||
|
} else if (befehl.equalsIgnoreCase("konsole")) {
|
||||||
|
|
||||||
|
gibAktuellenStandAus();
|
||||||
|
|
||||||
|
System.out.println("Die Felder sind von 0 bis 8 durchnummerriert.\nUm ein Feld für ein Zug auszuwählen muss die Zahl des Feldes eingegeben werden...");
|
||||||
|
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
|
||||||
|
erfasseEingabe();
|
||||||
|
gibAktuellenStandAus();
|
||||||
|
|
||||||
|
if (i >= 4 && pruefeSieg()) break;
|
||||||
|
|
||||||
|
if (aktuellerSpieler == 'X')aktuellerSpieler = 'O';
|
||||||
|
else aktuellerSpieler = 'X';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ermittleEingabeAnfang();
|
||||||
|
|
||||||
|
}else if(befehl.equalsIgnoreCase("ende")) {
|
||||||
|
System.out.println("Spiel wird beendet.");
|
||||||
|
System.exit(0);
|
||||||
|
}else {
|
||||||
|
System.out.println("Eingabe ungültig!\nVersuchen Sie es erneut.");
|
||||||
|
ermittleEingabeAnfang();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void fuelleTreeMap() {
|
||||||
|
for (int i = 0; i < 9; i++) {
|
||||||
|
belegteFelder.put(i, (char) (48 + i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void gibAktuellenStandAus() {
|
||||||
|
|
||||||
|
System.out.println("\n-------------");
|
||||||
|
for (int i = 0; i < 9; i+=3) {
|
||||||
|
System.out.printf("|%2s |%2s |%2s |", belegteFelder.get(i), belegteFelder.get(i+1), belegteFelder.get(i+2));
|
||||||
|
System.out.println("\n-------------");
|
||||||
|
}
|
||||||
|
System.out.println();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void erfasseEingabe() throws Exception {
|
||||||
|
|
||||||
|
Scanner s = new Scanner(System.in);
|
||||||
|
|
||||||
|
System.out.print("\nSpieler " + aktuellerSpieler + " ist am Zug!\nGeben Sie eine Feldnummer ein:\n>>");
|
||||||
|
|
||||||
|
try {
|
||||||
|
ausgewaehltesFeld = s.nextInt();
|
||||||
|
System.out.println("Die Eingabe: " + ausgewaehltesFeld);
|
||||||
|
if(pruefeBelegtesFeld(ausgewaehltesFeld)) throw new Exception();
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("Es wurde keine passende Eingabe getätigt,\nversuchen Sie es erneut...");
|
||||||
|
//e.printStackTrace();
|
||||||
|
erfasseEingabe();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized boolean pruefeBelegtesFeld(int index) {
|
||||||
|
|
||||||
|
System.out.println("Zu pruefender Index: "+index);
|
||||||
|
if (belegteFelder.get(index) == 'X' || belegteFelder.get(index) == 'O') {
|
||||||
|
System.out.println("Feld " + ausgewaehltesFeld + " schon belegt, machen Sie eine erneute Eingabe...");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
belegteFelder.put(ausgewaehltesFeld, aktuellerSpieler);
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean pruefeSieg() {
|
||||||
|
|
||||||
|
if ((belegteFelder.get(0) == aktuellerSpieler) && (belegteFelder.get(1) == aktuellerSpieler) && (belegteFelder.get(2) == aktuellerSpieler)) {
|
||||||
|
System.out.println("Spieler " + aktuellerSpieler + " hat drei '" + aktuellerSpieler+ "' in der ersten Waagerechte und hat somit gewonnen!");
|
||||||
|
gewinnerIndexe[0] = 0;
|
||||||
|
gewinnerIndexe[1] = 1;
|
||||||
|
gewinnerIndexe[2] = 2;
|
||||||
|
return true;
|
||||||
|
} else if ((belegteFelder.get(3) == aktuellerSpieler) && (belegteFelder.get(4) == aktuellerSpieler) && (belegteFelder.get(5) == aktuellerSpieler)) {
|
||||||
|
System.out.println("Spieler " + aktuellerSpieler + " hat drei '" + aktuellerSpieler+ "' in der zweiten Waagerechte und hat somit gewonnen!");
|
||||||
|
gewinnerIndexe[0] = 3;
|
||||||
|
gewinnerIndexe[1] = 4;
|
||||||
|
gewinnerIndexe[2] = 5;
|
||||||
|
return true;
|
||||||
|
} else if ((belegteFelder.get(6) == aktuellerSpieler) && (belegteFelder.get(7) == aktuellerSpieler) && (belegteFelder.get(8) == aktuellerSpieler)) {
|
||||||
|
System.out.println("Spieler " + aktuellerSpieler + " hat drei '" + aktuellerSpieler+ "' in der dritten Waagerechte und hat somit gewonnen!");
|
||||||
|
gewinnerIndexe[0] = 6;
|
||||||
|
gewinnerIndexe[1] = 7;
|
||||||
|
gewinnerIndexe[2] = 8;
|
||||||
|
return true;
|
||||||
|
} else if ((belegteFelder.get(0) == aktuellerSpieler) && (belegteFelder.get(3) == aktuellerSpieler) && (belegteFelder.get(6) == aktuellerSpieler)) {
|
||||||
|
System.out.println("Spieler " + aktuellerSpieler + " hat drei '" + aktuellerSpieler+ "' in der ersten Senkrechte und hat somit gewonnen!");
|
||||||
|
gewinnerIndexe[0] = 0;
|
||||||
|
gewinnerIndexe[1] = 3;
|
||||||
|
gewinnerIndexe[2] = 6;
|
||||||
|
return true;
|
||||||
|
} else if ((belegteFelder.get(1) == aktuellerSpieler) && (belegteFelder.get(4) == aktuellerSpieler) && (belegteFelder.get(7) == aktuellerSpieler)) {
|
||||||
|
System.out.println("Spieler " + aktuellerSpieler + " hat drei '" + aktuellerSpieler+ "' in der zweiten Senkrechte und hat somit gewonnen!");
|
||||||
|
gewinnerIndexe[0] = 1;
|
||||||
|
gewinnerIndexe[1] = 4;
|
||||||
|
gewinnerIndexe[2] = 7;
|
||||||
|
return true;
|
||||||
|
} else if ((belegteFelder.get(2) == aktuellerSpieler) && (belegteFelder.get(5) == aktuellerSpieler) && (belegteFelder.get(8) == aktuellerSpieler)) {
|
||||||
|
System.out.println("Spieler " + aktuellerSpieler + " hat drei '" + aktuellerSpieler+ "' in der dritten Senkrechte und hat somit gewonnen!");
|
||||||
|
gewinnerIndexe[0] = 2;
|
||||||
|
gewinnerIndexe[1] = 5;
|
||||||
|
gewinnerIndexe[2] = 8;
|
||||||
|
return true;
|
||||||
|
} else if ((belegteFelder.get(0) == aktuellerSpieler) && (belegteFelder.get(4) == aktuellerSpieler) && (belegteFelder.get(8) == aktuellerSpieler)) {
|
||||||
|
System.out.println("Spieler " + aktuellerSpieler + " hat drei '" + aktuellerSpieler+ "' in der ersten Diagonale und hat somit gewonnen!");
|
||||||
|
gewinnerIndexe[0] = 0;
|
||||||
|
gewinnerIndexe[1] = 4;
|
||||||
|
gewinnerIndexe[2] = 8;
|
||||||
|
return true;
|
||||||
|
} else if ((belegteFelder.get(2) == aktuellerSpieler) && (belegteFelder.get(4) == aktuellerSpieler) && (belegteFelder.get(6) == aktuellerSpieler)) {
|
||||||
|
System.out.println("Spieler " + aktuellerSpieler + " hat drei '" + aktuellerSpieler+ "' in der zweiten Diagonale und hat somit gewonnen!");
|
||||||
|
gewinnerIndexe[0] = 2;
|
||||||
|
gewinnerIndexe[1] = 4;
|
||||||
|
gewinnerIndexe[2] = 6;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAktuellerSpieler(char aktuellerSpieler) {
|
||||||
|
this.aktuellerSpieler = aktuellerSpieler;
|
||||||
|
}
|
||||||
|
|
||||||
|
public char getAktuellerSpieler() {
|
||||||
|
return aktuellerSpieler;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeMap<Integer, Character> getBelegteFelder() {
|
||||||
|
return belegteFelder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[] getGewinnerIndexe() {
|
||||||
|
return gewinnerIndexe;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCounter() {
|
||||||
|
return counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCounter(int counter) {
|
||||||
|
this.counter = counter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
package Logik;
|
||||||
|
|
||||||
|
public class main {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
TicTacToe ttt = new TicTacToe();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,154 +0,0 @@
|
||||||
package Verarbeitung;
|
|
||||||
|
|
||||||
import java.util.Scanner;
|
|
||||||
import java.util.TreeMap;
|
|
||||||
|
|
||||||
import GUI.GUI;
|
|
||||||
|
|
||||||
public class TicTacToe {
|
|
||||||
|
|
||||||
private GUI gui;
|
|
||||||
private TreeMap<Integer, Character> 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<Integer, Character> getBelegteFelder() {
|
|
||||||
return belegteFelder;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
package Verarbeitung;
|
|
||||||
|
|
||||||
public class main {
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
|
|
||||||
TicTacToe ttt = new TicTacToe();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue