纯Java写的中国象棋_第1页
纯Java写的中国象棋_第2页
纯Java写的中国象棋_第3页
纯Java写的中国象棋_第4页
纯Java写的中国象棋_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、运行效果如下图所示:源代码如下(可以直接运行出结果):import java.awt.*;import java.awt.ciit.*;import javax.swing.*;import java.utiL*;import java.io.*;主类public class Chess !public static void main(String argsQ) new ChussMainFramu,'中国象棋,博大精深”);主框架类class ChessMainFrame extends IFrame implements Acti()nListcncr,M()uscListcnc

2、r,Runnablc 玩家J Label playO = new J Label 32;棋盘j Label image;/窗格Container con;工具栏JToolBar jmain;重新开始J Button anew;悔棋J Button repent;/退出J Button exit;当前信息J Label text;保存当前操作Vector Var;规则类对象(使于调用方法)ChcssRulc rule;* *单击棋子* * chcssNtinClick = true闪烁棋子并给线程响应* * chcssM:inClick = false吃棋子停止闪烁 并给线程响应* /boole

3、an chcssManClick;* *控制玩家走棋* * chcssPlayClick=l 黑棋走棋* * chcssPlayClick=2红棋走棋默认红棋* * chcssPlayClick=3双方都不能走棋*/int chcssPlayClick=2;/控制棋子闪烁的线程Thread tmain;把第一次的单击棋子给线程响应 static int Manj;ChessMainFrameQ new ChussMainFramu("中国象棋* *构造函数* *初始化图形用户界面* /ChcssMainFramc(String Title) 获行客格引用 con = this.gcl

4、ContcntPaiicO; c()n.sctLayout(null);实例化规则类rule = new ChcssRulcQ;Var = new VectorQ;创建工具栏jmain = ncJT(x)lBarQ;text = new JLab("欢迎使用象棋对弈系统) 当鼠标放上显示信息tuxt.sutToolTipTcWC'信息提示");anew = newJButtonC 新游戏"); ancw.sutToolTipTuxt("重新开始新的一局”); exit = newJButt()n(H 退 出"); uxit.sutT&#

5、187;olTipTcxt("退出象棋程序程序) repent = nuwJButton("悔 棋"); rupcntsutToolTipTuxtf返回到上次走棋的位置把组件添加到工具栏|main.sctLayout(new GridLayout(0,4); jmain.add(ancr);jmain.add(rcpcnt);jmain.add(cxit);jmain.add(tcxt);jmain.se tBounds(0,0,558t30); c()n.add(jmain);添加棋子标签 drawChcssMaiiQ;注册按扭监听anew. add A c l

6、ion Listciic r(this); rcpcnLaddActionListciicr(this);exitaddActionlistener(this);注册棋子移动监听 for (int i=0;i<32;i+)con.add(play0);playO.addM()uscListciicr(this);添加棋盘:标签c()n.add(imagc = new 1 Label(nc* ImagcIconfmagcWMain.GlF*1);image.sciB<)unds(0,30,558,620);image.addMouscListcncr(this);注册窗体关闭监听 t

7、his. addWind owLi s teller (11C5X* WindowAdaptcrQ public void windoTClosingfX'indowEvcnt we) Systcm.cxit(O); );窗体居中Dimension scrcciiSizc = ToolkitgetDcfauItToolkitQ.getScrcenSizcQ;Dimension frameSize = this.gctSizcQ;if (framcSizc.hcight > scrccnSizc.hcight) framcSizc.hcight = scrccnSizc.hcigh

8、t;if (framcSizc.width > scrccnSizc.width) RamuSizu.width = scrccnSizc.width;this.sctLocati()n(scrccnSizc.wdth - framuSizu.width) / 2 - 280 ,(scrccnSizc.hcight - framcSizc.hcight) / 2 - 350);设置this.sedconlmage(new Imagr】c)n("imagc红将.GlF').guHma 弟 0);this.sctRcsizablc(falsc);this.sctTitlc(

9、Tillc);this.sctSizc(558,670);this.showQ;/*添加棋子方法*/public void drawChessManQ 流程控制int i,k;图标Icon in;黑色棋子车in = new lmagpIconCimagp黑车G1F”); for (i=(k=24;iv2;i+上+=456)playf = ncwJLabcl(in);playi.sctB(>unds(k,56,55,55); playQsetNamu。车 l,r);马in = new ImagelconC'imagrW 黑马.GIF'); for (i=4*=81;iv6;

10、i+*+=342)playf = new Label (in);playi.sctBounds(k,56,55,55); playQsutNamu。马 ltr);相in = new ImagelconC'im 哈r黑象G1F”); for (i=8上=138;ivl0;i+,k+=228)playf = ncwJLabcl(in);playQsutBcunds(k,56,55,55);playQsutNamu("象 l,r);士in = new ImagelconfmagcMi.GIF11);for (i=12,k=195p<14u+J<+=l 14)playf

