Control von Gomoku

Die folgende einfache Implementierung des Gomoku-Controls liegt in der Datei Control.java vor. Sie ist - technisch bedingt - abhängig von View, zumal sie Mausklicke auf der Darstellung auffängt und interpretiert.

package control;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import view.IView;
import view.View; // technisch bedingt: addMouseListener ist nicht in der Schnittstelle
import model.BesetztException;
import model.IModel;
import model.Spieler;
/** Control mit Maussteuerung für Gomoku mit MVC
 * @author Prof. Dr. Andreas Solymosi, Beuth-Hochschule für Technik, (c) 2012, solymosi@tfh-berlin.de
 * @version 5/1/12 
 */
public class Control {
  final private IModel model;
  final private View view;
  public Control(final IModel m, final IView v) {
   this.model = m;
   this.view = (View)v;
   final int höhe = view.brettgröße().height, 
     breite = view.brettgröße().width;
   view.addMouseListener(new MouseAdapter() {
     @Override
     public void mouseClicked(MouseEvent mausereignis) {
       if (model.sieger() != Spieler.LEER) { // Spiel ist zu Ende
         model.start(); // Neuanfang
       } else {
         Component komponente = mausereignis.getComponent();
         try { // Koordinaten des Felds aus dem Mausklick berechnen:
          model.steinSetzen(mausereignis.getX() / (komponente.getWidth() / breite), mausereignis.getY() / (komponente.getHeight() / höhe));
         } catch (BesetztException e) {
          return; // keine Veränderung
         }
       }
       view.neuZeichnen(); // Veränderung
     }
   });
  }
}

Eine fortschrittlichere Control-Implementierung könnte z.B. die Züge des Gegners aus dem Internet oder über Bluetooth empfangen. Ein Gomoku-Spielengine würde ohne View arbeiten; Control kann dann und alle Züge per Email empfangen und an Model weiterleiten. Viele weitere Control-Implementierungen sind denkbar.


Version: 5. Februar 2012

© Prof. Solymosi, 20102 Beuth-Hochschule für Technik Berlin, Fachbereich VI (Informatik und Medien)

solymosibht-berlin.de