ptft
Class JPtftCellularAutomata

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.JPanel
                  extended byptft.JGrid
                      extended byptft.JCellularAutomata
                          extended byptft.JPtftCellularAutomata
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.MenuContainer, java.lang.Runnable, java.io.Serializable
Direct Known Subclasses:
JPaintCellularAutomata

public class JPtftCellularAutomata
extends JCellularAutomata

A graph paper grid populated with JCell objects which play localized cellular automata games. Each cell can have one of eight possible Markov strategies specifying how to respond to neighboring cells, plus the polymorphic PTFT strategy:

0 = 000 = AllD (always defect)
1 = 001
2 = 010 = STFT (suspicious tit-for-tat: D-then-TFT)
3 = 011 = D-then-AllC (defect only the first time)
4 = 100 = C-then-AllD (cooperate only the first time)
5 = 101
6 = 110 = TFT (tit-for-tat: C-then-TFT)
7 = 111 = AllC (always cooperate)
8 = PTFT (TFT with one's own kind, AllD with others)

A cell with a PTFT (prejudiced tit-for-tat) strategy plays TFT (tit-for-tat) against its own kind -- neighboring cells that have the same ethnicity -- but always defects against anyone of a different ethnicity.

Calling playRound evolves the cellular automata one gerenation by having each cell play 200 games against each of its eight neighboring cells. The points from each of the eight interactions are added up and become the cell's score. Each cell then adopts the strategy of its most successful neighbor -- the neighboring cell with the highest score. The updating is instantenous; the entire array is switched to the new strategies in one shot, not cell by cell.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  java.awt.Color[] m_ethnicColors
           
protected  boolean m_isSegregated
           
 boolean m_isStrategyDisplayed
           
protected  java.awt.Color[] m_strategyColors
           
 
Fields inherited from class ptft.JCellularAutomata
m_payoffs, m_sleepDelay, m_thread
 
Fields inherited from class ptft.JGrid
innerPanel, m_cellPadding, m_cellWidth, m_columns, m_grid, m_rows, m_strategies
 
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
JPtftCellularAutomata()
          Creates new form JPtftCellularAutomata
 
Method Summary
 void createCells(NamedColorArray strategies, NamedColorArray ethnicities)
          Adds cells to the GUI.
 void integrate()
           
 boolean isSegregated()
           
 boolean isStrategyDisplayed()
           
protected  int playNeighbor(int x, int y, Direction d)
           
 void restart()
           
 void segregate()
           
 void setRandomEthnicities()
           
 void setRandomEthnicities(int[] ethnicities)
           
 void toggleViews()
           
 
Methods inherited from class ptft.JCellularAutomata
getWinningStrategy, isRunning, pause, playCell, playRound, playRound, run, setPayoffs, setSleepDelay, start
 
Methods inherited from class ptft.JGrid
createCells, getCell, getLeftColumn, getLowerRow, getNeighbor, getRightColumn, getTotalColumns, getTotalRows, getUpperRow, paintComponent, setBackground, setBorderColor, setGridColor, setLayout, setRandomStrategies, setRandomStrategies
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, 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, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, 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, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, 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

m_isStrategyDisplayed

public boolean m_isStrategyDisplayed

m_isSegregated

protected boolean m_isSegregated

m_strategyColors

protected final java.awt.Color[] m_strategyColors

m_ethnicColors

protected final java.awt.Color[] m_ethnicColors
Constructor Detail

JPtftCellularAutomata

public JPtftCellularAutomata()
Creates new form JPtftCellularAutomata

Method Detail

createCells

public void createCells(NamedColorArray strategies,
                        NamedColorArray ethnicities)
Adds cells to the GUI. Overrides the parent's method to add ethnicities


restart

public void restart()
Overrides:
restart in class JCellularAutomata

setRandomEthnicities

public void setRandomEthnicities()

setRandomEthnicities

public void setRandomEthnicities(int[] ethnicities)

isStrategyDisplayed

public boolean isStrategyDisplayed()

isSegregated

public boolean isSegregated()

toggleViews

public void toggleViews()

segregate

public void segregate()

integrate

public void integrate()

playNeighbor

protected int playNeighbor(int x,
                           int y,
                           Direction d)
Overrides:
playNeighbor in class JCellularAutomata