11、= ncwJLabcl(in);play0.setBounds(k,56,55,55);play0.sctNameffit);卒in = new ImagelconC'imagC'黑卒G1F'); for (i=l6,k=24;i<21 ;i+,k+=114)playf = ncwJLabcl(in);playp.setBounds(k27,55,55);playQsetNamu,卒 1" + i);炮in = new ImagIconC'imagcW 黑炮.GIF');for (i=26,k=81;i28;i+,k+=342)play。

12、 = newJLabcl(in);playO.sctB(>iinds(k,170,55,55);playQsutNamu,炮 1" + i);将in = new lmagpkonOmagp 黑将.GIF。;play 30 = ncwJLabul(in);play30.sctBounds(252,56,55,55);play30.sutNam«”将 1H);红色棋子车in = new ImagekonC'imag红车.GIF");for。=2上=24;沁4计+*+=456)playf = ncwJLabcl(in);playH.sctB(>iin

13、ds(k>569,55,55);playQsetNamuC车 2,r);马in = new ImagpIconC'imagtW 红马.GIF');for (i=6>=81<8+Jc+=342)playf = ncwJLabcl(in);playf.sctBounds(k,569,55,55);playH-setNamef1 2tr);相in = new ImagelconC'imagC红象GIF");for (i=10,k=138y<12;i+,k+=228)playp = ncwJLabcl(in);playi.sctBounds(k

