org/homelinux/largo/games/board/checkersboard/CheckersBoard.java
author Markus Bröker<broeker.markus@googlemail.com>
Fri, 27 Jan 2017 21:25:15 +0100
changeset 16 55b0d5006e7b
parent 15 d4b2b9a87d80
permissions -rw-r--r--
Sourcecode neu formatiert und ins Jahr 2017 migriert Eine 9 Jahre alte Software konnte mit einigen Korrekturen wieder belebt werden.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
     1
/**
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
     2
 *   $Id: CheckersBoard.java 152 2008-04-27 02:04:31Z mbroeker $
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
     3
 *  $URL: http://localhost/svn/eclipse/Schachspiel/trunk/org/homelinux/largo/games/board/checkersboard/CheckersBoard.java $
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
     4
 */
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
     5
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
     6
package org.homelinux.largo.games.board.checkersboard;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
     7
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
     8
import java.awt.Image;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
     9
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    10
import org.homelinux.largo.games.board.Board;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    11
import org.homelinux.largo.games.board.History;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    12
import org.homelinux.largo.games.board.Piece;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    13
import org.homelinux.largo.utils.ImgComponent;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    14
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    15
public class CheckersBoard extends Board {
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    16
	static final long serialVersionUID = 1L;
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    17
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    18
	static final int PIECE = 1;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    19
	static final int QUEEN = 2;
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    20
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    21
	final Piece white_super_sun = new Piece(new ImgComponent("images/white_super_sun.png").getImage(), "white", QUEEN,
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    22
			50);
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    23
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    24
	final Piece black_super_sun = new Piece(new ImgComponent("images/black_super_sun.png").getImage(), "black", QUEEN,
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    25
			50);
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    26
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    27
	void initBoard() {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    28
		for (int i = 1; i < 8; i += 2)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    29
			add(new ImgComponent("images/black_sun.png").getImage(), i, "black", PIECE);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    30
		for (int i = 8; i < 15; i += 2)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    31
			add(new ImgComponent("images/black_sun.png").getImage(), i, "black", PIECE);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    32
		for (int i = 17; i <= 23; i += 2)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    33
			add(new ImgComponent("images/black_sun.png").getImage(), i, "black", PIECE);
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    34
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    35
		for (int i = 40; i < 47; i += 2)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    36
			add(new ImgComponent("images/white_sun.png").getImage(), i, "white", PIECE);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    37
		for (int i = 49; i <= 55; i += 2)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    38
			add(new ImgComponent("images/white_sun.png").getImage(), i, "white", PIECE);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    39
		for (int i = 56; i < 63; i += 2)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    40
			add(new ImgComponent("images/white_sun.png").getImage(), i, "white", PIECE);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    41
	}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    42
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    43
	/**
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    44
	 * The init method initializes a complete checkers board with figures and a
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    45
	 * history.
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    46
	 */
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    47
	public void init() {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    48
		super.init();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    49
		initBoard();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    50
		board_pieces = getPieces();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    51
		repaint();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    52
	}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    53
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    54
	public CheckersBoard(int w, int h) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    55
		super(w, h);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    56
	}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    57
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    58
	void add(Image img, int i, String c, int t) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    59
		int v = 0;
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    60
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    61
		switch (t) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    62
		case PIECE:
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    63
			v = 10;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    64
		}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    65
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    66
		setPiece(i, new Piece(img, c, t, v));
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    67
	}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    68
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    69
	/**
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    70
	 * Checks, wether this move is possible or not.
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    71
	 */
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    72
	public boolean validMove(int t, int o) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    73
		int steps;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    74
		int rows;
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    75
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    76
		if (t == o)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    77
			return false;
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    78
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    79
		if (isSamePiece(t, o))
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    80
			return false;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    81
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    82
		if (getType(o) == EMPTY)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    83
			return false;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    84
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    85
		/*
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    86
		 * 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    87
		 * 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    88
		 * 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    89
		 */
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    90
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    91
		steps = Math.abs(t - o);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    92
		rows = Math.abs(t / 8 - o / 8);
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    93
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    94
		switch (getType(o)) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    95
		case PIECE:
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    96
			if (steps % 7 == 0) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    97
				if (steps == 7 && rows == 1 && isEmpty(t)) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    98
					if (isBlack(o) && (t > o))
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
    99
						return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   100
					if (isWhite(o) && (t < o))
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   101
						return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   102
				}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   103
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   104
				if (steps == 14 && rows == 2 && isEmpty(t)) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   105
					if (isBlack(o) && (t > o) && isEnemy(o + 7, o))
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   106
						return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   107
					if (isWhite(o) && (t < o) && isEnemy(o - 7, o))
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   108
						return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   109
				}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   110
			}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   111
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   112
			if (steps % 9 == 0) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   113
				if (steps == 9 && rows == 1 && isEmpty(t)) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   114
					if (isBlack(o) && (t > o))
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   115
						return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   116
					if (isWhite(o) && (t < o))
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   117
						return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   118
				}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   119
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   120
				if (steps == 18 && rows == 2 && isEmpty(t)) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   121
					if (isBlack(o) && (t > o) && isEnemy(o + 9, o))
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   122
						return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   123
					if (isWhite(o) && (t < o) && isEnemy(o - 9, o))
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   124
						return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   125
				}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   126
			}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   127
			break;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   128
		case QUEEN:
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   129
			if (steps % 7 == 0 && isEmpty(t)) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   130
				if (steps == 7 && rows == 1)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   131
					return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   132
				if (steps == 14 && rows == 2)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   133
					return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   134
				if (steps == 21 && rows == 3)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   135
					return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   136
				if (steps == 28 && rows == 4)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   137
					return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   138
				if (steps == 35 && rows == 5)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   139
					return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   140
				if (steps == 42 && rows == 6)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   141
					return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   142
				if (steps == 49 && rows == 7)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   143
					return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   144
			}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   145
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   146
			if (steps % 9 == 0 && isEmpty(t)) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   147
				if (steps == 9 && rows == 1)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   148
					return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   149
				if (steps == 18 && rows == 2)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   150
					return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   151
				if (steps == 27 && rows == 3)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   152
					return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   153
				if (steps == 36 && rows == 4)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   154
					return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   155
				if (steps == 45 && rows == 5)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   156
					return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   157
				if (steps == 54 && rows == 6)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   158
					return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   159
				if (steps == 63 && rows == 7)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   160
					return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   161
			}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   162
			break;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   163
		}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   164
		return false;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   165
	}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   166
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   167
	/**
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   168
	 * pop: undo the push operation.
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   169
	 */
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   170
	public void undo() {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   171
		History h1 = null;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   172
		History h2 = null;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   173
		int size = stack.size();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   174
		int pos;
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   175
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   176
		if (size < 2)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   177
			return;
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   178
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   179
		h1 = stack.remove(size - 1);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   180
		h2 = stack.remove(size - 2);
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   181
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   182
		setPiece(h1.pos(), h1.piece());
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   183
		setPiece(h2.pos(), h2.piece());
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   184
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   185
		if (getType(h2.pos()) != EMPTY) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   186
			pos = 2 * h2.pos() - h1.pos();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   187
			if (pos >= 0 && pos < 64)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   188
				setPiece(pos, new Piece(null, null, EMPTY, 0));
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   189
		}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   190
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   191
		/* Reset the current player */
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   192
		setBlacksTurn(h2.turn());
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   193
	}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   194
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   195
	/**
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   196
	 * simulates a "valid" move or returns false. all changes are relative to
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   197
	 * pieces and will not be painted.
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   198
	 */
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   199
	public boolean simulateMove(int t, int o) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   200
		int rows = Math.abs(t / 8 - o / 8);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   201
		int pos;
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   202
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   203
		if (!validMove(t, o)) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   204
			return false;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   205
		}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   206
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   207
		if (rows == 2 && getType(o) == PIECE) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   208
			pos = (t - o) / 2 + o;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   209
			push(getPiece(pos), pos, getPiece(o), o);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   210
			setPiece(pos, new Piece(null, null, EMPTY, 0));
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   211
		} else
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   212
			push(getPiece(t), t, getPiece(o), o);
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   213
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   214
		setPiece(t, new Piece(getPiece(o)));
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   215
		setPiece(o, new Piece(null, null, EMPTY, 0));
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   216
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   217
		return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   218
	}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   219
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   220
	/**
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   221
	 * performs a "valid" move or returns false. all changes are relative to
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   222
	 * board_pieces and will be painted.
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   223
	 */
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   224
	public boolean doMove(int t, int o) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   225
		int steps = Math.abs(t - o);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   226
		int rows = Math.abs(t / 8 - o / 8);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   227
		int pos;
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   228
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   229
		if (!validMove(t, o)) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   230
			return false;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   231
		}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   232
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   233
		if (rows == 2 && getType(o) == PIECE) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   234
			pos = (t - o) / 2 + o;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   235
			push(getPiece(pos), pos, getPiece(o), o);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   236
			setPiece(pos, new Piece(null, null, EMPTY, 0));
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   237
		} else if (rows >= 2 && getType(o) == QUEEN) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   238
			if (steps % 7 == 0) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   239
				if (t > o)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   240
					for (pos = o + 7; pos <= t - 7; pos += 7) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   241
						if (isEnemy(pos, o)) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   242
							push(getPiece(pos), pos, getPiece(o), o);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   243
							setPiece(pos, new Piece(null, null, EMPTY, 0));
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   244
						}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   245
					}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   246
				else {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   247
					for (pos = o - 7; pos >= t + 7; pos -= 7) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   248
						if (isEnemy(pos, o)) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   249
							push(getPiece(pos), pos, getPiece(o), o);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   250
							setPiece(pos, new Piece(null, null, EMPTY, 0));
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   251
						}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   252
					}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   253
				}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   254
			}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   255
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   256
			if (steps % 9 == 0) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   257
				if (t > o)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   258
					for (pos = o + 9; pos <= t - 9; pos += 9) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   259
						if (isEnemy(pos, o)) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   260
							push(getPiece(pos), pos, getPiece(o), o);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   261
							setPiece(pos, new Piece(null, null, EMPTY, 0));
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   262
						}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   263
					}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   264
				else {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   265
					for (pos = o - 9; pos >= t + 9; pos -= 9) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   266
						if (isEnemy(pos, o)) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   267
							push(getPiece(pos), pos, getPiece(o), o);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   268
							setPiece(pos, new Piece(null, null, EMPTY, 0));
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   269
						}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   270
					}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   271
				}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   272
			}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   273
		}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   274
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   275
		if (t <= 7 && getType(o) == PIECE)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   276
			setPiece(t, new Piece(white_super_sun));
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   277
		else if (t >= 56 && getType(o) == PIECE)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   278
			setPiece(t, new Piece(black_super_sun));
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   279
		else
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   280
			setPiece(t, new Piece(getPiece(o)));
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   281
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   282
		setPiece(o, new Piece(null, null, EMPTY, 0));
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   283
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   284
		board_pieces = getPieces();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   285
		repaint();
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   286
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   287
		moveNr = stack.size();
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   288
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   289
		return true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 15
diff changeset
   290
	}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   291
}