Java中国象棋程序源代码

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

importjava.io.*;importjava.applet.Applet;importjava.applet.AudioClip;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.util.*;importjava.io.*;//主类//主框架类publicclassChineseChess{publicstaticvoidmain(Stringargs[]){newChessMainFrame(中国象棋);}}classChessMainFrameextendsJFrameimplementsActionListener,MouseListener,Runnable{MusicDemot=newMusicDemo();//玩家JLabelplay[]=newJLabel[32];//棋盘JLabelimage;//窗格Containercon;//工具栏JToolBarjmain;//重新开始JButtonanew;//悔棋JButtonrepent;//打开JButtonshowOpen;//保存JButtonshowSave;//退出JButtonexit;//当前信息JLabeltext;//保存当前操作VectorFileVar;VectorVar;//规则类对象(使于调用方法)ChessRulerule;/*单击棋子**********************************//*chessManClick=true闪烁棋子并给线程响应*//*chessManClick=false吃棋子停止闪烁并给线程响应*/booleanchessManClick;/*控制玩家走棋****************************//*chessPlayClick=1黑棋走棋*//*chessPlayClick=2红棋走棋默认红棋*//*chessPlayClick=3双方都不能走棋*/intchessPlayClick=2;//控制棋子闪烁的线程Threadtmain;//把第一次的单击棋子给线程响应staticintMan,i;ChessMainFrame(){}ChessMainFrame(StringTitle){//获行客格引用con=this.getContentPane();con.setLayout(null);//实例化规则类rule=newChessRule();FileVar=newVector();Var=newVector();//创建工具栏jmain=newJToolBar();text=newJLabel(热烈欢迎);text.setToolTipText(提示信息);anew=newJButton(新游戏);anew.setToolTipText(重新开始新的一局);exit=newJButton(退出);exit.setToolTipText(退出本程序);repent=newJButton(悔棋);repent.setToolTipText(返回到上次走棋的位置);showOpen=newJButton(打开);showOpen.setToolTipText(打开以前棋局);showSave=newJButton(保存);showSave.setToolTipText(保存当前棋局);//把组件添加到工具栏jmain.setLayout(newGridLayout(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(inti=0;i32;i++){con.add(play[i]);play[i].addMouseListener(this);}//添加棋盘标签con.add(image=newJLabel(newImageIcon(CChess.GIF)));image.setBounds(0,0,446,497);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-200,(screenSize.height-frameSize.height)/2-290);this.setIconImage(newImageIcon(车1.gif).getImage());this.setResizable(false);this.setTitle(Title);this.setSize(450,550);this.show();}/*添加棋子方法************/publicvoiddrawChessMan(){//流程控制inti,k;//图标Iconin;//黑色棋子//车in=newImageIcon(车1.GIF);for(i=0,k=10;i2;i++,k+=385){play[i]=newJLabel(in);play[i].setBounds(k,10,40,40);play[i].setName(车1);}//马in=newImageIcon(马1.GIF);for(i=4,k=60;i6;i++,k+=285){play[i]=newJLabel(in);play[i].setBounds(k,10,40,40);play[i].setName(马1);}//相in=newImageIcon(相1.GIF);for(i=8,k=105;i10;i++,k+=195){play[i]=newJLabel(in);play[i].setBounds(k,10,40,40);play[i].setName(相1);}//士in=newImageIcon(士1.GIF);for(i=12,k=155;i14;i++,k+=95){play[i]=newJLabel(in);play[i].setBounds(k,10,40,40);play[i].setName(士1);}//卒in=newImageIcon(卒1.GIF);for(i=16,k=10;i21;i++,k+=96.5){play[i]=newJLabel(in);play[i].setBounds(k,160,40,40);play[i].setName(卒1+i);}//炮in=newImageIcon(炮1.GIF);for(i=26,k=60;i28;i++,k+=289){play[i]=newJLabel(in);play[i].setBounds(k,110,40,40);play[i].setName(炮1+i);}//将in=newImageIcon(将1.GIF);play[30]=newJLabel(in);play[30].setBounds(205,10,40,40);play[30].setName(将1);//红色棋子//车in=newImageIcon(车2.GIF);for(i=2,k=10;i4;i++,k+=385){play[i]=newJLabel(in);play[i].setBounds(k,450,40,40);play[i].setName(车2);}//马in=newImageIcon(马2.GIF);for(i=6,k=60;i8;i++,k+=285){play[i]=newJLabel(in);play[i].setBounds(k,450,40,40);play[i].setName(马2);}//相in=newImageIcon(相2.GIF);for(i=10,k=105;i12;i++,k+=195){play[i]=newJLabel(in);play[i].setBounds(k,450,40,40);play[i].setName(相2);}//士in=newImageIcon(士2.GIF);for(i=14,k=155;i16;i++,k+=95){play[i]=newJLabel(in);play[i].setBounds(k,450,40,40);play[i].setName(士2);}//兵in=newImageIcon(兵2.GIF);for(i=21,k=10;i26;i++,k+=96.5){play[i]=newJLabel(in);play[i].setBounds(k,300,40,40);play[i].setName(兵2+i);}//炮in=newImageIcon(炮2.GIF);for(i=28,k=60;i30;i++,k+=289){play[i]=newJLabel(in);play[i].setBounds(k,350,40,40);play[i].setName(炮2+i);}//帅in=newImageIcon(帅2.GIF);play[31]=newJLabel(in);play[31].setBounds(205,450,40,40);play[31].setName(帅2);}/*线程方法控制棋子闪烁*/publicvoidrun(){while(true){//单击棋子第一下开始闪烁if(chessManClick){play[Man].setVisible(false);//时间控制try{tmain.sleep(500);}catch(Exceptione){}play[Man].setVisible(true);}//闪烁当前提示信息以免用户看不见else{text.setVisible(false);//时间控制try{tmain.sleep(500);}catch(Exceptione){}text.setVisible(true);}try{tmain.sleep(500);}catch(Exceptione){}}}/*单击棋子方法************************/publicvoidmouseClicked(MouseEventme){MusicDemo1t=newMusicDemo1();//当前坐标intEx=0,Ey=0;//启动线程if(tmain==null){tmain=n

1 / 98
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功