⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chesspad.java

📁 一个简单的JAVA五子棋游戏
💻 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 + -