Benutzer-Werkzeuge

Webseiten-Werkzeuge


info10:aufgaben:tictactoe

Tic-Tac-Toe

Projektbeschreibung
  • Schreibe ein Programm, bei dem gegen einen Mitspieler Tic-Tac-Toe gespielt wird. Das Spielbrett besteht aus neun Spielfeldern, welche von den beiden Spielern abwechselnd mit unterschiedlichen Spielsteinen (ein Spieler rot, der andere blau) belegt werden. Derjenige gewinnt, der erstmals eine Dreierreihe (horizontal, vertikal, diagonal) mit seinen Spielsteinen belegen kann.
  • Erstelle dazu eine eigene Klasse TicTacToe.
  • Überlege Dir, welche Attribute und Methoden benötigt werden und implementiere die Klasse. Hinweis: Ein TicTacToe-Feld besteht aus 9 Spielwalzen, die man am einfachsten in einem Array mit 9 Feldern verwaltet.
  • Es werden Methoden zum blau/rot Färben der Felder benötigt. Implementiere dazu am besten eine Methode faerbeBlau(int nr) und eine Methode faerbeRot(int nr).
  • Das Programm soll automatisch erkennen, wenn ein Spieler gewonnen hat und eine entsprechende Meldung ausgeben. Implementiere eine Methode checkIfWon(), die prüft, ob ein Spieler gewonnen hat. Rufe die Methode an den richtigen Stellen im Code auf.
  • Ist ein Felder bereits rot oder blau, so darf es nicht durch den gegnerischen Spieler überschrieben werden. Die Methoden sind also so zu programmieren, dass nur dann etwas passiert, wenn das Feld weiß ist.
  • Die Felder sollen per Mausklick anwählbar sein, d.h. Das Feld soll sich beim Anklicken blau oder rot färben, je nachdem welcher Spieler an der Reihe ist.
Mausklickunterstützung

1. Die Klasse TicTacToe muss zu einem MouseListener gemacht werden. Das ist eine Klasse, die auf Mouse-Ereignisse reagiert. Dazu muss der Quellcode wie folgt abgeändert werden:

//Vor der Klassendefinition einfügen
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
 
public class TicTacToe implements MouseListener{ 
    //Attribute
    ...
 
    //Konstruktor
    public TicTacToe(){
       ...
       ZEICHENFENSTER.gibFrame().addMouseListener(this);
    }
 
    //Methoden
    ...
}

2. In der Klasse ZEICHENFENSTER muss die folgende Methode eingefügt werden

public static JFrame gibFrame(){
  if (singleton==null){singleton=new ZEICHENFENSTER("Das Zeichenfenster");}
  singleton.zeige();
  return singleton.frame;
}

3. In die Klasse TicTacToe müssen die folgenden Methoden eingefügt werden.

public void mousePressed(MouseEvent e) { ... }
public void mouseReleased(MouseEvent e) { ... } 
public void mouseEntered(MouseEvent e) { ... }
public void mouseExited(MouseEvent e) { ... }
public void mouseClicked(MouseEvent e) { ... }

4. Die Methode mouseClicked(MouseEvent e) muss implementiert werden. Testweise kann in den Methoderumpf folgendes eingetragen werden:

System.out.println(''Die Maus wurde angeklickt.'');

Jetzt muss nach einem Klick auf das ZEICHENFENSTER die Meldung „Die Maus wurde angeklickt“ ausgegeben werden.

5. Im Interface MouseEvent im Paket java.awt.event. (zu finden in der API Specifikation, Link auf der Projekthomepage) gibt es Methoden, die man auf e (also das MouseEvent) anwenden kann um die Position der Maus zu bekommen. Damit kann man anschließend das richtige Feld bunt färben.

Mit e.getX() und e.getY() wird jeweils die x-Koordinate / y-Koordinate der Position des Mauszeigers zum Klick-Zeitpunkt als int-Werte zurückgeliefert . Damit muss weiter gearbeitet werden.

info10/aufgaben/tictactoe.txt · Zuletzt geändert: 2022/07/07 10:12 von Ulrich Schneider