org/homelinux/largo/checkers/Checkers.java
author Markus Bröker<broeker.markus@googlemail.com>
Fri, 27 Jan 2017 21:25:15 +0100
changeset 16 55b0d5006e7b
parent 14 f12f77aa13b2
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: Checkers.java 144 2008-04-25 13:09:35Z 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/checkers/Checkers.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.checkers;
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.BorderLayout;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
     9
import java.awt.Color;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    10
import java.awt.event.ActionEvent;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    11
import java.awt.event.ActionListener;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    12
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    13
import javax.swing.JButton;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    14
import javax.swing.JFrame;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    15
import javax.swing.JLabel;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    16
import javax.swing.JPanel;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    17
import javax.swing.JSpinner;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    18
import javax.swing.SpinnerNumberModel;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    19
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    20
import org.homelinux.largo.games.board.MouseListener;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    21
import org.homelinux.largo.games.board.Point;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    22
import org.homelinux.largo.utils.BrowserLaunch;
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    23
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    24
public class Checkers extends JFrame implements Runnable {
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    25
	static final long serialVersionUID = 1L;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    26
	static final String helpURL = "https://www.4customers.de/hg/Schach";
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    27
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    28
	MouseListener listener;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    29
	KIBoard board;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    30
	Point p;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    31
	JLabel human = new JLabel("<html><font size='5' color='#FFFFFF'>Human</font></html>");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    32
	JLabel computer = new JLabel("<html><font size='5' color='#FFFFFF'>Computer</font></html>");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    33
	JButton neu = new JButton("Play");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    34
	JButton pconly = new JButton("PC-PC");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    35
	JButton back = new JButton("Back");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    36
	JButton forward = new JButton("For");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    37
	JButton help = new JButton("Source");
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    38
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    39
	SpinnerNumberModel model = new SpinnerNumberModel(4, 1, 8, 1);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    40
	JSpinner combo = new JSpinner(model);
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    41
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    42
	JPanel panel;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    43
	JPanel fpanel;
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    44
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    45
	int search_depth;
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    46
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    47
	boolean pc_only;
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    48
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    49
	public Checkers(int w, int h) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    50
		super("Checkers by 4customers.de");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    51
		setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    52
		board = new KIBoard(w, h);
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: 14
diff changeset
    54
		fpanel = new JPanel();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    55
		fpanel.add(back);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    56
		fpanel.add(neu);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    57
		fpanel.add(combo);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    58
		fpanel.add(pconly);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    59
		fpanel.add(help);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    60
		fpanel.add(forward);
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    61
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    62
		panel = new JPanel();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    63
		panel.setLayout(new BorderLayout());
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    64
		panel.add(human, "West");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    65
		panel.add(fpanel, "Center");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    66
		panel.add(computer, "East");
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    67
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    68
		fpanel.setBackground(new Color(50, 100, 200));
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    69
		panel.setBackground(new Color(50, 100, 200));
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    70
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    71
		getContentPane().setLayout(new BorderLayout());
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    72
		getContentPane().add(panel, "North");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    73
		getContentPane().add(board, "Center");
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    74
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    75
		neu.addActionListener(new ActionListener() {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    76
			public void actionPerformed(ActionEvent actionevent) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    77
				human.setText("<html><font size='5' color='#FFFFFF'>Human</font></html>");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    78
				computer.setText("<html><font size='5' color='#FFFFFF'>Computer</font></html>");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    79
				pc_only = false;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    80
				board.init();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    81
				board.negateEstimation(false);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    82
			}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    83
		});
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    84
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    85
		pconly.addActionListener(new ActionListener() {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    86
			public void actionPerformed(ActionEvent actionevent) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    87
				human.setText("<html><font size='5' color='#FFFFFF'>Computer</font></html>");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    88
				computer.setText("<html><font size='5' color='#FFFFFF'>Computer</font></html>");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    89
				pc_only = true;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    90
			}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    91
		});
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    92
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    93
		back.addActionListener(new ActionListener() {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    94
			public void actionPerformed(ActionEvent actionevent) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    95
				board.backwards();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    96
			}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    97
		});
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
    98
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
    99
		forward.addActionListener(new ActionListener() {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   100
			public void actionPerformed(ActionEvent actionevent) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   101
				board.forward();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   102
			}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   103
		});
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   104
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   105
		help.addActionListener(new ActionListener() {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   106
			public void actionPerformed(ActionEvent actionevent) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   107
				BrowserLaunch browser = new BrowserLaunch();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   108
				browser.openURL(helpURL);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   109
			}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
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: 14
diff changeset
   112
		listener = board.getMouseListener();
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   113
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   114
		pc_only = false;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   115
		search_depth = 3;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   116
		pack();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   117
	}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   118
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   119
	public void computer_play() {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   120
		while (pc_only) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   121
			search_depth = model.getNumber().intValue() - 1;
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   122
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   123
			if (!board.isBlacksTurn()) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   124
				human.setText("<html><font size='5' color='#FF3333'>Computer</font></html>");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   125
				board.negateEstimation(true);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   126
				if (!board.doBestMove(search_depth)) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   127
					pc_only = false;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   128
					return;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   129
				}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   130
				board.negateEstimation(false);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   131
				human.setText("<html><font size='5' color='#FFFFFF'>Computer</font></html>");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   132
				board.setBlacksTurn(true);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   133
			} else {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   134
				computer.setText("<html><font size='5' color='#FF3333'>Computer</font></html>");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   135
				if (!board.doBestMove(search_depth)) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   136
					pc_only = false;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   137
					return;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   138
				}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   139
				computer.setText("<html><font size='5' color='#FFFFFF'>Computer</font></html>");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   140
				board.setBlacksTurn(false);
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   141
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   142
				if (board.simu_debug()) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   143
					for (int i = 0; i < 64; i++) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   144
						if ((i + 1) % 8 == 0)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   145
							System.err.printf("%2d=%d%n", i, board.getValue(i));
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   146
						else
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   147
							System.err.printf("%2d=%d ", i, board.getValue(i));
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   148
					}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   149
				}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   150
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   151
				try {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   152
					Thread.sleep(10);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   153
				} catch (InterruptedException e) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   154
					System.err.println("computer_play: " + e.getLocalizedMessage());
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   155
					System.err.println("========================================================================");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   156
					e.printStackTrace();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   157
					System.err.println("========================================================================");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   158
					return;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   159
				}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   160
			}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   161
		}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   162
	}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   163
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   164
	public void run() {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   165
		for (;;) {
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: 14
diff changeset
   167
			/* is this thread safe */
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   168
			search_depth = model.getNumber().intValue() - 1;
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   169
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   170
			if (pc_only) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   171
				computer_play();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   172
			}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   173
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   174
			if (!board.isBlacksTurn()) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   175
				if (listener.isSelected()) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   176
					p = listener.getSelection();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   177
					if (board.move(p))
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   178
						board.setBlacksTurn(true);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   179
				}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   180
				try {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   181
					Thread.sleep(50);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   182
				} catch (InterruptedException e) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   183
					System.err.println("Schach::run: " + e.getLocalizedMessage());
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   184
					System.err.println("========================================================================");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   185
					e.printStackTrace();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   186
					System.err.println("========================================================================");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   187
					return;
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   188
				}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   189
			} else {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   190
				human.setText("<html><font size='5' color='#FFFFFF'>Human</font></html>");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   191
				computer.setText("<html><font size='5' color='#FF3333'>Computer</font></html>");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   192
				board.doBestMove(search_depth);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   193
				human.setText("<html><font size='5' color='#FF3333'>Human</font></html>");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   194
				computer.setText("<html><font size='5' color='#FFFFFF'>Computer</font></html>");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   195
				board.setBlacksTurn(false);
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   196
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   197
				if (board.simu_debug()) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   198
					for (int i = 0; i < 64; i++) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   199
						if ((i + 1) % 8 == 0)
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   200
							System.out.printf("%2d=%d%n", i, board.getValue(i));
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   201
						else
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   202
							System.out.printf("%2d=%d ", i, board.getValue(i));
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   203
					}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   204
				}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   205
			}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   206
		}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   207
	}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   208
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   209
	public static void main(String args[]) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   210
		Checkers c = new Checkers(74, 74);
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   211
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   212
		c.setResizable(false);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   213
		c.setVisible(true);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   214
		c.pack();
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   215
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   216
		if (args.length == 1) {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   217
			if (args[0].equals("full"))
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   218
				c.board.setDebug(true, true);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   219
			else if (args[0].equals("simu"))
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   220
				c.board.setDebug(true, false);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   221
			else if (args[0].equals("undo"))
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   222
				c.board.setDebug(false, true);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   223
			else if (args[0].equals("none"))
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   224
				c.board.setDebug(false, false);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   225
			else {
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   226
				System.out.println("   Chess: java -jar games.jar [full|simu|undo|none]");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   227
				System.out.println(
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   228
						"Checkers: java -cp games.jar org.homelinux.largo.checkers.Checkers [full|simu|undo|none]");
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   229
			}
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   230
		}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   231
16
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   232
		Thread t = new Thread(c);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   233
		t.setPriority(Thread.NORM_PRIORITY - 1);
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   234
		t.start();
55b0d5006e7b Sourcecode neu formatiert und ins Jahr 2017 migriert
Markus Bröker<broeker.markus@googlemail.com>
parents: 14
diff changeset
   235
	}
0
e0dbaef72362 svn copy of the chess engine
Markus Bröker <mbroeker@largo.homelinux.org>
parents:
diff changeset
   236
}