14、,569,55,55);playU.sutNamu("象 2,r);士in = ImageIc()n(1,imagrEi-CrIFM); for (i=14,k=195u<16;i+,k+=l 14) playf = ncwJLabcl(in);play p.sctB(>iinds(k5569,55,55);playf.sctNamc(ndr 2');兵in = new lmagpkon("image红卒.GIF'); for (i=2hk=24;i<26;i+,k+=114)playf = ncwJLabcl(in);playi.sctB

15、(>unds(k,398,55,55);play4sutNamu(“卒 2" + i);炮in = new ImagelcondmagtW 红炮.GIF。; for (i=28,k=81;i<3O;i+,k+=342)(playf = ncwJLabcl(in);play0.sctBounds(k,455,55,55); playQsutNam。炮 2" + i);帅in = new ImagelconC'imag红将.GIF");play31 = ncwJLabul(in);play31.setBounds(252,569,55,55);pl

16、ay31.sutNamu("帅 2H);/* *线程方法控制棋子闪烁* /public void run()while (true) 单击棋子第一下开始闪烁if (chessManClick) play M an, s ctVisibie( false);时间控制 trytmain.slccp(200);catch(Exccption c)play M an. su tVisib lu (true);/闪烁当前提示信息 以免用户看不见 else tcxt.sctVisiblc(falsc);时间控制 trytmain.slccp(250);catch(Exccpti()n c) tc

17、xt.sctVisiblc(truc);trytmain.slccp(350);catch (Exception c) /* *单击棋子方法* /public void m()uscClickcd(M()uscEvcnt me) Systum.oui:.println("Mousc:");当前坐标 int Ex=0,Ey=0;启动线程 if (tmain = null) tmain = new Thread (this);tmain.startO;单击棋盘:(移动棋子)if (mc.gctS()urcc().cquals(image) 该红棋走棋的时候if (chcssPl

18、ayClick = 2 && playIan.gctNamcO.charAt(l) = '2) Ex = play Man .getXQ;Ey = playMan.getY0;移动卒、兵if (Mail > 15 && Man < 26) ruk.armsRulu(NIan,playMan,mu);移动炮else if (Man > 25 && Man < 30) rulc.cann(>nRulc(playMan,play4nc);移动车else if (Man >=0 && Man &

19、lt; 4)rulc.cannonRule(playMan,play,mc);移动马else if (M;m > 3 次& Man < 8)rulc.horscRulc(playMan.play,mc);移动相、象else if (M;ui > 7 && Man < 12)rulc.clcphjmtRulc(Man,playMaii,play,mc);移动仕、士else if (Man > 11 && Man < 16)rulc.chapRulc(Man,playMan,play,mc);移动将、帅else if (M

20、an = 30 | | Man = 31)rulu.willRulu(Man,playMan,play,mu);是否走棋错误(是否在原地没有动)if (Ex = playMiin.getXQ && Ey = playM;in.gttYO) tuxtssTcxif红棋走棋');chessPhyClick=2;else tcxtsciTcxtf黑棋走棋。chessPlayClick= 1;/if该黑棋走棋的时候else if (chcssPlayClick = 1 && playMaii.gctNamcQ.charAt(l) = '1) Ex = p

21、lay Man .gctXQ;Ey = phyMan.getYO;移动卒、兵if (Mail > 15 && Man < 26) ruk.armsRulu(NIan,playNIan,mu);移动炮else if (Man > 25 && Man < 30) rule.ciinnoiiRulc(play Mali,play,me);移动车else if (Man >=0 && Man < 4)rulc.cann(>nRule(play|Man,play4nc);移动马else if (Man > 3

22、 && Man < 8) rulc.horscRulc(playMan,play,mc);移动相、象else if (Man > 7 && Man < 12)rulc.clcphmtRulc(Man.playMaii,play,mc);移动仕、士else if (Man > 11 && Man < 16)rulc.chapRulc(Man,playMan,play,mc);移动将、帅else if (Man = 30 | | Man = 31)rulu.wiHRulu(Man,playMan,play,mu);是否走

23、棋错误(是否在原地没有动)if (Ex = playMiin.gtlXQ && Ey = playM:in.grtYO) tcxtsetTcxir'黑棋走棋。;chessPhyClick= 1;else tcxt.SctTcxiC,红棋走棋');chcssPlayClick=2;/clsc if当前没有操作(停止闪烁) chcssMaiiClick=false;if单击棋子clsc第一次单击棋子(闪烁棋子)if (!chessManClick)for (inti=0;i<32;i+) 被单击的棋子if (mc.gctSourcc().cquals(play

24、i) 告诉线程让该棋子闪烁 Man=i;开始闪烁 chcssManClick=iTuc; break;/for/if第二次单击棋子(吃棋子)else if (chessManClick)当前没有操作(停止闪烁) chcssM;inCHck= false;for (i=0p<323+)(找到被吃的棋子if (mc.gctSourcc().cquals(playi) 该红棋吃棋的时候if (chcssPlayClick = 2 && playMan.grtNamc().charAt(l) = '2)Ex = playMan.gctXQ;Ey = play M an .

25、gc tYQ;/卒、兵吃规则if (Man > 15 && Man < 26) rule.armsRule(playMan,playf);炮吃规则else if (Man > 25 && Man < 30) ruie.cannonRulc(0,play Man ,play i,play,me);车吃规则else if (Man >=0 && Mail < 4) rule.cannonRule(l,play Man ,playi,play,me);马吃规则else if (Man > 3 &&

26、; Man < 8)rulc.h()rscRulc(playMan,playi,play>mc);相、象吃规则else if (Man > 7 && Man < 12) rulc.clcphaiitRulc(playMan,playi .play);士、仕吃棋规则else if (Mail > 11 && Man < 16) rulu.chapRulu(Man,playMan ,playi ,play);将、帅吃棋规则else if (Man = 30 | | Van = 31) rule.willRulc (Man,play

27、 Man,play f,play);pl ay NI Jin .sctVisiblc(truc);/是否走棋错误(是否在原地没有动)if (Ex = play Man .gctX。&& Ey = play P<'Iaii .getYQ) tcxt.sctTcxt(t,红棋走棋”);chcssPlayOick=2; break; elsctuxtsutTextf黑棋走棋”);chcssPlayClick=l; break; /if该黑棋吃棋的时候else if (chessPlayClick = 1 && playM;ui.gctNamcQ.char

28、At( 1)= '1)Ex = play M m .gc tX Q;Ey = playMan.gttY 0;卒吃规则if (Man > 15 && Man < 26) rule.arm sRule(play Man,play i); /炮吃规则else if (Man > 25 && Man < 30) rulc.cannonRulcplay Man,play 0,play,me);车吃规则else if (Man >=0 && Mail < 4)rulu.cannonRulu(l,playMan,pl

29、ayi .play,me); 马吃规则else if (Man > 3 && Man < 8)rulc.horscRulc(playMan,playi,play>mc); 相、象吃规则else if (Man > 7 && Man < 12)rule.elcphantRuIe(playMan,playi,play);士、仕吃棋规则else if (Man > 11 && Man < 16)rulu.ch 叩 Rulu(Man,playMan ,playi 5play);)将、帅吃棋规则else if (M

30、ail = 30 | | Man = 31) rulc.willRulc (Man,play M ail ,pl ay p ,play); playNhm.sctVisiblc(truc);)是否走棋错误(是否在原地没有动)if (Ex = play Niall .getXQ && By = playMan .getY Q) 黑棋走棋”);红棋走棋)tcxt.sctTcxt(M chcssPlayClick=l; break;else tcxt.sctTcxt(HchessPlayOick=2;break;/clse ifif是否胜利if(!play31.isVisiblcO)

31、JOptionPane.showConfirmDialog(this,”黑棋胜利二玩家一胜利,J()pti(>nPaiic.PEFAULT_()PTl()NJ()pu()nPaiic.WARNING_MESSAGE);双方都不可以在走棋了 chcssPlayClick=3;icxt.sctTcxi("黑棋胜利”);/ifelse if (!play30.isVisiblcO)J Op lionPane.showConfi rmDialog(this,"红棋胜利","玩家二胜利”,J()pri(>nPaiicnEFAULT_()PTI()NJ(

32、)pti()nPaiic.WARNlNG_MESSAGE);chessPhyClick=3;IcxtsetTcxir, 红棋胜利) /clse if/clsc/clscpublic void m()uscPrcsscd(MouscEvcnt mc) public void m()uscRclcascd(NfouscEvcnt mu)public void mouseEntcrcd(M<)uscEvciit mc) public void m()uscExitcd(MouscEvent mc)*定义按钮的事件响应*/public void acti()nPcrf<)rmcd(Acti

33、<)nEvcnt ac) 重新开始按钮if (ac.getSourcc0.cquals(ailcT)int i,k;重新排列每个棋子的位置黑色棋子车(i=O,k=24;iV2;i+,k+=456)playH.sctBouiids(k,56,55,55);马&)r(i=4,k=81;iV6;i+,k+=342) play i .setBounds(k,56,55,55);)相 for (i=8,k=138;i<10;i+,k+=228) play i .setBounds(k,56,55,55);)/士fi)r (i=l 2,k= 195;i<l 4;i+,k+=114

34、) playi.setBounds(k,56,55,55);卒(i=16,k=24;iV21;i+,k+=114) playi.setBounds(k27,55,55);炮fi)r (i=26,k=81;i<28;i+,k+=342) play p .sctBounds(k,l 70,55,55);将play30.setB<)unds(252,56,55,55);红色棋子车fi)r (i=2,k=24;i<4;i+,k+=456) playi.setBounds(k,569,55,55);马for (i=6,k=81;i<8;i+,k+=342)playi.sciB()

