📄 chesspad.java
字号:
package cn.pzhu.lxb.chess;
import java.awt.Button;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Date;
class ChessPad extends Panel implements MouseListener, ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
int array[][] = new int[19][19];
Scan scanp = new Scan();
Scan scanc = new Scan();
AutoPlay autoPlay = new AutoPlay();
Evaluate evaluatep = new Evaluate();
Evaluate evaluatec = new Evaluate();
Sort sort = new Sort();
Date da = new Date();
int i = 0;
long m = da.getTime();
int x = -1, y = -1, 棋子颜色 = 1;
Button button = new Button("重新开局");
TextField text_1 = new TextField("请黑棋下子"),
text_2 = new TextField(),
text_3 = new TextField();
ChessPad() {
setSize(450, 440);
setLayout(null);
setBackground(Color.pink);
addMouseListener(this);
add(button);
button.setBounds(40, 5, 80, 24);
button.addActionListener(this);
add(text_1);
text_1.setBounds(130, 5, 80, 24);
add(text_3);
text_3.setBounds(220, 5, 80, 24);
add(text_2);
text_2.setBounds(320, 5, 90, 24);
// add(text_4);
// text_4.setBounds(370, 5, 70, 24);
for (int i = 0; i < 19; i++)
for (int j = 0; j < 19; j++) {
array[i][j] = 0;
}
for (int i = 0; i < 19; i++)
for (int j = 0; j < 19; j++)
for (int h = 0; h < 5; h++) {
scanp.shape[i][j][h] = 0;
scanc.shape[i][j][h] = 0;
}
text_1.setEditable(false);
text_2.setEditable(false);
}
//画棋盘
public void paint(Graphics g) {
for (int i = 40; i <= 400; i = i + 20) {
g.drawLine(40, i, 400, i);
}
for (int j = 40; j <= 400; j = j + 20) {
g.drawLine(j, 40, j, 400);
}
g.fillOval(97, 97, 6, 6);
g.fillOval(337, 97, 6, 6);
g.fillOval(97, 337, 6, 6);
g.fillOval(337, 337, 6, 6);
g.fillOval(217, 217, 6, 6);
}
//检查鼠标事件,并响应
public void mousePressed(MouseEvent e) {
int a = 0, b = 0;
if (e.getModifiers() == InputEvent.BUTTON1_MASK) {
x = (int) e.getX();
y = (int) e.getY();
ChessPoint_black chesspoint_black = new ChessPoint_black(this);
ChessPoint_white chesspoint_white = new ChessPoint_white(this);
i++;
text_3.setText("这是第" + i + "步"); //显示走了几步
if ((x + 5) / 20 < 2 || (y + 5) / 20 < 2 || (x - 5) / 20 > 19 || (y - 5) / 20 > 19) {
}
else {
a = (x + 10) / 20;
b = (y + 10) / 20;
if (array[b - 2][a - 2] == 0 && 棋子颜色 == 1) {
this.add(chesspoint_black);
chesspoint_black.setBounds(a * 20 - 9, b * 20 - 9, 18, 18);
棋子颜色 = 棋子颜色 * (-1);
array[b - 2][a - 2] = 1;
if (Judge.judge(array, 1)) {
text_1.setText("黑棋赢!");
棋子颜色 = 2;
removeMouseListener(this);
}
else {
text_1.setText("");
}
}
}
if (i > 2 && 棋子颜色 == -1) {
scanp.scan(array, 1);
scanc.scan(array, -1);
sort.sort(scanp.shape);
sort.sort(scanc.shape);
evaluatep.evaluate(scanp.shape);
evaluatec.evaluate(scanc.shape);
棋子颜色 = 棋子颜色 * (-1);
this.add(chesspoint_white);
if (evaluatep.max > evaluatec.max) {
text_2.setText(evaluatep.max_x + " " + evaluatep.max_y + " " + evaluatep.max);
chesspoint_white.setBounds((evaluatep.max_y + 2) * 20 - 9,(evaluatep.max_x + 2) * 20 - 9, 18, 18);
array[evaluatep.max_x][evaluatep.max_y] = -1;
text_1.setText("请黑棋下子");
for (int i = 0; i < 19; i++)
for (int j = 0; j < 19; j++)
for (int h = 0; h < 5; h++) {
scanp.shape[i][j][h] = 0;
scanc.shape[i][j][h] = 0;
}
}
else{
text_2.setText(evaluatec.max_x + " " + evaluatec.max_y + " " + evaluatec.max);
chesspoint_white.setBounds((evaluatec.max_y + 2) * 20 - 9,(evaluatec.max_x + 2) * 20 - 9, 18, 18);
array[evaluatec.max_x][evaluatec.max_y] = -1;
if (Judge.judge(array, -1)) {
text_2.setText("白棋赢!");
棋子颜色 = 2;
removeMouseListener(this);
}
else {
text_1.setText("请黑棋下子");
for (int i = 0; i < 19; i++)
for (int j = 0; j < 19; j++)
for (int h = 0; h < 5; h++) {
scanp.shape[i][j][h] = 0;
scanc.shape[i][j][h] = 0;
}
}
}
}
if (i <= 2 && 棋子颜色 == -1) {
autoPlay.autoPlay(array, b - 2, a - 2);
this.add(chesspoint_white);
棋子颜色 = 棋子颜色 * (-1);
chesspoint_white.setBounds((autoPlay.y + 2) * 20 - 9,
(autoPlay.x + 2) * 20 - 9, 18, 18);
array[autoPlay.x][autoPlay.y] = -1;
if (Judge.judge(array, -1)) {
text_2.setText("白棋赢!");
棋子颜色 = 2;
removeMouseListener(this);
} else {
text_1.setText("请黑棋下子");
text_2.setText(autoPlay.x + " " + autoPlay.y);
}
}
}
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
public void actionPerformed(ActionEvent e) {
this.removeAll();
棋子颜色 = 1;
add(button);
button.setBounds(40, 5, 80, 24);
add(text_1);
text_1.setBounds(130, 5, 80, 24);
text_2.setText("");
text_1.setText("请黑棋下子");
add(text_2);
text_2.setBounds(320, 5, 90, 24);
add(text_3);
text_3.setBounds(220, 5, 80, 24);
i = 0;
text_3.setText("这是第" + i + "步");
for (int i = 0; i < 19; i++)
for (int j = 0; j < 19; j++) {
array[i][j] = 0;
}
for (int i = 0; i < 19; i++)
for (int j = 0; j < 19; j++)
for (int h = 0; h < 5; h++) {
scanp.shape[i][j][h] = 0;
scanc.shape[i][j][h] = 0;
}
addMouseListener(this);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -