Ein einfaches Spiel: TicTacToe. Fehler und Vorschläge

Status
Nicht offen für weitere Antworten.

Purgatory

Neues Mitglied
Es geht um das einfach Spiel "TicTacToe", in dem man versuchen muss 3 richtige in einer Reihe zu kriegen, egal ob horizontal, vertikal oder diagonal.. Nun bin ich soweit: Ich habe das layout und dass die buttons sich ändern bzw auch blockiert werden, dies jedoch mit einer if else konstruktion (auch andere ideen erwünscht). Hab in Zeile 248 und 250 noch einen Fehler, weiss aber gerade nicht was, weil ich hundemüde bin =) Hier das, was ich habe:

import java.awt.*;
import java.awt.event.*;
class TicTacToe extends Frame
{

Button ol = new Button ();
Button om = new Button ();
Button or = new Button ();
Button ml = new Button ();
Button mm = new Button ();
Button mr = new Button ();
Button ul = new Button ();
Button um = new Button ();
Button ur = new Button ();
int i = 1;
public TicTacToe()
{
setTitle("TicTacToe version 0.015 by Michael S.");
setSize(500,500);
setLayout(new GridLayout(3,3));
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
ol.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
if(i%2 == 0)
{


ol.setLabel("O");
ol.setEnabled(false);

i++;
}
else
{

ol.setLabel("X");
ol.setEnabled(false);

i++;
}
}
});
om.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
if(i%2 == 0)
{


om.setLabel("O");
om.setEnabled(false);

i++;
}
else
{

om.setLabel("X");
om.setEnabled(false);

i++;
}
}
});
or.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
if(i%2 == 0)
{


or.setLabel("O");
or.setEnabled(false);

i++;
}
else
{

or.setLabel("X");
or.setEnabled(false);

i++;
}
}
});
ml.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
if(i%2 == 0)
{


ml.setLabel("O");
ml.setEnabled(false);

i++;
}
else
{

ml.setLabel("X");
ml.setEnabled(false);

i++;
}
}
});
mm.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
if(i%2 == 0)
{


mm.setLabel("O");
mm.setEnabled(false);

i++;
}
else
{

mm.setLabel("X");
mm.setEnabled(false);

i++;
}
}
});
mr.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
if(i%2 == 0)
{

mr.setLabel("O");
mr.setEnabled(false);

i++;
}
else
{

mr.setLabel("X");
mr.setEnabled(false);

i++;
}
}
});
ul.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
if(i%2 == 0)
{

ul.setLabel("O");
ul.setEnabled(false);

i++;
}
else
{

ul.setLabel("X");
ul.setEnabled(false);

i++;
}
}
});
um.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
if(i%2 == 0)
{

um.setLabel("O");
um.setEnabled(false);

i++;
}
else
{

um.setLabel("X");
um.setEnabled(false);

i++;
}
}
});
ur.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
if(i%2 == 0)
{

ur.setLabel("O");
ur.setEnabled(false);

i++;
}
else
{

ur.setLabel("X");
ur.setEnabled(false);

i++;
}
}
});

add (ol);
add (om);
add (or);
add (ml);
add (mm);
add (mr);
add (ul);
add (um);
add (ur);


setVisible(true);
}
public static void main(String[] args);

}
{
new TicTacToe();
}


}

Nun, kann mir jemand sagen, wie ich es schaffe, dass er mir das Spiel zugunsten des entsprechende Spielers entscheidet bzw ein unentschieden erkennt? Dachte da an eine sache mit integer wobei der integer immer weiter ansteigt pro gedrückte taste und dann bei 9 halt abfragt wo was steht um zu entscheiden wer gewinnt... Bin wie gesagt noch relativer anfänger und würde mich freuen, wenn mir jemand mit wenig fachbefehlen weiterhelfen kann :oops:

EDIT: Ist unübersichtlich, hier noch ein DateiDownload von der java datei:
TicTacToe
 
S

SlaterB

Gast
cooles Programm, geht auch kürzer ;)

Code:
import java.awt.Button;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class TicTacToe extends Frame {

	Button[] b = new Button[9];

	int i = 1;

	public TicTacToe() {
		setTitle("TicTacToe version 0.015 by Michael S.");
		setSize(500, 500);
		setLayout(new GridLayout(3, 3));
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		ActionListener listy = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Button b = (Button) e.getSource();
				if (i % 2 == 0) {
					b.setLabel("O");
				} else {
					b.setLabel("X");
				}
				b.setEnabled(false);
				i++;
			}
		};

		Font f = new Font("Times New Roman",0,72);
		for (int i = 0; i < 9; i++) {
			b[i] = new Button("?");
			b[i].addActionListener(listy);
			b[i].setFont(f);
			add(b[i]);
		}
		setVisible(true);
	}
	public static void main(String[] args) {
		new TicTacToe();
	}

}

