Class Pancet

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjava.awt.Panel
              extended byjava.applet.Applet
                  extended byPancet
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.event.ActionListener, java.util.EventListener, GameConstants, java.awt.image.ImageObserver, java.awt.MenuContainer, java.lang.Runnable, java.io.Serializable

public class Pancet
extends java.applet.Applet
implements java.awt.event.ActionListener, GameConstants, java.lang.Runnable

Title: Pancet

Copyright: Copyright (c) 2005

Description:

Pancet is a game played with four bowls and eight balls. Two bowls are controlled by each player. Each bowl starts with two stones in it. Each player takes turns picking up the stones out of one of their bowls and distributing them clockwise around the the bowls. If the last stone lands in an empty bowl, then it is removed from play. If a player has no stones in either of his bowls when it is his turn, then he loses.

The computer version here pits a human player against the program. The program keeps a self pruning move tree of moves and learns as it plays.


Nested Class Summary
 
Nested classes inherited from class java.applet.Applet
java.applet.Applet.AccessibleApplet
 
Nested classes inherited from class java.awt.Panel
java.awt.Panel.AccessibleAWTPanel
 
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
static int BOWL_A
           
static int BOWL_B
           
static int BOWL_C
           
static int BOWL_D
           
static int[][] bowlLabelLocation
           
static java.lang.String[] bowlName
           
static int[] MOVE_ROOT
           
 
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
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent ae)
          This catches the action events from the two buttons on the control panel.
 java.lang.String getAppletInfo()
          Get Applet information
 void init()
          Initializes the applet.
This sets up the screen layout, loads the bowl images, instantiates the control panel and move library, and creates the game's thread.
static void pause(int ms)
          pause(ms) is a wrapper for sleep().
 void run()
          In order to maintain animation timing during button ActionEvents, everything has to be run in an accessible thread.
 
Methods inherited from class java.applet.Applet
destroy, getAccessibleContext, getAppletContext, getAudioClip, getAudioClip, getCodeBase, getDocumentBase, getImage, getImage, getLocale, getParameter, getParameterInfo, isActive, newAudioClip, play, play, resize, resize, setStub, showStatus
 
Methods inherited from class java.awt.Panel
addNotify
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getInsets, getLayout, getListeners, getMaximumSize, getMinimumSize, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, paramString, preferredSize, print, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, removeNotify, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setFont, setLayout, transferFocusBackward, transferFocusDownCycle, update, 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, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isOpaque, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, 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

BOWL_A

public static final int BOWL_A
See Also:
Constant Field Values

BOWL_B

public static final int BOWL_B
See Also:
Constant Field Values

BOWL_C

public static final int BOWL_C
See Also:
Constant Field Values

BOWL_D

public static final int BOWL_D
See Also:
Constant Field Values

MOVE_ROOT

public static final int[] MOVE_ROOT

bowlName

public static final java.lang.String[] bowlName

bowlLabelLocation

public static final int[][] bowlLabelLocation
Constructor Detail

Pancet

public Pancet()
Method Detail

init

public void init()
Initializes the applet.
This sets up the screen layout, loads the bowl images, instantiates the control panel and move library, and creates the game's thread.


run

public void run()
In order to maintain animation timing during button ActionEvents, everything has to be run in an accessible thread. Start the game off with the setup animation.

Specified by:
run in interface java.lang.Runnable

start

public void start()

stop

public void stop()

pause

public static void pause(int ms)
pause(ms) is a wrapper for sleep().

Parameters:
ms - int Sleep time in milliseconds

getAppletInfo

public java.lang.String getAppletInfo()
Get Applet information


actionPerformed

public void actionPerformed(java.awt.event.ActionEvent ae)
This catches the action events from the two buttons on the control panel. It controls the move cycle with each button click performing a human and then a computer move. The game can end and restart in the the process of performing this cycle. Therefore the last player to move in the last game will be the second in the new game.

Move validation is performed here. If the human player attempts to pick an empty bowl, the cycle is broken and the message to try again is sent back.

Specified by:
actionPerformed in interface java.awt.event.ActionListener
Parameters:
ae - ActionEvent This is going specify the bowl D or bowl C buttons