? 最近一直在學習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 = 。
?
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
