Class TvH

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 TvH
All Implemented Interfaces:
Bild.Listener, MouseListener, MouseMotionListener, ImageObserver, MenuContainer, Serializable, Runnable, EventListener

public class TvH
extends Bild
implements Bild.Listener, Runnable

Die Türme von Hanoi mit Bildhintergrund — Ein Java-Spiel.

Ein TvH-Objekt ist (per Erbe) ein Bild, das das Stapelumsortierspiel Türme von Hanoi mit 2 bis 10 Turmscheiben und drei Bedienknöpfen darstellt. Das Spiel kann von Hand regelgerecht und auch regelwidrig gespielt werden. Sein (rekursiver) Lösungsansatz kann vorgeführt werden und auch als automatischer Ablauf gezeigt werden.

Ein TvH-Objekt kann in graphische Anwendungen und Applets eingebunden werden. Eine Startmethode (main()) erzeugt einen einfachen Frame und bettet ein TvH-Objekt darin ein. So ist TvH auch als selbständige graphische Anwendung lauffähig.

TvH beruht auf dem Framework de.a_weinert ("aWeinertBib") und insbesondere auf dem Paket de.a_weinert.graf.

Copyright © 1998 - 2003, 2004   Albrecht Weinert

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

Nested Class Summary
 class TvH.Rahmen
          (Hilfs-) Rahmen zum Einbetten eines TvH-Objekt als Anwendung graphische Anwendung.
protected  class TvH.Scheibe
          Die Darstellung der Turmscheiben.
 
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
static String BG_FILE
          Default-Name der Datei für das Hintergrundbild.
 int breite
          Breite der größten Scheibe.
protected  Bild.Anker[] buttAn
          Die Verankerung der drei Bedienknöpfe.
protected  Bild.Element[] buttEl
          Die drei Bedienknöpfe.
 Dimension dim
          Größe des Bilds.
 int maxAnz
          Maximale Scheibenanzahl.
 int MIN_ANZ
          Minimale Scheibenanzahl (2).
static String versionLong
          Name und Version.
 
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
TvH(String bgFile)
          Konstruktor mit Namen der Bildhintergrunddatei.
 
Method Summary
 void bildBedient(Bild.Anker a, MouseEvent m)
          Ausführungsmethode für Bild-Ereignisse (Maus)
 void fromTo(int stapFrom, int stapTo)
           
 void init(int wTotal)
          Initialisieren des Spiels.
 void knakM()
          Text mittlerer Knopf aktualisieren und malen.
static void main(String[] args)
          Startmethode der Anwendung.
 void minus()
          Eine Scheibe weniger.
 void nss()
          Neu aufstellen bzw. starten bzw. stoppen.
 void plus()
          Eine Scheibe mehr.
 void putTo(int stapInd, Bild.Anker a)
           
 Bild.Anker removeFrom(int stapInd)
           
 void retouche(Graphics g, int w, int h)
          Einmaliges Ändern des geladenen und geränderten Bilds.
 void run()
           
 
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

versionLong

public static final String versionLong
Name und Version.

See Also:
Constant Field Values

BG_FILE

public static final String BG_FILE
Default-Name der Datei für das Hintergrundbild.

Wert: Peking.gif; Ein pagodenartiges Gebäude in Peking, Foto Annette Weinert: passend in Motiv und Größe (auch wenn Peking nicht Hanoi ist).

See Also:
Bild.img, Constant Field Values

breite

public final int breite
Breite der größten Scheibe.


maxAnz

public final int maxAnz
Maximale Scheibenanzahl.


dim

public final Dimension dim
Größe des Bilds.

Ist gleich img.dim


buttEl

protected Bild.Element[] buttEl
Die drei Bedienknöpfe.


buttAn

protected Bild.Anker[] buttAn
Die Verankerung der drei Bedienknöpfe.


MIN_ANZ

public final int MIN_ANZ
Minimale Scheibenanzahl (2).

See Also:
Constant Field Values
Constructor Detail

TvH

public TvH(String bgFile)
Konstruktor mit Namen der Bildhintergrunddatei.

Wird kein Dateiname angegeben, wird BG_FILE genommen. Die Datei muss existieren und in ihrer Größe passen.

Method Detail

retouche

public void retouche(Graphics g,
                     int w,
                     int h)
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
w - Breite in Pixeln
h - Höhe in Pixeln

removeFrom

public Bild.Anker removeFrom(int stapInd)

putTo

public void putTo(int stapInd,
                  Bild.Anker a)

fromTo

public void fromTo(int stapFrom,
                   int stapTo)

run

public void run()
Specified by:
run in interface Runnable

init

public void init(int wTotal)
Initialisieren des Spiels.

Das Spiel wird ggf. angehalten und mit wTotal Scheiben neu initialisiert. wTotal wird auf MIN_ANZ .. maxAnz begrenzt.


nss

public void nss()
Neu aufstellen bzw. starten bzw. stoppen.


knakM

public void knakM()
Text mittlerer Knopf aktualisieren und malen.


minus

public void minus()
Eine Scheibe weniger.


plus

public void plus()
Eine Scheibe mehr.


bildBedient

public void bildBedient(Bild.Anker a,
                        MouseEvent m)
Ausführungsmethode für Bild-Ereignisse (Maus)

Specified by:
bildBedient in interface Bild.Listener

main

public static void main(String[] args)
Startmethode der Anwendung.

Ein optionaler Parameter ist der Name einer Bilddatei, die als Hintergrund dient.