您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 中国象棋源代码JAVA程序
importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.util.*;importjava.io.*;publicclassChess{publicstaticvoidmain(Stringargs[]){newChessMainFrame(中国象棋:观棋不语真君子,棋死无悔大丈夫);}}classChessMainFrameextendsJFrameimplementsActionListener,MouseListener,Runnable{//玩家JLabelplay[]=newJLabel[32];//棋盘JLabelimage;//窗格Containercon;//工具栏JToolBarjmain;//重新开始JButtonanew;//悔棋JButtonrepent;//退出JButtonexit;//当前信息JLabeltext;//保存当前操作VectorVar;//规则类对象(使于调用方法)ChessRulerule;/****单击棋子**chessManClick=true闪烁棋子并给线程响应**chessManClick=false吃棋子停止闪烁并给线程响应*/booleanchessManClick;/****控制玩家走棋**chessPlayClick=1黑棋走棋**chessPlayClick=2红棋走棋默认红棋**chessPlayClick=3双方都不能走棋*/intchessPlayClick=2;//控制棋子闪烁的线程Threadtmain;//把第一次的单击棋子给线程响应staticintMan,i;ChessMainFrame(){newChessMainFrame(中国象棋);}/****构造函数**初始化图形用户界面*/ChessMainFrame(StringTitle){//获行客格引用con=this.getContentPane();con.setLayout(null);//实例化规则类rule=newChessRule();Var=newVector();//创建工具栏jmain=newJToolBar();text=newJLabel(欢迎使用象棋对弈系统);//当鼠标放上显示信息text.setToolTipText(信息提示);anew=newJButton(新游戏);anew.setToolTipText(重新开始新的一局);exit=newJButton(退出);exit.setToolTipText(退出象棋程序程序);repent=newJButton(悔棋);repent.setToolTipText(返回到上次走棋的位置);//把组件添加到工具栏jmain.setLayout(newGridLayout(0,4));jmain.add(anew);jmain.add(repent);jmain.add(exit);jmain.add(text);jmain.setBounds(0,0,558,30);con.add(jmain);//添加棋子标签drawChessMan();//注册按扭监听anew.addActionListener(this);repent.addActionListener(this);exit.addActionListener(this);//注册棋子移动监听for(inti=0;i32;i++){con.add(play[i]);play[i].addMouseListener(this);}//添加棋盘标签con.add(image=newJLabel(newImageIcon(image\\Main.GIF)));image.setBounds(0,30,558,620);image.addMouseListener(this);//注册窗体关闭监听this.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEventwe){System.exit(0);}});//窗体居中DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();DimensionframeSize=this.getSize();if(frameSize.heightscreenSize.height){frameSize.height=screenSize.height;}if(frameSize.widthscreenSize.width){frameSize.width=screenSize.width;}this.setLocation((screenSize.width-frameSize.width)/2-280,(screenSize.height-frameSize.height)/2-350);//设置this.setIconImage(newImageIcon(image\\红将.GIF).getImage());this.setResizable(false);this.setTitle(Title);this.setSize(558,670);this.show();}/****添加棋子方法*/publicvoiddrawChessMan(){//流程控制inti,k;//图标Iconin;//黑色棋子//车in=newImageIcon(image\\黑车.GIF);for(i=0,k=24;i2;i++,k+=456){play[i]=newJLabel(in);play[i].setBounds(k,56,55,55);play[i].setName(车1);}//马in=newImageIcon(image\\黑马.GIF);for(i=4,k=81;i6;i++,k+=342){play[i]=newJLabel(in);play[i].setBounds(k,56,55,55);play[i].setName(马1);}//相in=newImageIcon(image\\黑象.GIF);for(i=8,k=138;i10;i++,k+=228){play[i]=newJLabel(in);play[i].setBounds(k,56,55,55);play[i].setName(象1);}//士in=newImageIcon(image\\黑士.GIF);for(i=12,k=195;i14;i++,k+=114){play[i]=newJLabel(in);play[i].setBounds(k,56,55,55);play[i].setName(士1);}//卒in=newImageIcon(image\\黑卒.GIF);for(i=16,k=24;i21;i++,k+=114){play[i]=newJLabel(in);play[i].setBounds(k,227,55,55);play[i].setName(卒1+i);}//炮in=newImageIcon(image\\黑炮.GIF);for(i=26,k=81;i28;i++,k+=342){play[i]=newJLabel(in);play[i].setBounds(k,170,55,55);play[i].setName(炮1+i);}//将in=newImageIcon(image\\黑将.GIF);play[30]=newJLabel(in);play[30].setBounds(252,56,55,55);play[30].setName(将1);//红色棋子//车in=newImageIcon(image\\红车.GIF);for(i=2,k=24;i4;i++,k+=456){play[i]=newJLabel(in);play[i].setBounds(k,569,55,55);play[i].setName(车2);}//马in=newImageIcon(image\\红马.GIF);for(i=6,k=81;i8;i++,k+=342){play[i]=newJLabel(in);play[i].setBounds(k,569,55,55);play[i].setName(马2);}//相in=newImageIcon(image\\红象.GIF);for(i=10,k=138;i12;i++,k+=228){play[i]=newJLabel(in);play[i].setBounds(k,569,55,55);play[i].setName(象2);}//士in=newImageIcon(image\\红士.GIF);for(i=14,k=195;i16;i++,k+=114){play[i]=newJLabel(in);play[i].setBounds(k,569,55,55);play[i].setName(士2);}//兵in=newImageIcon(image\\红卒.GIF);for(i=21,k=24;i26;i++,k+=114){play[i]=newJLabel(in);play[i].setBounds(k,398,55,55);play[i].setName(卒2+i);}//炮in=newImageIcon(image\\红炮.GIF);for(i=28,k=81;i30;i++,k+=342){play[i]=newJLabel(in);play[i].setBounds(k,455,55,55);play[i].setName(炮2+i);}//帅in=newImageIcon(image\\红将.GIF);play[31]=newJLabel(in);play[31].setBounds(252,569,55,55);play[31].setName(帅2);}/****线程方法控制棋子闪烁*/publicvoidrun(){while(true){//单击棋子第一下开始闪烁if(chessManClick){play[Man].setVisible(false);//时间控制try{tmain.sleep(200);}catch(Exceptione){}play[Man].setVisible(true);}//闪烁当前提示信息以免用户看不见else{text.setVisible(false);//时间控制try{tmain.sleep(250);}catch(Exceptione){}text.setVisible(true);}try{tmain.sleep(350);}catch(Exceptione){}}}/****单击棋子方法*/publicvoidmouseClicked(MouseEventme){System.out.println(Mouse);//当前坐标intEx=0,Ey=0;//启动线程if(tmain==null){tmain=newThread(this);tmain.start();}//单击棋盘(移动棋子)if(me.getSource().equals(image)){//该红棋走棋的时候if(chessPlayClick==2&&play[Man].getName().charAt(1)=='2'){Ex=play[Man].getX();Ey=play[Man].getY();//移动卒、兵if(Man15&&Man26){rule.armsRule(Man,play[Man],me);}//移动炮elseif(Man25&&Man30){rule.cannonRule(play[Man],play,me);}//移动车elseif(Man=0&&Man
本文标题:中国象棋源代码JAVA程序
链接地址:https://www.777doc.com/doc-6071992 .html