Class MemCont

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by de.a_weinert.graf.Bild
                  extended by MemCont
All Implemented Interfaces:
Bild.Listener, MouseListener, MouseMotionListener, ImageObserver, MenuContainer, Serializable, EventListener

public class MemCont
extends Bild
implements Bild.Listener

Ein Memory-Spiel mit Buchstabenkarten und Bildhintergrund.

Ein Objekt dieser Klasse stellt das Spielfeld für ein Memory-Spiel mit Bildhintergrund und drei oder fünf Knöpfen für Bedienung und Anzeige dar. Mit diesen Bedienelementen ist ein MemCont-Objekt Spiel für einen oder zwei Spieler ohne zusätzliche Programmierung spielbar.

Zusätzlich kann es noch über öffentliche Abfrage-, Setz- und Steuermethoden bedient werden.

Einige Eigenschaften werden (als öffentliche Objekt-Variablen) durch ein Prop-Objekt gesetzt, das dem Konstruktor übergeben wird. Die Handhabung der Grafik stützt sich auf die Klassen des Pakets de.a_weinert.graf.

© Copyright 1998 - 2003   Albrecht Weinert

Version:
1 (11.02.2010)
Author:
Albrecht Weinert
See Also:
de.a_weinert.graf, Bild, Prop, Memory, Serialized Form

Nested Class Summary
protected  class MemCont.Karte
          Die Darstellung der Spielkarten.
 
Nested classes/interfaces inherited from class de.a_weinert.graf.Bild
Bild.Anker, Bild.Element, Bild.Listener
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
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
 boolean autoPlay
          Autoplay erlauben.
 int bG1
          Farbe Karte zum ersten mal geöffnet
 int bG2
          Farbe Karte zum wiederholten mal geöffnet
 int bGP
          Farbe Karte Zwilling bereits geöffnet gewesen
 int dbC
          Farbe Zeichen
 String dieZeichen
          Die Zeichen (Buchstaben für die Karten).
 int fontC
          Farbe Zeichen
protected  Object log
          Ausgabestrom- oder Writer für Log-Ausgaben.
 int merkTiefe
          Gedächtnistiefe des Auto-Spieler bzw.
 String neuStart
          Beschriftung für Neustart-Knopf
 String spieler1
          Bezeichnung (Name) für Spieler 1
 String spieler2
          Bezeichnung (Name) für Spieler 2
 boolean tricky
          Autoplay trickreich.
 boolean verbose
          Ausführlichere Log-Meldungen.
static String version
          Version und Datum der letzten Änderung.
 
Fields inherited from class de.a_weinert.graf.Bild
ankerList, grDBu, grPBg, img, imgDBu, imgPBg, ltztBild, NO_ANKER
 
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
MemCont(String bgFile, Prop prop, PrintWriter log)
          Konstruktor mit Hintergrundbild, Eigenschaften und Log-Ausgabe.
 
Method Summary
 void bildBedient(Bild.Anker a, MouseEvent m)
          Meldemethode für Bedienereignis.
 int getCards()
          Kartenanzahl.
 boolean isPlayable()
          Spielbar.
 void markPlayer()
          Aktiven Spieler als aktiv markieren.
 void playAuto()
          Aktiven Spieler automatisch spielen lassen (Reaktion auf Bedienereignis).
 void restart()
          Neu geben (Reaktion auf Bedienereignis).
 void retouche(Graphics g, int width, int height)
          Einmaliges Ändern des geladenen und geränderten Bilds.
protected  int selectCard(Bild.Anker a)
          Auswahl einer Karte (Bedienreaktion).
 void setAutoplay(boolean autoPlay)
          Automatisches Spielen erlauben/verbieten (Reaktion auf Bedienereignis).
 void setInfoColors(boolean info)
          Informationsgehalt der Kartenfarben setzen.
 void setMerkbar(int merkTiefe)
          Gedächtnistiefe für Kiebitz und automatisches Spielen setzen.
 void setPlayer1()
          Spieler 1 aktiv setzen (Reaktion auf Bedienereignis).
 void setPlayer2()
          Spieler 2 aktiv setzen (Reaktion auf Bedienereignis).
 void setTrickreich(boolean tricky)
          Trickreiches Spielen erlauben/verbieten (Reaktion auf Bedienereignis).
 
Methods inherited from class de.a_weinert.graf.Bild
addAnker, addAnker, addAnkerReverse, addListener, clearAnker, contains, copyImage, copyImageInfo, ensureCapacity, extraPaint, getAlignmentX, getAlignmentY, getAnkerCount, getAnkerInside, getAnkerListe, getHeight, getMaximumSize, getMinimumSize, getPermBgGraphics, getPreferredSize, getWidth, isGrid, mouseClicked, mouseDragged, mouseEntered, mouseExited, mouseMoved, mousePressed, mouseReleased, paint, removeAnker, restorePermBg, setGrid, setMotion, setSize, trimToSize, update
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, 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, 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, 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

version

public static final String version
Version und Datum der letzten Änderung.

See Also:
Constant Field Values

spieler1

public String spieler1
Bezeichnung (Name) für Spieler 1


spieler2

public String spieler2
Bezeichnung (Name) für Spieler 2


autoPlay

public boolean autoPlay
Autoplay erlauben.

See Also:
setAutoplay(boolean)

verbose

public boolean verbose
Ausführlichere Log-Meldungen.

See Also:
log

tricky

public boolean tricky
Autoplay trickreich.

Der automatische Spieler vermeidet u.a. das Aufdecken zweier bisher unbekannter Karten.

See Also:
setTrickreich(boolean)

neuStart

public String neuStart
Beschriftung für Neustart-Knopf


merkTiefe

public int merkTiefe
Gedächtnistiefe des Auto-Spieler bzw. des Kiebitz.

Default: 100


dieZeichen

public String dieZeichen
Die Zeichen (Buchstaben für die Karten).

Die Zeichen müssen alle verschieden sein; ihre Anzahl bestimmt die maximale Anzahl der Spielkartenpaare.
Bei weniger Platz werden die vorderen zuerst genommen, diese sollten also für Kinder geeignet sein.


dbC

public int dbC
Farbe Zeichen


fontC

public int fontC
Farbe Zeichen


bG1

public int bG1
Farbe Karte zum ersten mal geöffnet


bG2

public int bG2
Farbe Karte zum wiederholten mal geöffnet


bGP

public int bGP
Farbe Karte Zwilling bereits geöffnet gewesen


log

protected Object log
Ausgabestrom- oder Writer für Log-Ausgaben.

log ist entweder ein PrintWriter oder ein PrintStream oder null.

Constructor Detail

MemCont

public MemCont(String bgFile,
               Prop prop,
               PrintWriter log)
Konstruktor mit Hintergrundbild, Eigenschaften und Log-Ausgabe.

Das Hintergrundbild bestimmt (formatfüllend + 10 * 30) die Größe des Bilds. prop setzt die übrigen spielbestimmenden Eigenschaften.

Parameters:
bgFile - Dateiname eines Hintergrundbilds (.gif, .png oder .jpg)
      Falls null oder leer, wird der Dateiname als Eigenschaft bgFile in prop erwartet.
prop - Prop-Objekt mit den Spieleigenschaften
log - PrintStream oder PrintWriter, darf null sein.
Throws:
NoSuchElementException - Wenn keine Bilddatei ladbar
Method Detail

retouche

public void retouche(Graphics g,
                     int width,
                     int height)
Einmaliges Ändern des geladenen und geränderten Bilds.

Es wird ein Copyrighthinweis am unteren rechten Rand hinzugefügt.

Overrides:
retouche in class Bild
Parameters:
g - Malen in Bild.img
width - Breite in Pixeln
height - Höhe in Pixeln

isPlayable

public final boolean isPlayable()
Spielbar.

Liefert true, sofern erstmalig initialisiert und noch nicht alle Karten aufgedeckt.


getCards

public final int getCards()
Kartenanzahl.


restart

public void restart()
Neu geben (Reaktion auf Bedienereignis).


markPlayer

public void markPlayer()
Aktiven Spieler als aktiv markieren.


setPlayer1

public void setPlayer1()
Spieler 1 aktiv setzen (Reaktion auf Bedienereignis).


setPlayer2

public void setPlayer2()
Spieler 2 aktiv setzen (Reaktion auf Bedienereignis).


playAuto

public void playAuto()
Aktiven Spieler automatisch spielen lassen (Reaktion auf Bedienereignis).

Wirkt nur bei autoPlay==true.


setTrickreich

public void setTrickreich(boolean tricky)
Trickreiches Spielen erlauben/verbieten (Reaktion auf Bedienereignis).

Bei true wird neben tricky auch autoPlay gesetzt.


setAutoplay

public void setAutoplay(boolean autoPlay)
Automatisches Spielen erlauben/verbieten (Reaktion auf Bedienereignis).

Bei false wird auch tricky zurückgesetzt.


setMerkbar

public void setMerkbar(int merkTiefe)
Gedächtnistiefe für Kiebitz und automatisches Spielen setzen.

Der erlaubte Bereich ist 0 bis Anzahl der Karten beziehungsweise bei autoPlay == true 10 bis Anzahl der Karten.


setInfoColors

public void setInfoColors(boolean info)
Informationsgehalt der Kartenfarben setzen.

Nach einem Aufruf mit true werden erstmals geöffnete Karten rot, zum wiederholten Male geöffnete Karten gelb und Karten, deren Zwilling bereits geöffnet war oder ist, grün dargestellt.

Nach einem Aufruf mit false wird für alle drei Fälle rot genommen.


selectCard

protected int selectCard(Bild.Anker a)
Auswahl einer Karte (Bedienreaktion).

Returns:
>= 0: Index im Gedächtnis, falls Zwilling schon gesehen
    -1: Zwilling noch nicht gesehen oder vergessen.

bildBedient

public void bildBedient(Bild.Anker a,
                        MouseEvent m)
Description copied from interface: Bild.Listener
Meldemethode für Bedienereignis.

Diese Methode wird für den (max.) einen angemeldeten Hörer bei MOUSE_PRESSED, MOUSE_RELEASED und MOUSE_CLICKED auf ein Paintable-Element im Bild sowie ggf. auch für MOUSE_MOVED- und MOUSE_DRAGGED-Ereignisse aufgerufen.

Specified by:
bildBedient in interface Bild.Listener