Documentation Set for Swarm 2.2
Prev | Chapter 4. Mag 4x:Sketch of Code | Next

# 4.6. Building a Graphical Observer Swarm

With the model swarm defined, arranging for a graphical observer Swarm is the next step. For Heatbugs, the code is in HeatbugObserverSwarm. The structure of an observer swarm is almost exactly like building a model swarm.

    @interface HeatbugObserverSwarm : GUISwarm {
      int displayFrequency; // one parameter: update freq

      id displayActions; // schedule data structs
      id displaySchedule;

      HeatbugModelSwarm * heatbugModelSwarm; // the Swarm we're observing

      // Lots of display objects. First, widgets
      XColormap * colormap; // allocate colours
      ZoomRaster * worldRaster; // 2d display widget
      EZGraph * unhappyGraph; // graphing widget

      // Now, higher order display and data objects
      Value2dDisplay * heatDisplay; // display the heat
      Object2dDisplay * heatbugDisplay; // display the heatbugs
    }

Again we have input parameters (display frequency), schedule data structures, and resident objects (model swarm, display widgets). The important exception is that HeatbugObserverSwarm is a subclass not just of the generic Swarm class, but specifically a GUISwarm. That implies that the HeatbugObserverSwarm will contain a control panel to allow the user to stop execution, and will also have a special `go` method to set everything running.

Prev | Home | Next
Scheduling a Model Swarm | Up | Building a Data Graph