`

中國象棋----基于Swing的一個游戲

阅读更多

  最近一直在学习swing,根据网上流传甚广(链接在文末)的一个简易的中国象棋的游戏修改了一下,修正了其中的一些bug,在这里感谢程序的原作者。整理这个游戏主要是用于学习和交流,欢迎转载和修改。  

中国象棋

 

 

package author.estone.chinesechess;

// 主类
public class Chess {
	public static void main(String args[]) {
		new ChessMainFrame("中国象棋  中國壹石頭");
	}
}

 

package author.estone.chinesechess;

import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Vector;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JToolBar;

// 主框架类
class ChessMainFrame extends JFrame implements ActionListener, MouseListener,
		Runnable {
	// 玩家
	JLabel play[] = new JLabel[32];

	// 棋盘
	JLabel image;

	// 窗格
	Container con;

	// 工具栏
	JToolBar jmain;
	// 重新开始
	JButton anew;
	// 悔棋
	JButton repent;
	// 打开
	JButton showOpen;
	// 保存
	JButton showSave;
	// 退出
	JButton exit;

	// 当前信息
	JLabel text;

	// 保存当前操作
	Vector FileVar;
	Vector Var;

	// 规则类对象(使于调用方法)
	ChessRule rule;

	/* 单击棋子********************************* */
	/* chessManClick = true 闪烁棋子 并给线程响应 */
	/* chessManClick = false 吃棋子 停止闪烁 并给线程响应 */
	boolean chessManClick;

	/* 控制玩家走棋*************************** */
	/* chessPlayClick=1 黑棋走棋 */
	/* chessPlayClick=2 红棋走棋 默认红棋 */
	/* chessPlayClick=3 双方都不能走棋 */
	int chessPlayClick = 2;

	// 控制棋子闪烁的线程
	Thread tmain;
	// 把第一次的单击棋子给线程响应
	static int Man, i;

	ChessMainFrame() {
	}

	ChessMainFrame(String Title) {
		// 获行客格引用
		con = this.getContentPane();
		con.setLayout(null);
		// 实例化规则类
		rule = new ChessRule();
		FileVar = new Vector();
		Var = new Vector();

		// 创建工具栏
		jmain = new JToolBar();
		text = new JLabel("  热烈欢迎");
		text.setToolTipText("提示信息");
		anew = new JButton(" 新 游 戏 ");
		anew.setToolTipText("重新开始新的一局");
		exit = new JButton(" 退  出 ");
		exit.setToolTipText("退出本程序");
		repent = new JButton(" 悔  棋 ");
		repent.setToolTipText("返回到上次走棋的位置");
		showOpen = new JButton("打开");
		showOpen.setToolTipText("打开以前棋局");
		showSave = new JButton("保存");
		showSave.setToolTipText("保存当前棋局");

		// 把组件添加到工具栏
		jmain.setLayout(new GridLayout(0, 6));
		jmain.add(anew);
		jmain.add(repent);
		jmain.add(showOpen);
		jmain.add(showSave);
		jmain.add(exit);
		jmain.add(text);
		jmain.setBounds(0, 500, 450, 30);
		con.add(jmain);

		// 添加棋子标签
		drawChessMan();

		/* 注册监听者 */

		// 注册按扭监听
		anew.addActionListener(this);
		repent.addActionListener(this);
		exit.addActionListener(this);
		showOpen.addActionListener(this);
		showSave.addActionListener(this);

		// 注册棋子移动监听
		for (int i = 0; i < 32; i++) {
			con.add(play[i]);
			play[i].addMouseListener(this);
		}

                ................................................................
}		

 

修改这个源码主要是为swing初学者提供一个简单的例子。由于没有找到这个文件的原始链接,所以只能给出在Google上的搜索出来的链接 http://www.google.cn/search?hl=zh-CN&q=java%E7%89%88%E4%B8%AD%E5%9B%BD%E8%B1%A1%E6%A3%8B&meta=&aq=f&oq= 。

 

 

 

 

分享到:
评论

相关推荐

    基于Java+Swing+Socket实现中国象棋-网络版(课程设计)

    基于Java+Swing+Socket实现中国象棋-网络版(课程设计)已获导师指导并通过的95分的高分期末大作业项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 该系统功能完善、界面美观、操作简单...

    基于Java+Swing+Socket实现中国象棋-网络版

    6、轮到走棋的一方,将某个棋子从一个交叉点走到另一个交叉点,或者吃掉对方的棋子而占领其交叉点,都算走了一着。 7、双方各走一着,称为一个回合。 8、走一着棋时,如果己方棋子能够走到的位置有对方棋子存在,就...

    基于java实现中国象棋小游戏升级版

    基于java实现中国象棋小游戏升级版,是我学习java来练练手的,java基础入门的学生可以考虑参考一下,

    基于Java+Swing实现中国象棋游戏(课程设计)

    基于Java+Swing实现中国象棋游戏(课程设计)已获导师指导并通过的95分的高分期末大作业项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 该系统功能完善、界面美观、操作简单、功能齐全...

    中国象棋java版

    【中国象棋java版】是一款基于Java编程语言开发的中国象棋游戏。在这个项目中,开发者使用了Java Swing库来创建用户界面,并结合了Java AWT库进行图形绘制和事件处理。以下是该项目的关键知识点: 1. **Java Swing*...

    基于Java+Swing实现中国象棋游戏

    6、轮到走棋的一方,将某个棋子从一个交叉点走到另一个交叉点,或者吃掉对方的棋子而占领其交叉点,都算走了一着。 7、双方各走一着,称为一个回合。 8、走一着棋时,如果己方棋子能够走到的位置有对方棋子存在,就...

    基于Java的中国象棋对弈游戏系统开发-2W字(查重13%)

    基于Java的中国象棋对弈游戏系统开发-2W字(查重13%),主要技术栈:Java Swing、Eclipse、Idea、剪枝算法、搜索算法、博弈树算法、Zobrist及键值等。已完成国内外研究概况调研、游戏可行性分析、需求分析、界面设计、...

    JAVA--中国象棋.doc

    【JAVA--中国象棋】是一个基于Java编程语言的课程设计项目,旨在让学生通过实现中国象棋游戏,加深对Java基础知识的理解,尤其是面向对象设计、图形用户界面(GUI)的构建,以及程序流程控制等方面的知识。...

    基于java swing的象棋游戏, 人机对弈基于极大极小值搜索算法.zip

    使用java开发的游戏项目源码,可用于毕业设计、课程设计、练手学习等

    绝版中国象棋

    总体来说,【绝版中国象棋】这个游戏结合了Java的图形界面开发、事件处理机制和自定义的游戏逻辑,为用户提供了一个完整的中国象棋体验。开发者巧妙地利用了Java Swing的组件和事件模型,构建出一个互动性强且具有...

    JAVA中国象棋网络对弈软件论文

    中国象棋网络对弈软件是基于JAVA技术和MySQL数据库开发的一款多人在线对战平台。该软件采用了客户端/服务器(C/S)架构,旨在提供一个友好、便捷且稳定的对弈环境,让玩家可以实时进行象棋博弈。 在技术实现上,...

    Java课程设计报告-基于Java swing带GUI界面的中国象棋系统.doc

    本程序实现了五个功能键,即新游戏:开始一局新的对弈;悔棋:将棋子返回刚才所处位置;打开:调用以前保存的棋局;保存:将当前棋局保存;退出:退出本程序。

    java局域网对战象棋

    本资源是一个基于Java的中国象棋局域网多人对战平台,具有源代码。以下是从该资源中提取的相关知识点: 1. 软件工程课程设计 软件工程课程设计是软件技术专业的核心课程,旨在培养学生的软件开发能力。本资源的...

    计算机中国象棋网络对弈软件-学位论文.doc

    计算机中国象棋网络对弈软件是基于 C/S 架构的网络对弈象棋软件,采用 Java 语言和 MySQL 数据库开发。该软件支持多人同时在线对弈,提供了棋友状态列表、弈棋邀请、观看他人弈棋、棋谱记录和保存、在线交流、快速...

    JAVA中国象棋程序源代码.doc

    【JAVA中国象棋程序源代码】是一个基于Java编程语言实现的中国象棋游戏。这个程序包含了一个主类`ChineseChess`以及一个`ChessMainFrame`类,后者继承自`JFrame`,并实现了`ActionListener`, `MouseListener`, `...

    计算机中国象棋网络对弈软件毕业设计.doc

    计算机中国象棋网络对弈软件的设计与实现是一个典型的基于C/S架构的网络应用程序,它结合了计算机科学与传统中国文化,为用户提供了一个实时的在线对弈平台。本软件使用Java编程语言进行开发,利用其跨平台特性,...

    Java中国象棋程序源代码[归类].pdf

    【Java中国象棋程序源代码】是一个基于Java编程语言实现的中国象棋游戏。这个程序包含了一个主类`ChineseChess`以及多个辅助类,如`ChessMainFrame`、`MusicDemo`等,用于构建游戏界面、处理用户交互以及执行游戏...

    java应用软件程序设计

    中国象棋打谱软件 11.1. 设计内容 11.2. 设计要求 11.3. 总体设计 11.4. 具体设计 11.4.1. 运行效果与程序发布 11.4.2. 主类 Chess 11.4.3. 对弈棋盘ChessBoard 11.4.4. 棋子ChessPiece ...

Global site tag (gtag.js) - Google Analytics