dir fehlt noch eine Operation die das Spielfeld prüft,
diese muss alle Reihen und Spalten anschauen,

a la

Code:
spieler = "X" // oder "O"

// erste Reihe:
if (spieler.equals(ol.getText()) && zweites && drittes)
  gewonnen
else
..

wenn du so wie in meinem Beispiel mit Array arbeitest lässt sich da noch ein wenig mathematisch tricksen,
um Codewiederholung zu sparen,

aber bei 3 Zeilen + 3 Spalten + 2 Diagonalen lohnt sich das kaum,
dann eben die 8 Zeilen ausschreiben,

die Array-Positionen 0,1,2 entsprechen ol, om und or usw.

------

wenn du übrigens Arrays generell nicht magst, dann beschränke dich wenigstens auf einen ActionListener listy wie in meinem Code,
kannst dann

ol.addActionListener(listy);
om.addActionListener(listy);
or.addActionListener(listy);
usw. schreiben,
das ist immer noch deulich kürzer
 

Purgatory

Neues Mitglied
oh nein, equals, ich hab jetzt voll viel rumprobiert, aber er erkennt den spieler nicht als variable... dann hab ichs mit string versucht, den erkennt er aber auch nicht! Weiss jemand wie ich die equals sache in mein programme bekomme?
 
S

SlaterB

Gast
erkläre genauer was nicht geht


String spieler = "X";
String buttonText = ol.getText();

if (spieler.equals(buttonText )) {
..
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Kamy Ein einfaches "Vier Gewinnt" Spiel für Anfängerin Java Basics - Anfänger-Themen 51
H ein einfaches Tic Tac Toe Spiel Java Basics - Anfänger-Themen 1
R OOP Einfaches Programmierbeispiel für Assoziation, Aggregation und Komposition gesucht Java Basics - Anfänger-Themen 10
J Einfaches Quadrat auf der Console ausgeben lassen Java Basics - Anfänger-Themen 7
L Einfaches Kartenspiel (Spieler Klasse) Java Basics - Anfänger-Themen 14
R Einfaches refresh während runtime Java Basics - Anfänger-Themen 4
M JSP-Einfaches Bild anzeigen Java Basics - Anfänger-Themen 4
F Einfaches Threadbeispiel.. Java Basics - Anfänger-Themen 7
S Referentielle Integrität ? (Einfaches Bsp) Java Basics - Anfänger-Themen 2
G Erste Schritte Einfaches Gästebuch erstellen mit Array Java Basics - Anfänger-Themen 7
V Klassen import - einfaches Umleiten auf eigene Klassen? Java Basics - Anfänger-Themen 8
H Erste Schritte Einfaches Programm und GUI zusammen bringen Java Basics - Anfänger-Themen 3
A Android Datenbank gaaanz einfaches Insert geht nicht - warum? Java Basics - Anfänger-Themen 4
B OOP einfaches regex Java Basics - Anfänger-Themen 10
K einfaches Drucken von Text (und ggf Bildern,gemischt) Java Basics - Anfänger-Themen 11
M Ganz einfaches Beispiel, finde den Fehler aber nicht :( Java Basics - Anfänger-Themen 2
S Einfaches Regulaerer Ausdruck Problem Java Basics - Anfänger-Themen 7
E einfaches Schachbrett generieren Java Basics - Anfänger-Themen 9
M Einfaches TicTacToe Programm Java Basics - Anfänger-Themen 19
S einfaches Pokerprogramm Java Basics - Anfänger-Themen 52
S KeyListener für einfaches Programm Java Basics - Anfänger-Themen 3
H einfaches Array -> ']' expected Java Basics - Anfänger-Themen 9
H Webservice - Einfaches Beispiel Java Basics - Anfänger-Themen 2
F Ich raffs nicht! - Wie mache ich ein einfaches Java-window? Java Basics - Anfänger-Themen 54
S Einfaches int Array gibt über System.out.println merkwürden Wert aus Java Basics - Anfänger-Themen 9
K Einfaches Bubblesort Java Basics - Anfänger-Themen 11
O einfaches rechnen mit zahlen Java Basics - Anfänger-Themen 4
H Einfaches Date-parse problem Java Basics - Anfänger-Themen 2
T Array auf einfaches Element umwandeln Java Basics - Anfänger-Themen 8
G einfaches Regex Problem Java Basics - Anfänger-Themen 4
M EInfaches Addieren mit Abbruchbedingung Java Basics - Anfänger-Themen 9
M [Einfaches Beispiel] Problem mit innere Klassen Java Basics - Anfänger-Themen 4
S Einfaches Rechenprogramm Java Basics - Anfänger-Themen 2
G Einfaches Rechenprogramm schreiben! Java Basics - Anfänger-Themen 8
A ausgabe eines arrays - einfaches beispiel Java Basics - Anfänger-Themen 4
M Einfaches Menü erstellen Java Basics - Anfänger-Themen 106
D was ist denn nun schon wieder? Einfaches JSP. Java Basics - Anfänger-Themen 6
D Ein einfaches Problem aber ich brauche einen TIP Java Basics - Anfänger-Themen 2
R einfaches Programm, viele Probleme Java Basics - Anfänger-Themen 29
C Einfaches Paint-Programm Java Basics - Anfänger-Themen 9
F einfaches Menue in einer Textkonsole Java Basics - Anfänger-Themen 4
W einfaches Frame öffnen Java Basics - Anfänger-Themen 2
N Wahrscheinlich ganz einfaches Problem, aber unverständlich! Java Basics - Anfänger-Themen 3
S einfaches script mit Eingabeaufforderung starten (javac) Java Basics - Anfänger-Themen 8
B Einfaches Speichern und Laden in Java? Java Basics - Anfänger-Themen 3
L Einfaches Warten in eine Schleife Java Basics - Anfänger-Themen 9
P einfaches Perl-Skript aufrufen Java Basics - Anfänger-Themen 7
G einfaches jdialog beispiel Java Basics - Anfänger-Themen 1
B Oberflaecheprog einfaches beispiel (button action listener) Java Basics - Anfänger-Themen 5
N Vermutlich einfaches Problem.. Java Basics - Anfänger-Themen 3
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
I Threads Spiel gol Java Basics - Anfänger-Themen 6
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
enesss tictactoe spiel Java Basics - Anfänger-Themen 5
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
Ekooekoo Hilfe spiel Java Basics - Anfänger-Themen 5
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
Kennewick Basketball Spiel Ergebnisse Java Basics - Anfänger-Themen 11
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
R Hangman-Spiel-zufälliges Wort ermitteln Java Basics - Anfänger-Themen 4
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
I Simples Risiko-Spiel Java Basics - Anfänger-Themen 5
Hallolu Pong-Spiel: Schläger schneller werden lassen Java Basics - Anfänger-Themen 9
M Java Spiel wie Wer wird Millionär Java Basics - Anfänger-Themen 1
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
C Java Spiel Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
B Memory Spiel Java Basics - Anfänger-Themen 29
J Memory-Spiel Aktivierung der Methode mit Timer Java Basics - Anfänger-Themen 44
A Breakout-Spiel , Ball mit Platten abprallen lassen Java Basics - Anfänger-Themen 1
S Spiel programmieren mit Java Java Basics - Anfänger-Themen 11
Olis Erste Schritte Simples Memory Spiel möglich? Java Basics - Anfänger-Themen 1
J Spiel mit Button klick starten Java Basics - Anfänger-Themen 9
C Rekursives Backtracking beim Spiel Peg Java Basics - Anfänger-Themen 22
M Spiel programmieren Java Basics - Anfänger-Themen 16
Spencer Reid Feedback zu kleinem Spiel Java Basics - Anfänger-Themen 4
kokojamboo92 Spiel programmieren Java Basics - Anfänger-Themen 1
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
I Spiel Java Basics - Anfänger-Themen 34
I Spiel programmieren. Java Basics - Anfänger-Themen 16
B Hilfe bei Escape - Spiel Java Basics - Anfänger-Themen 6
S Java-Spiel Java Basics - Anfänger-Themen 2
M Nim-Spiel geht in den negativen Bereich Java Basics - Anfänger-Themen 1
K Klassen Registrierungsseite für ein Spiel Java Basics - Anfänger-Themen 6
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 2
M Brauche Tipps für ein Spiel Java Basics - Anfänger-Themen 4
S Probleme mit GamGrid Spiel-Erstellung => Actor reagiert nicht auf Tastatur Java Basics - Anfänger-Themen 2
Mxxxt Mosaik Spiel - Steuerpanel wird nicht angezeigt Java Basics - Anfänger-Themen 5
M Erste Schritte Zufallszahl Spiel Problem Java Basics - Anfänger-Themen 7
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben