edu.uah.math.devices
Class Forest

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by edu.uah.math.devices.Forest
All Implemented Interfaces:
java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener

public class Forest
extends javax.swing.JComponent
implements java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.io.Serializable

This class models a forest as a rectangular lattice of trees. Each tree at any time is in one of three states: healthy, on fire, or burnt. If a tree is on fire at time t, then any of the four neighboring green trees can catch fire at time t + 1 with specified probabilities. Trees catch on fire independently. A tree on fire at time t is burnt at time t + 1. Once a tree is burnt, it remains burnt.

Version:
August, 2003
Author:
Kyle Siegrist, Dawn Duehring
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
static int BURNT
           
static int DOWN
           
static int HEALTHY
           
static int LEFT
           
static int ON_FIRE
           
static int RIGHT
           
static int UP
           
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
Forest()
          This default constructor creates a new forest with 100 rows and 100 columns, default fire spread probabilities 0.5, and default tree size 5.
Forest(int c, int r)
          This special constructor creates a new forest with a specified number of rows and columns, fire spread probabilities 0.5, and with default tree size 5.
Forest(int c, int r, double[] p)
          This special constructor creates a new forest with a specified number of rows and columns, specified fire spread probabilities, and with default tree size 5.
Forest(int c, int r, double[] p, int s)
          This general constructor creates a new forest with a specified number of rows and columns, specified fire spread probabilities, and a preferred tree size.
 
Method Summary
 void burn()
          This method lets the forest burn for one time unit.
 java.awt.Color getBurntColor()
          This method returns the color of burnt trees
 int getColumns()
          This method gets the number of columns in the forest lattice.
 int getEditState()
          This method returns the edit state.
 java.awt.Color getHealthyColor()
          This method returns the color of healthy trees
 java.awt.Color getOnFireColor()
          This method returns the color of on fire trees
 double[] getProbabilities()
          This method returns the array of fire spread probabilities.
 double getProbabilities(int i)
          This method gets the fire spread probabilities.
 int getRows()
          This method gets the number of rows in the forest lattice.
 int[][] getStates()
          This method gets the array of states.
 int getStates(int x, int y)
          This method gets the state of an individual tree.
 void mouseClicked(java.awt.event.MouseEvent e)
          This method handles the mouse click event.The selected tree is set to the currently specified state (ON_FIRE, HEALTHY, or BURNT).
 void mouseDragged(java.awt.event.MouseEvent event)
           
 void mouseEntered(java.awt.event.MouseEvent event)
           
 void mouseExited(java.awt.event.MouseEvent event)
           
 void mouseMoved(java.awt.event.MouseEvent e)
          This method handles the mouse move event.
 void mousePressed(java.awt.event.MouseEvent event)
           
 void mouseReleased(java.awt.event.MouseEvent event)
           
 void paintComponent(java.awt.Graphics g)
          This method paints the forest.
 void reset()
          This method resets the forest to a completely green forest.
 void setBurntColor(java.awt.Color c)
          This method sets the color of the burnt trees.
 void setColumns(int c)
          This method sets the number of columns in the forest lattice.
 void setEditState(int s)
          This method sets the tree edit state.
 void setFire()
          This method sets the tree in the center of the forest on fire.
 void setHealthyColor(java.awt.Color c)
          This method sets the color of the healty trees.
 void setOnFireColor(java.awt.Color c)
          This method sets the color of the on fire trees.
 void setParameters(int c, int r)
           
 void setParameters(int c, int r, int s)
          This method sets the parameters: the number of rows, the number of columns, and the tree width.
 void setProbabilities(double[] p)
          This method sets the array of fire spread probabilities.
 void setProbabilities(int i, double p)
          This method sets an individual fire spread probability.
 void setRows(int r)
          This method sets the number of rows in the forest lattice.
 void setStates(int[][] s)
          This method sets all of the states of the trees.
 void setStates(int x, int y, int s)
          This method sets the state of a specified tree.
 int treesBurnt()
          This method returns the number of burnt trees.
 int treesHealthy()
          This method returns the number of green trees.
 int treesOnFire()
          This method returns the number of trees that are on fire.
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

HEALTHY

public static final int HEALTHY
See Also:
Constant Field Values

ON_FIRE

public static final int ON_FIRE
See Also:
Constant Field Values

BURNT

public static final int BURNT
See Also:
Constant Field Values

LEFT

public static final int LEFT
See Also:
Constant Field Values

RIGHT

public static final int RIGHT
See Also:
Constant Field Values

DOWN

public static final int DOWN
See Also:
Constant Field Values

UP

public static final int UP
See Also:
Constant Field Values
Constructor Detail

Forest

public Forest(int c,
              int r,
              double[] p,
              int s)
This general constructor creates a new forest with a specified number of rows and columns, specified fire spread probabilities, and a preferred tree size.

Parameters:
c - the number of columns
r - the number of rows
p - the array of fire spread probabilities
s - the preferred tree size

Forest

public Forest(int c,
              int r,
              double[] p)
This special constructor creates a new forest with a specified number of rows and columns, specified fire spread probabilities, and with default tree size 5.

Parameters:
c - the number of columns
r - the number of rows
p - the array of probabilities

Forest

public Forest(int c,
              int r)
This special constructor creates a new forest with a specified number of rows and columns, fire spread probabilities 0.5, and with default tree size 5.

Parameters:
c - the number of columns
r - the number of rows

Forest

public Forest()
This default constructor creates a new forest with 100 rows and 100 columns, default fire spread probabilities 0.5, and default tree size 5.

Method Detail

setParameters

public void setParameters(int c,
                          int r,
                          int s)
This method sets the parameters: the number of rows, the number of columns, and the tree width.

Parameters:
c - the number of columns
r - the number of rows
s - the size of a tree

setParameters

public void setParameters(int c,
                          int r)

setColumns

public void setColumns(int c)
This method sets the number of columns in the forest lattice.

Parameters:
c - the number of columns

getColumns

public int getColumns()
This method gets the number of columns in the forest lattice.

Returns:
the number of columns

setRows

public void setRows(int r)
This method sets the number of rows in the forest lattice.

Parameters:
r - the number of rows

getRows

public int getRows()
This method gets the number of rows in the forest lattice.

Returns:
the number of rows

setProbabilities

public void setProbabilities(double[] p)
This method sets the array of fire spread probabilities. Index 0 is left, index 1 is right, index 2 is down, index 3 is up.

Parameters:
p - the array of probabilities

setProbabilities

public void setProbabilities(int i,
                             double p)
This method sets an individual fire spread probability.

Parameters:
i - the index (0 left, 1 right, 2 down, 3 up).
p - the probability

getProbabilities

public double[] getProbabilities()
This method returns the array of fire spread probabilities. Index 0 is left, index 1 is right, index 2 is down, index 3 is up.

Returns:
the array of probabilities.

getProbabilities

public double getProbabilities(int i)
This method gets the fire spread probabilities.

Parameters:
i - direction index (LEFT, RIGHT, DOWN, UP)
Returns:
the fire spread probability in the specified direction

setEditState

public void setEditState(int s)
This method sets the tree edit state. When a tree is clicked on, the state of the tree will change to the specified state.

Parameters:
s - the new state (ON_FIRE, BURNT, HEALTHY)

getEditState

public int getEditState()
This method returns the edit state. This is the state that a tree is changed to when clicked.

Returns:
the edit state

setStates

public void setStates(int x,
                      int y,
                      int s)
This method sets the state of a specified tree.

Parameters:
x - the x coordinate of the tree
y - the y coordinate of the tree
s - the new state (ON_FIRE, BURNT, HEALTHY)

setStates

public void setStates(int[][] s)
This method sets all of the states of the trees.

Parameters:
s - the double array of states

getStates

public int[][] getStates()
This method gets the array of states.

Returns:
the array of state

getStates

public int getStates(int x,
                     int y)
This method gets the state of an individual tree.

Parameters:
x - the column number
y - the row number
Returns:
the state of the tree

setFire

public void setFire()
This method sets the tree in the center of the forest on fire.


paintComponent

public void paintComponent(java.awt.Graphics g)
This method paints the forest.

Overrides:
paintComponent in class javax.swing.JComponent
Parameters:
g - the graphics context

burn

public void burn()
This method lets the forest burn for one time unit.


reset

public void reset()
This method resets the forest to a completely green forest.


treesOnFire

public int treesOnFire()
This method returns the number of trees that are on fire.

Returns:
the number of trees on fire

treesBurnt

public int treesBurnt()
This method returns the number of burnt trees.

Returns:
the number of burnt trees

treesHealthy

public int treesHealthy()
This method returns the number of green trees.

Returns:
the number of green trees

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent e)
This method handles the mouse click event.The selected tree is set to the currently specified state (ON_FIRE, HEALTHY, or BURNT).

Specified by:
mouseClicked in interface java.awt.event.MouseListener
Parameters:
e - the mouse event

mouseMoved

public void mouseMoved(java.awt.event.MouseEvent e)
This method handles the mouse move event. The mouse coordinates are given in the tool tip.

Specified by:
mouseMoved in interface java.awt.event.MouseMotionListener
Parameters:
e - the mouse event

setHealthyColor

public void setHealthyColor(java.awt.Color c)
This method sets the color of the healty trees.

Parameters:
c - the color of healthy trees

getHealthyColor

public java.awt.Color getHealthyColor()
This method returns the color of healthy trees

Returns:
the color of healthy trees

setOnFireColor

public void setOnFireColor(java.awt.Color c)
This method sets the color of the on fire trees.

Parameters:
c - the color of on fire trees

getOnFireColor

public java.awt.Color getOnFireColor()
This method returns the color of on fire trees

Returns:
the color of on fire trees

setBurntColor

public void setBurntColor(java.awt.Color c)
This method sets the color of the burnt trees.

Parameters:
c - the color of burnt trees

getBurntColor

public java.awt.Color getBurntColor()
This method returns the color of burnt trees

Returns:
the color of burnt trees

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent event)
Specified by:
mouseEntered in interface java.awt.event.MouseListener

mouseExited

public void mouseExited(java.awt.event.MouseEvent event)
Specified by:
mouseExited in interface java.awt.event.MouseListener

mousePressed

public void mousePressed(java.awt.event.MouseEvent event)
Specified by:
mousePressed in interface java.awt.event.MouseListener

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent event)
Specified by:
mouseReleased in interface java.awt.event.MouseListener

mouseDragged

public void mouseDragged(java.awt.event.MouseEvent event)
Specified by:
mouseDragged in interface java.awt.event.MouseMotionListener