Hallo,
ich bin relativ neu in Sachen Programmierung, und habe vor kurzem angefangen, Java zu lernen. Nun habe ich mir zur Aufgabe gemacht, ein Tic Tac Toe Spiel zu programmieren. Da ich in Sachen Arrays noch nicht fuxig bin, habe ich mir gedacht, ich versuche mich mal dran das ganze ohne Arrays zu machen. Nach einigem hin und her, habe ich ein funktionierendes Spiel. Spieler gegen Spieler.
Nun wollte ich euch fragen, ob ihr irgendwelche Verbesserungsvorschläge für mich hättet, und mir vielleicht sogar bei einer eigenen KI helfen könntet, allerdings "Noob" Freundlich .
Ich freue mich auf eure Antworten!
Gruß
ich bin relativ neu in Sachen Programmierung, und habe vor kurzem angefangen, Java zu lernen. Nun habe ich mir zur Aufgabe gemacht, ein Tic Tac Toe Spiel zu programmieren. Da ich in Sachen Arrays noch nicht fuxig bin, habe ich mir gedacht, ich versuche mich mal dran das ganze ohne Arrays zu machen. Nach einigem hin und her, habe ich ein funktionierendes Spiel. Spieler gegen Spieler.
Nun wollte ich euch fragen, ob ihr irgendwelche Verbesserungsvorschläge für mich hättet, und mir vielleicht sogar bei einer eigenen KI helfen könntet, allerdings "Noob" Freundlich .
Ich freue mich auf eure Antworten!
Gruß
Java:
import javax.swing.JOptionPane;
public class TicTacToe {
//Felder Definition, Statisch, für alle zugänglich
static int AD = 0;
static int AE = 0;
static int AF = 0;
static int BD = 0;
static int BE = 0;
static int BF = 0;
static int CD = 0;
static int CE = 0;
static int CF = 0;
//Main beginnt
public static void main(String[] args) {
//Setze Felder auf Wert X,Y
int SpielerX = 1;
int SpielerO = -1;
//Welcher Spieler ist gerade dran?
int currentPlayer = SpielerX;
//Welcher Spieler ist der nächste?
int nextPlayer = SpielerO;
//Wer ist der nächste Spieler?
String nextPlayerIs;
//zugNichtGültig = true - Zug nicht gültig
//zugNichtGültig = false - Zug gültig
boolean zugNichtGültig = true;
int status = 0;
/* Der Status des Spiels
0 = Spiel läuft
1 = Spiel wurde beendet, Spieler hat gewonnen.
2 = Spiel wurde unentschieden beendet. Kein Spieler hat gewonnen.
*/
/*
A B C
D
E
F
*/
//Starten der Schleife
while(status == 0 ){
//User Eingabe. Springt zum Anfang zurück, falls falsche Eingabe oder doppelte Eingabe
while(zugNichtGültig){
String s = JOptionPane.showInputDialog("Bitte wählen Sie ein Feld.");
if(s.equalsIgnoreCase("AD") ){ if(AD == 0 ){
AD = currentPlayer;
break;
}else{
System.out.println("Dieses Feld ist bereits belegt!");
zugNichtGültig = true;
}
}else if(s.equalsIgnoreCase("AE")){ if(AE == 0 ){
AE = currentPlayer;
break;
}else{
System.out.println("Dieses Feld ist bereits belegt!");
zugNichtGültig = true;
}
}else if(s.equalsIgnoreCase("AF")){ if(AF == 0 ){
AF = currentPlayer;
break;
}else{
System.out.println("Dieses Feld ist bereits belegt!");
zugNichtGültig = true;
}
}else if(s.equalsIgnoreCase("BD")){ if(BD == 0 ){
BD = currentPlayer;
break;
}else{
System.out.println("Dieses Feld ist bereits belegt!");
zugNichtGültig = true;
}
}else if(s.equalsIgnoreCase("BE")){ if(BE == 0 ){
BE = currentPlayer;
break;
}else{
System.out.println("Dieses Feld ist bereits belegt!");
zugNichtGültig = true;
}
}else if(s.equalsIgnoreCase("BF")){ if(BF == 0 ){
BF = currentPlayer;
break;
}else{
System.out.println("Dieses Feld ist bereits belegt!");
zugNichtGültig = true;
}
}else if(s.equalsIgnoreCase("CD")){ if(CD == 0 ){
CD = currentPlayer;
break;
}else{
System.out.println("Dieses Feld ist bereits belegt!");
zugNichtGültig = true;
}
}else if(s.equalsIgnoreCase("CE")){ if(CE == 0 ){
CE = currentPlayer;
break;
}else{
System.out.println("Dieses Feld ist bereits belegt!");
zugNichtGültig = true;
}
}else if(s.equalsIgnoreCase("CF")){ if(CF == 0 ){
CF = currentPlayer;
break;
}else{
System.out.println("Dieses Feld ist bereits belegt!");
zugNichtGültig = true;
}
}else{
System.out.println("Kein gültiges Feld!");
zugNichtGültig = true;
}
}
//Spielfeld Ausgabe
spielFeld();
if(nextPlayer == 1){
nextPlayerIs = "X";
}else{
nextPlayerIs = "O";
}
//Spiel vorbei?
if(checkWinner(currentPlayer)){
System.out.println("Das Spiel wurde beendet.");
status = 1;
if(currentPlayer == SpielerO){
System.out.println("Spieler O hat gewonnen.");
}
if(currentPlayer == SpielerX){
System.out.println("Spieler X hat gewonnen.");
}
break;
}else if(checkEnd()){
status = 2;
System.out.println("Das Spiel wurde beendet. Keine Partei hat gewonnen.");
break;
}else if(status == 0){
System.out.println("Das Spiel läuft noch. Spieler " + nextPlayerIs + " ist am Zug.");
if(nextPlayer == SpielerO){
nextPlayer = SpielerX;
}else{
nextPlayer = SpielerO;
}
//Wechsle Spieler
if(currentPlayer == SpielerX) {
currentPlayer = SpielerO;
}else{
currentPlayer = SpielerX;
}
}
}
}
//Hat einer gewonnen? TRUE oder FALSE
public static boolean checkWinner(int Player){
//Linien
//Horizontale
int ABCD = AD + BD + CD;
int ABCE = AE + BE + CE;
int ABCF = AF + BF + CF;
//Vertikale
int DEFA = AD + AE + AF;
int DEFB = BD + BE + BF;
int DEFC = CD + CE + CF;
//Schräge
int ADBECF = AD + BE + CF;
int CDBEAF = CD + BE + AF;
//3 Nebeneinander?
if(
ABCD == 3*Player ||
ABCE == 3*Player ||
ABCF == 3*Player ||
DEFA == 3*Player ||
DEFB == 3*Player ||
DEFC == 3*Player ||
ADBECF == 3*Player ||
CDBEAF == 3*Player
){
return true;
}return false;
}
//Sind alle Spielfelder besetzt? TRUE oder FALSE
public static boolean checkEnd(){
if(
AD != 0 &&
AE != 0 &&
AF != 0 &&
BD != 0 &&
BE != 0 &&
BF != 0 &&
CD != 0 &&
CE != 0 &&
CF != 0 )
{ return true;
}return false;
}
//Spielfeld Ausgabe
public static void spielFeld(){
if(AD == 1){
System.out.print("X ");
}else if(AD == -1){
System.out.print("O ");
}else{
System.out.print("- ");
}
if(AE == 1){
System.out.print("X ");
}else if(AE == -1){
System.out.print("O ");
}else{
System.out.print("- ");
}
if(AF == 1){
System.out.println("X ");
}else if(AF == -1){
System.out.println("O ");
}else{
System.out.println("- ");
}
if(BD == 1){
System.out.print("X ");
}else if(BD == -1){
System.out.print("O ");
}else{
System.out.print("- ");
}
if(BE == 1){
System.out.print("X ");
}else if(BE == -1){
System.out.print("O ");
}else{
System.out.print("- ");
}
if(BF == 1){
System.out.println("X ");
}else if(BF == -1){
System.out.println("O ");
}else{
System.out.println("- ");
}
if(CD == 1){
System.out.print("X ");
}else if(CD == -1){
System.out.print("O ");
}else{
System.out.print("- ");
}
if(CE == 1){
System.out.print("X ");
}else if(CE == -1){
System.out.print("O ");
}else{
System.out.print("- ");
}
if(CF == 1){
System.out.println("X ");
}else if(CF == -1){
System.out.println("O ");
}else{
System.out.println("- ");
}
}
}
Zuletzt bearbeitet: