Class SimpleGamePanel
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- java.awt.Window
-
- java.awt.Frame
-
- javax.swing.JFrame
-
- uk.ac.ljmu.fet.cs.csw.CompetitiveMinesweeper.gui.SimpleGamePanel
-
- All Implemented Interfaces:
ImageObserver,MenuContainer,Serializable,Runnable,Accessible,RootPaneContainer,WindowConstants
- Direct Known Subclasses:
RestartableGamePanel
public class SimpleGamePanel extends JFrame implements Runnable
Offers the a UI for a particular mine sweeping game (the game is actually represented by aMineMapinstance). The UI is atomatically sizing itself based on the map size (smaller maps have bigger visualisations). Implements some simple visual effects with the help of theFlashableJLabel. At the end of a game, the UI also offers some basic statistics about the game.- Author:
- "Gabor Kecskemeti, Department of Computer Science, Liverpool John Moores University, (c) 2019"
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.JFrame
JFrame.AccessibleJFrame
-
Nested classes/interfaces inherited from class java.awt.Frame
Frame.AccessibleAWTFrame
-
Nested classes/interfaces inherited from class java.awt.Window
Window.AccessibleAWTWindow, Window.Type
-
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
-
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
-
Field Summary
Fields Modifier and Type Field Description static ColorclearColorColour of explored territorystatic ColordeadColorColour to depict the place of death of our sweeperprivate booleandisposeAfterRunList<List<FlashableJLabel>>fieldThis is the visual representation of a MineMap.static ColorflagColorColour of flagged spotprivate intflashedColprivate intflashedRowstatic ColorinFogColorColour of unknown territorystatic intminSpotDimensionDefines the minimum height/width of the squares that represent the spots on the guistatic ColorpickedColorColour of a spot recently picked/flaggedprivate JPanelplayAreaprivate static longserialVersionUIDstatic ColortextColorColour of regular cell contentsprotected MineMaptoMonitorstatic ColorwinSpiralColour to show the winning spiral in-
Fields inherited from class javax.swing.JFrame
accessibleContext, rootPane, rootPaneCheckingEnabled
-
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
-
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
-
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE
-
-
Constructor Summary
Constructors Constructor Description SimpleGamePanel(MineMap toMonitor, String title, boolean scale)Instantiating a window will immediately show it and starts the monitoring and visualisation process of a given minemap.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidensureColour(FlashableJLabel forWhat, Color fg, Color bg)Colour changes for a label will be propagated if the current colour is not the same as the one that was requestedprivate voidrefreshArea()This method updates all labels in the play area to show the state of the map at the time when the method is called.voidrun()Ensures the window contains the most up to date look of the MineMap.protected voidsetDisposeAfterRun(boolean disposeAfterRun)-
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
-
Methods inherited from class java.awt.Frame
addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setBackground, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setOpacity, setResizable, setShape, setState, setTitle, setUndecorated
-
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, setVisible, show, toBack, toFront
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, 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, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setMixingCutoutShape, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
-
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
inFogColor
public static final Color inFogColor
Colour of unknown territory
-
clearColor
public static final Color clearColor
Colour of explored territory
-
textColor
public static final Color textColor
Colour of regular cell contents
-
flagColor
public static final Color flagColor
Colour of flagged spot
-
pickedColor
public static final Color pickedColor
Colour of a spot recently picked/flagged
-
deadColor
public static final Color deadColor
Colour to depict the place of death of our sweeper
-
winSpiral
public static final Color winSpiral
Colour to show the winning spiral in
-
minSpotDimension
public static final int minSpotDimension
Defines the minimum height/width of the squares that represent the spots on the gui- See Also:
- Constant Field Values
-
playArea
private final JPanel playArea
-
toMonitor
protected final MineMap toMonitor
-
field
public final List<List<FlashableJLabel>> field
This is the visual representation of a MineMap. This is a completely unalterable array so it is always in alignment with MineMap's coordinates. Allows access to the individual visualisation labels on the play area. Thus allows their customisation without changing the main visualisation logic.
-
flashedRow
private int flashedRow
-
flashedCol
private int flashedCol
-
disposeAfterRun
private boolean disposeAfterRun
-
-
Constructor Detail
-
SimpleGamePanel
public SimpleGamePanel(MineMap toMonitor, String title, boolean scale)
Instantiating a window will immediately show it and starts the monitoring and visualisation process of a given minemap.- Parameters:
toMonitor- The map to visualisetitle- The title of this windowscale- true enable automatically scaling the spots, false if this feature should be disabled
-
-
Method Detail
-
ensureColour
private void ensureColour(FlashableJLabel forWhat, Color fg, Color bg)
Colour changes for a label will be propagated if the current colour is not the same as the one that was requested- Parameters:
forWhat- The label for which the change is neededfg- The desired foreground (i.e., text) colourbg- The desired background colour
-
refreshArea
private void refreshArea()
This method updates all labels in the play area to show the state of the map at the time when the method is called.
-
run
public void run()
Ensures the window contains the most up to date look of the MineMap.
-
setDisposeAfterRun
protected void setDisposeAfterRun(boolean disposeAfterRun)
-
-