最近一直在学习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= 。