public class SudokuEngine
extends javax.swing.JFrame
javax.swing.JFrame.AccessibleJFrame
java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type
Modifier and Type | Field and Description |
---|---|
private int |
gameRowElements
Number of elements in one row or column of the entire game
|
private byte[][] |
resultArray
Completely and correctly filled array
|
private int |
squareRowElements
Number of elements in one row or column of a square
|
private byte[][] |
startArray
Array of the numbers at startup (working array)
|
accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled
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
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Constructor and Description |
---|
SudokuEngine() |
Modifier and Type | Method and Description |
---|---|
protected int |
check(int row,
int col,
int value)
Checks if value exists already in a row, column or square.
|
private boolean |
checkForDoubleEntries(int row,
int col)
Checks if there is more than one entry in a row, column or square.
|
private boolean |
checkHorizontal(int row,
int col,
int value)
Checks if
value exists in row . |
private boolean |
checkRandomEntry(byte[] arr)
Checks if
arr only contains distinct values. |
private boolean |
checkSquare(int row,
int col,
int value)
Checks if
value exists a square. |
private boolean |
checkVertical(int row,
int col,
int value)
Checks if
value exists in column |
(package private) boolean |
createSudoku(int row,
int col)
Computes the solution of the game recursively.
|
byte[][] |
getResultArray() |
byte[][] |
getStartArray() |
protected void |
initEngine(int size)
Initialises the size of
squareRowElements and
gameRowElements with the number of elements per row/col/square. |
void |
initFields()
Initialises the array, that will fill the game at startup containing
several -1 to display empty fields and the array used to store the
solution of the game.
|
private boolean |
isFilled(int anz)
Checks if
anz positions of the start array are set to -1. |
(package private) void |
preallocate(int anz)
Sets
anz positions of the start array to -1. |
void |
setStartArray(byte[][] arr) |
void |
setValueToResultArrayPos(int row,
int col,
byte value)
|
void |
setValueToStartArrayPos(int row,
int col,
byte value)
|
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
addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setBackground, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setOpacity, setResizable, setShape, setState, setTitle, setUndecorated
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
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
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, getPeer, 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, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
private int squareRowElements
private int gameRowElements
private byte[][] startArray
private byte[][] resultArray
protected void initEngine(int size)
squareRowElements
and
gameRowElements
with the number of elements per row/col/square.size
- int
number of elements in a row/col/square.protected int check(int row, int col, int value)
value
multiple times. Used to show
mistakes.row
- int
, the rowcol
- int
, the columnvalue
- int
, the value to be checked
int
according to the table below
-1 | without match |
0 | horizontal match |
1 | vertical match |
2 | horizontal and vertical match |
3 | match in a square |
4 | horizontal match and match in a square |
5 | vertical match and match in a square |
6 | horizontal and vertical match and match in a square |
private boolean checkHorizontal(int row, int col, int value)
value
exists in row
.row
- int
col
- int
value
- int
the value to be checkedtrue
if value
exists in
row
otherwise false
.private boolean checkVertical(int row, int col, int value)
value
exists in columnrow
- int
col
- int
value
- int
the value to be checkedtrue
if value
exists in
col
otherwise false
.private boolean checkSquare(int row, int col, int value)
value
exists a square.row
- int
col
- int
value
- int
the value to be checkedtrue
if value
exists in the square
otherwise false
.boolean createSudoku(int row, int col)
gameRowElements
is filled with distinct random numbers. While
checking for its existance in a row, column or square each time, two
identical int arrays are initialized recursively by random numbers.
resultArray
represents the game's solution, startArray
will be prepared with -1 at some random positions, according to the
difficulty of the game. These values are translated to blank spaces
displayed on the gui's fields. startArray
will initialize the
game on startup.row
- int
index of the game's rowcol
- int
index of the game's columnboolean
true
if the computing succeeds.private boolean checkRandomEntry(byte[] arr)
arr
only contains distinct values.arr
- the array that has to be checked.false
if there are only distinct values in
arr
, otherwise true
.private boolean checkForDoubleEntries(int row, int col)
row
- int
the rowcol
- int
the columnfalse
if each entry in a row, column or square only
exists one time, otherwise true
.void preallocate(int anz)
anz
positions of the start array to -1. Their indices
are calculated randomly. Afterwords the according gui-positions are
filled by blank spaces.anz
- int
private boolean isFilled(int anz)
anz
positions of the start array are set to -1.
prüft, ob anz
Felder des Sudokus auf -1 gesetzt sindanz
- int
the number of array positionstrue
if anz
positions are set to -1.public void initFields()
initEngine(int)
, SudokuGUI.initNewSudoku()
public byte[][] getStartArray()
public void setStartArray(byte[][] arr)
public byte[][] getResultArray()
public void setValueToStartArrayPos(int row, int col, byte value)
row
- int
col
- int
value
- byte
value to be setpublic void setValueToResultArrayPos(int row, int col, byte value)
row
- int
col
- int
value
- byte
value to be set