35、unds(k,569,55,55);相fi)r (i=l 0,k=l 38;i<l 2;i+,k+=228) playi.sctBounds(k,569,55,55);士fi)r (i=14,k=195;i<16;i+,k+=l 14)( playi.setBounds(k,569,55,55);/兵fi)r (i=21,k=24;i<26;i+,k+=l 14) playi.setBounds(k398,55,55);炮fbr (i=28,k=81;i30;i+,k+=342) playi.setBounds(k,455,55,55);帅play31.sctB()unds(

36、252,569,55,55);chcssPlayClick = 2;tcxtsctTcxiC红棋走棋)for 0=O;i<32p+)playi.sctVisiblc(truc);/清除Vucinr中的内容Var.clcarQ;悔棋按钮else if (ac.gctSourcc().cquals(rcpcnt)try获得sdVisiblu属性值String S = (String) V ar.r t(Var.sizeQ-4);获得X坐标int x = Inicgcr.parscIntStringjVar.gctar.sizcQ-S);获得Y坐标int y = lntcger.parscln

37、t(Striiig)Var.grt(rar.sizcO-2); 获得索引int M = lntcgcr.parscInt(String)Var.get(yrar.sizcO-l);赋给棋子p 1 ay M .sc tVisiblc (true);playM.sctBounds(x,y,55,55);if (playM.gctNamcO.charAt(l) = T) tcxtsctTcxtf'黑棋走棋)chcssPlayClick = 1;clscicxtsctTcxif红棋走棋');chcssPlayClick = 2; 删除用过的坐标Var.rcmovc(Var.si2cQ-

38、4);Var.rumovu(VarsizuO-3);Var.rcmovcar.sizcQ-Z);Var.rcmovcar.sizcQ-1);停止旗子闪烁 chessManClick= false;catch(Exccpri()n c) 退出else if (ac.gctSourcc().cquals(cxit)int j=J()ptionPaiic.sh<)wC()nfirmr)ial()g( this,”真的要退出吗?退出”, J()ptk)nP;inc.YES_()PTl()NJ()ptt()nPic.Ql;ESTI()N_MESSAGE);if(j = J()prionP;inc.

39、YES_()PTlON) Systcm.cxit(O);/*定义中国象棋规则的类*/class ChcssRulc /*卒于的移动规则*/public void armsRulc(int ManJ Label play,Mouse Event mc)/黑卒向下if(Man <21)向下移动、得到终点的坐标模糊成合法的坐标if (mc.gctYO-play.gctYQ) > 27 && (mc.getYQ-play.gctYQ) < 86 &&(mc.gelX()-play.getXO) < 55 && (mc.getXQ-

40、play.gctXO) > 0)当前记录添加到巢台(用于悔棋)Var.add(String.valueOf(phy.isVisiblc0);Var.add(String.valueOf(phy.gEtX0);Var.add(String.valueOf(play.getY Q);Var.add (S tring.valueOf(Man);play.sctBounds(play.getX0,play.tY()+57,55,55);向右移动、得到终点的坐标模糊成合法的坐标、必须过河else if (play.gctYQ > 284 && (mc.grtXQ - play

41、.getXQ) >= 57 && (mc.gttXQ - play.gttXO) <=H2)play.sctBounds(play.getXQ+57,play.getY(),55,55);向左移动、得到终点的坐标模糊成合法的坐标、必须过河else if (play.getYQ > 284 && (play.getXQ - mc.getXQ) >= 2 && (play.getXQ - mc.gctXO) <=58)/模糊坐标play.se tBounds(play.gttX()-57,play-gc:tYO,55,5

42、5);/红卒向上 else当前记录添加到集合(用于悔棋)Var.add(String.vaIueOf(play.isVisiblcO);Var.add(Slring.valuc()f(play.gctX0);Var.add(Slring.valuc()f(play.gctY(); Var. add (S tring.valucOf(M an);向上移动、得到终点的坐标模糊成合法的坐标if (me.gctXO-play.gctXO) >= 0 && (mc.gctXQ-play.gctXO) <= 55 && (play.gctYO-me.gctYO)

43、 >27 && play.grtYO-mc.grtYO < 86) play.se tBounds(play.getXQ,play.getYO-57,55,55);向右移动、得到终点的坐标模糊成合法的坐标、必须过河else if (play.grtYO <= 341 && (mc.grtXQ - play.getXQ) >= 57 && (mc.gctXQ - play.gttXO) v= 112) play.sctBounds(play.getXQ+57,play.getY(),55,55);向左移动、得到终点的坐标模糊

44、成合法的坐标、必须过河else if (play.grtYQ <= 341 && (play.getXQ - mc.gctXO) >= 3 && (play.getXQ - mc.gctXO) <=58)play.se tBounds(play.gctXQ-57,play-getYO,55,55);/卒移动结束/*卒吃棋规则*/public void armsRulcQLiibcl playl JLabcl play2) 向右走if (play2.getXQ - playl.getXO) <= 112 && (play2.

45、getXQ - playl.getXQ) >= 57 && (playl.getYQ - play2.getY() < 22 && (playl.gctYO - play2.getY0) > -22 && play2.isVisiblcQ && playl.gclNamcQ.charAl(l)!=play2.grlNamcQ.charAt(l)黑棋要过河才能右吃棋if (play 1 -gt tNamcQ .char A t(l) = T && playl.gctYO > 284 &

46、& playl.getNamcQ.charAt(l) != play2.getNamcQ.charAt(l)play2.sctVisible(falsc);把对方的位置给自己playl.sctB()unds(play2.gctX0,play2.getY(),55,55);红棋要过河才左能吃棋else if (playl.gctNamcQ.charAt(l) = 2 && playl.gctYO < 341 && playl.gctNamcQ.charAl(l) != play2.grtNamcQ.charAt(l)play2.sctVisiblc(

47、faIsc);/把对方的位置给自己playl.sctB()unds(play2.gctX(),play2.getY0,55,55);向左走else if (playl.gctXQ - play2.gctXQ) <= 112 && (playl.grtXQ - play2.gct:X() >= 57 && (playl.gctYQ - play2.grtYO) < 22 && (playl.gctYO - play2.grtYO) > -22 && play2.isVisiblcQ && pl

48、ayl.gctName().charAl(1)!=play2.getNamc().charAt(l)黑棋要过河才能左吃棋if (play 1 -gt tN amc() .char A t(l) = T && playl.gctYO > 284 && playl.gctNamcQ.charAl(l) != play2.grtNamcQ.charAt(l)play2.sctVisiblc(faIsc);/把对方的位置给自己playl .sctB()unds(play2.gci:XQ,play2.getY0,55,55);红棋要过河才能右吃棋else if (p

49、layl.gctNamcQ.charAl(l) = 2 && playl.gctYO < 341 && playl.getNameQ.charAt(l) 1= play2.grtNamcQ.charAt(l) play2.sctVisiblc(falsc);/把对方的位置给自己 playl.sctB()unds(play2.gctX(),play2.getY0,55,55); 向上走else if (playl-getXQ - play2.gctXQ >= -22 && playl.getXQ - play2.gctXQ <=

50、22 && playl.gctYO - play2.gctY() >= -112 && playl.gctYO - play2.getY() <= 112)''/黑棋不能向上吃棋if (playl.getNamcQ.charAt(l) = T && playl.get7Q < play2.grtYQ &&playl.gclNamcQ.charAl(l) != play2.grlNamcQ.charAt(l)play2.sctVisible(faIsc);把对方的位置给自己playl.sctB()u

51、nds(play2.gctX0,play2.getYO,55,55);红棋不能向下吃棋else if (playl.gctNamcO.charAt(l) = 2 && playl.gctYO > play2.getY() &&playl.gctNamcQ.charAi(l) != play2.getNamc0.charAt(l)play2.sctVisibIe(falsc);把对方的位置给自己playl.setBounds(play2.gctX0,play2.getY(),55,55);/当前记录添加到集台(用于悔棋)Var.add(String.valu

52、eOf(playl.isVisiblcO);V ar.add (Siring. vducC )f(play 1 .gelXQ);Var.add(String.valueOf(playl.getY0);V ar.add (Siring. valuc()f(NIaii);/当前记录添加到集台(用于悔棋)Var.add(Slring.valuc()f(play2.isVisiblc();Var.add(String.valueOf(play2.getXQ);Var.add(String.valucOf(pIay2.getY 0);V ar.add(String.valuc()f(i);卒吃结束/*炮

53、、车移动规则*/public void cuuioiiRulcQ Label play J Label playQ 0 ,Mousc Event mc)起点和终点之间是否有棋子int Count = 0;上、下移动if (play.grtXQ - mc.getXQ <= 0 && play.grtXQ - mc.gctXQ >= -55)指定所有模糊Y坐标for (int i=56;i<=571;i+=57)/移动的Y坐标是否有指定坐标相近的if (i - mc.gctYQ >= -27 && i - mc.getYQ <= 27)

54、所有的棋子for (intj=O;j<32;j+)/找出在同一条竖线的所有棋子、并不包括自己if (playQGJ.gptXQ - play毋tX。>= -27 && playQD.getX()-play.gctXQ <= 27 && playQQ.getNameQ!=play.getNamc0 && plajQ.isVisibleQ)从起点到终点(从左到右)for (int k=play.gctY0+57;k<i;k+=57)大于起点、小于终点的坐标就可以知道中间是否 有棋子if (playQDJ.gctYO <

55、i && playQj.gctYO > play.gctYO)中间有一个棋子就不可以从这条竖线过去Count+;break;/for从起点到终点(从右到左)for (int k=i+57;k<play.getY();k+=57)/找起点和终点的棋子if (playQi.getYQ < play.gctYQ && playQO gctY() >C()unt+; break; /for /if /for起点和终点没有棋子就可以移动了 if (Count = 0)当前记录添加到集合(用于悔棋)Var.add (S tring.valueOf(p

56、lay .isVisibleQ);Var.add(Slring.valuc()f(play.gctX();Var.add(String.valucOf(play.getY 0);V ar.add (String.valueC)f(Man);play.se tBounds (play. getXQ 35,55);break;/if/for/if/左、右移动else if (play.gctYO - mc.gctYQ >=-27 && play.gctYO - mc.gctYQ <= 27) 指定所有模糊X坐标for (int i=24;i<=480;i+=57)

57、/移动的X坐标是否有指定坐标相近的if (i - mc.gctXO >= -55 && i-mc.gctX() <= 0)所有的棋子fbr(intj=0;j<32;j+)找出在同一条横线的所有棋子、并不包括自己if (playQQ.getYO - play.gctYQ >= -27 && playQD.gctYQ -play.gctYO <= 27 && playQO gctNamcQ!=play.gctNamc() && playQj.isVisiblcQ) 从起点到终点(从上到下)for (int k=play.gctX()+57;k<iJ<4-=57)/大于起点、小于终点的坐标就可以知道中间是否 有棋子if (playQO.gctXO < i && playQDl-gctXO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论