Package hoverball

Class Controller

java.lang.Object
hoverball.Hovlet
hoverball.Controller

public final class Controller
extends Hovlet
Der Controller, basierend auf der Klasse Hovlet, steuert den Simulator, mit dem er verbunden ist. Er meldet sich als Control Client beim Simulator an und kann somit die gesamte Vielfalt der netzwerkbasierten Steuerung des Simulators nutzen.

Zu den Funktionen des Controllers gehören:

  • die Verwaltung der Channels,
  • die Verwaltung der Optionen,
  • die Steuerung der Simulation,
  • die Visualisierung der Hoverball-Sphäre auf dem Screen.
  • Für eine genauere Beschreibung der Funktionen des Controllers sei auf das Hoverball Manual verwiesen.

    Weiterhin hat der Controller die wichtige Aufgabe, das Graphical Debugging der Java-Units, die bei ihm mit dem Befehl debug(...) registriert wurden, anzuzeigen. Dieses kann dann über das Menu Debug des Controllers für die einzelnen Units ausgewählt oder durch Click auf die Hovlet-Icons der Units ein- und ausgeblendet werden. Siehe hierzu auch hoverball.debug.Debug.

    Auf dem Screen ist der Human-KeyListener installiert. Alle Human Units (in derselben Java-Instanz) sind also steuerbar, wenn der Screen aktiv ist. Die Farben der Sphäre und des Hintergrunds können mit den Methoden setForeground(...) und setBackground(...) des Screens geändert werden.

    Der Controller ist als integriertes Hovlet oder als Stand-Alone (Root-Hovlet) ausführbar, jedoch kann kein Sub-Hovlet an den Controller angeknüpft werden.


    Die Klasse Controller kann auch als Application gestartet werden:

    java hoverball.Controller [host][:port][#hash]

  • (ohne) - Öffnet einen Controller.
  • host:port#hash - Öffnet einen Controller und verbindet ihn mit der angegebenen Adresse.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      javax.swing.JInternalFrame frame
      Frame des Controllers (falls Stand-Alone)
      javax.swing.JInternalFrame viewer
      Frame des Hoverball-Screens.

      Fields inherited from class hoverball.Hovlet

      background, BANNER, foreground, hovlets, icon, main, menubar, parent, title
    • Constructor Summary

      Constructors 
      Constructor Description
      Controller()
      öffnet einen Controller.
      Controller​(boolean shortcuts)
      öffnet einen Controller und ermöglicht oder verbietet die Kontroll-Tastaturkürzel im Screen.
    • Method Summary

      Modifier and Type Method Description
      void browse​(javax.swing.JInternalFrame frame)
      [Implementierung]
      void close()
      Schließt den Controller.
      boolean complete()
      Gibt zurück, ob das Spiel beendet ist ("Complete").
      protected boolean connecting​(java.lang.String server)
      [Implementierung]
      void debug​(Team team)
      Entfernt alle Units eines Teams aus der Registrierung für Graphical Debugging.
      void debug​(Team team, boolean debug)
      Registriert alle Units eines Teams für Graphical Debugging.
      void debug​(Unit unit)
      Entfernt eine Unit aus der Registrierung für Graphical Debugging.
      void debug​(Unit unit, boolean debug)
      Registriert eine Unit für Graphical Debugging.
      protected void disconnecting()
      [Implementierung]
      void follow​(Team team, int n)
      Verfolgt einen Ball auf dem Screen (Follow-Mode).
      void follow​(Unit unit)
      Verfolgt eine Unit auf dem Screen (Follow-Mode).
      boolean fullscreen()
      Gibt zurück, ob Vollbildschirm ist.
      void fullscreen​(boolean fullscreen)
      Setzt Vollbildschirm an oder aus.
      java.lang.String get​(java.lang.String key)
      Liefert den Wert einer Simulator-Variablen.
      static void main​(java.lang.String[] args)
      Startet den Controller (Application!).
      double option​(java.lang.String key)
      Liefert den Wert einer Hoverball-Option.
      void set​(java.lang.String key, double value)
      Setzt eine Simulator-Variable.
      void set​(java.lang.String key, java.lang.String value)
      Setzt eine Simulator-Variable.
      int state()
      Gibt den Zustand des verbundenen Simulators zurück.
      void state​(int state)
      Ändert den Zustand des verbundenen Simulators.
      void style​(boolean antialiasing)
      Setzt den Anzeigestil.
      double time()
      Gibt den Zeit des Spiels im Simulators zurück.
      void view​(int memory)
      Versendet einen View aus dem Speicher.
      void view​(int memory, java.lang.String pucks)
      Speichert einen View.
      void zoom​(double zoom)
      Zoomt den Screen.

      Methods inherited from class hoverball.Hovlet

      add, connect, disconnect, locate, locate, show, status, title

      Methods inherited from class java.lang.Object

      clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Details

      • frame

        public javax.swing.JInternalFrame frame
        Frame des Controllers (falls Stand-Alone)
      • viewer

        public final javax.swing.JInternalFrame viewer
        Frame des Hoverball-Screens.
    • Constructor Details

      • Controller

        public Controller()
        öffnet einen Controller.
      • Controller

        public Controller​(boolean shortcuts)
        öffnet einen Controller und ermöglicht oder verbietet die Kontroll-Tastaturkürzel im Screen.
    • Method Details

      • main

        public static void main​(java.lang.String[] args)
        Startet den Controller (Application!).
      • close

        public void close()
        Schließt den Controller.
        Overrides:
        close in class Hovlet
      • browse

        public void browse​(javax.swing.JInternalFrame frame)
        [Implementierung]
        Overrides:
        browse in class Hovlet
        Parameters:
        frame - Frame des Browsers
      • style

        public void style​(boolean antialiasing)
        Setzt den Anzeigestil.
        Parameters:
        antialiasing - true für Antialiasing
      • fullscreen

        public void fullscreen​(boolean fullscreen)
        Setzt Vollbildschirm an oder aus.
        Parameters:
        fullscreen - true für Vollbildschirm
      • fullscreen

        public boolean fullscreen()
        Gibt zurück, ob Vollbildschirm ist.
        Returns:
        true bei Vollbildschirm
      • view

        public void view​(int memory, java.lang.String pucks)
        Speichert einen View.

        Ein View enthält alle Informationen einer Momentaufnahme eines Hoverball-Spiels. Die Objekte werden im View allerdings nur durch die (what t n)-Kennung charakterisiert. Bei veränderten Channels bekommt der View also eine andere Bedeutung. Die Nutzung dieser Methode ist demnach nur dann sinnvoll, wenn gewährleistet ist, dass sich jedesmal dieselben Units in derselben Reihenfolge mit dem Simulator verbinden. Dies ist etwa in einer Hoverball-Session auf einem lokalen Rechner der Fall.

        Als String ist der Puck-Teil einer (view...)-Nachricht aus dem Control Client to Server-Protokoll zu übergeben. Es ist also nicht möglich, mit diesem Befehl die Zeit oder den Punktestand zu definieren.

        Tipp: Ein solcher String kann leicht zur Laufzeit des Spiels erzeugt werden: Das Menu View > Copy to Clipboard kopiert den erforderlichen String für den aktuellen View ins System-Clipboard, so dass dieser anschließend leicht in den Programm-Code eingefügt werden kann.

        Mit null wird der View in dem Speicherplatz gelöscht.

        Parameters:
        memory - Speicherplatz
        pucks - Puck-Teil der (view...)-Nachricht
      • view

        public void view​(int memory)
        Versendet einen View aus dem Speicher.
        Parameters:
        memory - Speicherplatz
      • follow

        public void follow​(Unit unit)
        Verfolgt eine Unit auf dem Screen (Follow-Mode).

        Hat unit den Wert null, wird der Follow-Mode deaktiviert.

        Parameters:
        unit - Unit
      • follow

        public void follow​(Team team, int n)
        Verfolgt einen Ball auf dem Screen (Follow-Mode).

        Hat team den Wert null, so wird ein Shot-Ball, ansonsten ein Team-Ball des angegebenen Teams verfolgt.

        Die Ball-Nummern werden von 1 hochgezählt.

        Parameters:
        team - Team des Balls (null = Shot-Ball)
        n - Ball-Nummer
      • zoom

        public void zoom​(double zoom)
        Zoomt den Screen.
        Parameters:
        zoom - Zoom-Faktor.
      • debug

        public void debug​(Team team, boolean debug)
        Registriert alle Units eines Teams für Graphical Debugging.

        Ist debug gleich true, so ist die Grafik-Ausgabe dieser Unit von Beginn an eingeschaltet.

        Parameters:
        team - Team
        debug - Grafik-Ausgabe ein?
      • debug

        public void debug​(Team team)
        Entfernt alle Units eines Teams aus der Registrierung für Graphical Debugging.
        Parameters:
        team - Team
      • debug

        public void debug​(Unit unit, boolean debug)
        Registriert eine Unit für Graphical Debugging.

        Ist debug gleich true, so ist die Grafik-Ausgabe dieser Unit von Beginn an eingeschaltet.

        Parameters:
        unit - Unit
        debug - Grafik-Ausgabe ein?
      • debug

        public void debug​(Unit unit)
        Entfernt eine Unit aus der Registrierung für Graphical Debugging.
        Parameters:
        unit - Unit
      • set

        public void set​(java.lang.String key, java.lang.String value)
        Setzt eine Simulator-Variable.

        Mit value gleich null kann die Variable gelöscht werden.

        Parameters:
        key - Simulator-Variable
        value - Wert
      • set

        public void set​(java.lang.String key, double value)
        Setzt eine Simulator-Variable.

        Der double-Wert wird in einen String konvertiert.

        Parameters:
        key - Simulator-Variable
        value - Wert
      • get

        public java.lang.String get​(java.lang.String key)
        Liefert den Wert einer Simulator-Variablen.
        Parameters:
        key - Simulator-Variable
        Returns:
        den Wert
      • option

        public double option​(java.lang.String key)
        Liefert den Wert einer Hoverball-Option.

        Falls es sich bei key um eine Simulator-Variable handelt, die keine Option ist, liefert die Funktion den Wert 0.

        Parameters:
        key - Hoverball-Option
        Returns:
        den Wert
      • state

        public void state​(int state)
        Ändert den Zustand des verbundenen Simulators.
        Parameters:
        state - neuer Zustand
      • state

        public int state()
        Gibt den Zustand des verbundenen Simulators zurück.
        Returns:
        Zustand
      • time

        public double time()
        Gibt den Zeit des Spiels im Simulators zurück.
        Returns:
        Zeit
      • complete

        public boolean complete()
        Gibt zurück, ob das Spiel beendet ist ("Complete").
        Returns:
        beendet
      • connecting

        protected final boolean connecting​(java.lang.String server)
        [Implementierung]
        Overrides:
        connecting in class Hovlet
        Parameters:
        server - Netzwerk-Adresse
        Returns:
        true, falls Verbindung erfolgte
      • disconnecting

        protected final void disconnecting()
        [Implementierung]
        Overrides:
        disconnecting in class Hovlet