中國(guó)象棋對(duì)弈系統(tǒng)Java課程設(shè)計(jì)_第1頁(yè)
中國(guó)象棋對(duì)弈系統(tǒng)Java課程設(shè)計(jì)_第2頁(yè)
中國(guó)象棋對(duì)弈系統(tǒng)Java課程設(shè)計(jì)_第3頁(yè)
中國(guó)象棋對(duì)弈系統(tǒng)Java課程設(shè)計(jì)_第4頁(yè)
中國(guó)象棋對(duì)弈系統(tǒng)Java課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩129頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

《面向?qū)ο蟪绦蛟O(shè)計(jì)》題目:中國(guó)象棋對(duì)弈軟件設(shè)計(jì)與實(shí)現(xiàn)華中科技大學(xué)武昌分校制面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)任務(wù)書中國(guó)象棋對(duì)弈軟件設(shè)計(jì)與實(shí)現(xiàn)內(nèi)容:運(yùn)用Java實(shí)現(xiàn)一種中國(guó)象棋對(duì)弈的軟件,實(shí)現(xiàn)中國(guó)象棋是方形的,棋盤的中間有一條“界河”,把對(duì)壘的雙方隔在兩邊。兩邊畫有交叉線的交叉點(diǎn)共有90個(gè),棋子就擺在這些交叉點(diǎn)上。中國(guó)象棋共有32枚棋子,分為黑紅兩下棋的雙方各用一組,每組各有一帥(將)兩士?jī)上鄡神R兩車兩炮五兵。兩人對(duì)局時(shí),按照規(guī)定的位置將各自的棋子擺好,紅方先走,然后輪番下子。多種棋子走法不一最終把對(duì)方將死為勝,不分勝敗則為和棋。系統(tǒng)使用Eclipse與JDK1.6工具,操作系統(tǒng)為WINDOWS,采用面向?qū)ο蟠胧┩戤叄傮w設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼實(shí)現(xiàn)、測(cè)基本功能與規(guī)定:1.象棋對(duì)弈。首先紅方走棋,然后黑方走棋,直到一方獲勝。2.象棋規(guī)則。根據(jù)中國(guó)象棋的規(guī)則。3.新游戲。任何時(shí)候都可以重新開始一盤新的對(duì)弈。5.信息提醒。提醒目前信息狀態(tài)。2.耿祥義.JAVA大學(xué)實(shí)用教程.北京:清華大學(xué)出版社,2023.1.課程設(shè)計(jì)匯報(bào)2.課程設(shè)計(jì)軟件布置任務(wù),查找資料、需求分析1天總體設(shè)計(jì)1天詳細(xì)設(shè)計(jì)1.5天編制源程序?qū)崿F(xiàn)3.5天測(cè)試與修改1天撰寫課設(shè)匯報(bào)2天[1]張廣彬.Java課程設(shè)計(jì)案例精編(第二版).北京:清華大學(xué)出版社,2023.[2]耿祥義.Java課程設(shè)計(jì)(第二版).北京:清華大學(xué)出版社,2023.[3]耿祥義.JAVA大學(xué)實(shí)用教程.北京:清華大學(xué)出版社,2023.[4]鄒林達(dá).陳國(guó)君Java2程序設(shè)計(jì)基礎(chǔ).北京:清華大學(xué)出版社,2023.[5]鄒林達(dá).Java2程序設(shè)計(jì)基礎(chǔ)試驗(yàn)指導(dǎo).北京:清華大學(xué),2023.指導(dǎo)教師(簽名):2詳細(xì)設(shè)計(jì)………………錯(cuò)誤!未定義書簽。3編碼實(shí)現(xiàn)…………總結(jié)……………………錯(cuò)誤!(2)黑棋子:將一種,車、馬、炮、象、士各兩個(gè),卒五個(gè)。(3)在對(duì)局時(shí),由執(zhí)紅棋的一方先走,雙方輪番各走一著,直至分出勝敗或走成(5)士每一著只許沿“九宮”斜線走一步,可進(jìn)可退。相(象)不能越過“河界”,每一著斜走兩步,可進(jìn)可退,即俗稱(6)馬每著走一直(或一橫)一斜,可進(jìn)可退,即俗稱“馬走日字”。假如在要去方向緊靠一直(或一橫)的地方,有別的棋子擋住,俗稱“蹩馬腿”,就不能走過去。(7)車每一著可以直進(jìn)、直退、橫走,不限步數(shù)。(8)炮在不吃子的時(shí)候,走法同車同樣。(9)兵(卒)在沒有過“河界”前,每著只許向前直走一步;過“河界”后,每著子(無論是哪一方的)跳吃,即俗稱“炮打隔子”。除帥(將)外,其他棋子都可以聽“將軍”,或簡(jiǎn)稱“將”。被“將軍”的一方必須立即“應(yīng)將”,即用自衛(wèi)的著法去化解被“將”的狀態(tài)。假如被“將軍”而無法“應(yīng)將”,就算被“將死”。輪到走棋的一方,帥(將)雖沒被對(duì)方“將軍”,卻被禁在一種位置上無路1.2總體設(shè)計(jì)功能圖如圖1-1所示。新游戲悔棋象棋對(duì)弈信息提示var2.1詳細(xì)設(shè)計(jì)思緒由上述類圖進(jìn)行分析。中國(guó)象棋對(duì)弈系統(tǒng)的程序由文總體設(shè)計(jì)流程圖如圖2-1所示。開始開始布置棋盤與棋子走對(duì)弈能新游戲信息提示是否是結(jié)束開始新的一局退一步悔棋12(1)圖形顧客界面模塊(2)按鈕的操作模塊開始開始悔棋按鈕信息提示是否真退出結(jié)束到上一步的位置圖2-2按鈕模塊流程圖(3)棋子的操作模塊開始開始盤結(jié)束圖2-3棋子操作模塊流程圖(4)棋子的移動(dòng)規(guī)則類模塊棋子的移動(dòng)規(guī)則如下所述。⑦兵(卒)在沒有過“河界”前,每次只許向前直走一步;過“河界”后,每次可3編碼實(shí)現(xiàn)源代碼importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.util.*;publicstaticvoidmain(StringargnewChessMainFrame("中國(guó)象棋:觀棋不語真君子,棋死無悔大丈夫");}//主框架類//棋盤//窗格JToolBarjmain;//退出//目前信息//保留目前操作VectorVar;//規(guī)則類對(duì)象(使于調(diào)用措施)**單擊棋子=true閃爍棋子并給線程響應(yīng)=false吃棋子停止閃爍并給線程響應(yīng)**控制玩家走棋黑棋走棋紅棋走棋默認(rèn)紅棋雙方都不能走棋**構(gòu)造函數(shù)**初始化圖形顧客界面//獲行客格引用con=this.getContentPane();//實(shí)例化規(guī)則類//創(chuàng)立工具欄text=newJLabel("歡迎使用象棋對(duì)弈系統(tǒng)");//當(dāng)鼠標(biāo)放上顯示信息text.setToolTipText("信息提醒");anew.setToolTipText("重新開始新的一局");exit.setToolTipText("退出象棋程序程序");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);//添加棋子標(biāo)簽repent.addActionListene//注冊(cè)棋子移動(dòng)監(jiān)聽play[i].addMouseListener(th}Toolkit.getDefaultToolkit(this.setLocation((screenSize.width-frameSize.width)/2-280,(screenSize.height-frameSize.height)/2//設(shè)置**添加棋子措施publicvoiddrawChessMan(){//流程控制//圖標(biāo)//黑色棋子play[i].setName("車1");//馬play[i].setBounds(k,56,55,55for(i=8,k=138;i<10;play[i]=newJLabel(in);play[i].setBounds(k,56,55,55play[i].setName("象1");for(i=12,k=195;i<14;play[i]=newJLabelplay[i].setBounds(k,56,55,55play[i].setName("士1");}//卒for(i=16,k=24;i<21;play[i]=newJLabel(in);//炮in=newImageIcoplay[i]=newJLab//將in=newImageIcon("image\play[30].setName("將1");//車play[i]=newJLabplay[i].setName("車2");//馬play[i]=newplay[i].setBounds(k,569,55,5play[i].setName("馬2");//相play[i]=newplay[i].setBounds(k,569,55,55play[i].setName("象2");}//士in=newplay[i]=newJplay[i].setBounds(k,569,55,5play[i].setName("士2");play[i]=newJLabelplay[i].setBounds(k,398,55,55//炮play[i]=newJplay[i].setBounds(k,455,55,55//帥play[31]=newJLabel(play[31].setBounds(252,569,55,5}**線程措施控制棋子閃爍//單擊棋子第一下開始閃爍//時(shí)間控制play[Man].setVisible(tru}//閃爍目前提醒信息以免顧客看不見}}**單擊棋子措施publicvoidmouseClicked(MouseEventme){//目前坐標(biāo)//啟動(dòng)線程if(tmain==null){}//單擊棋盤(移動(dòng)棋子)if(me.getSource().equa//該紅棋走棋的時(shí)候if(chessPlayclick==2&&play[Man].getNameEx=playEy=play[Man].getY//移動(dòng)卒、兵if(Man>15&&Man<26){rule.armsRule(Man,play[Man]}//移動(dòng)炮rule.cannonRule(play[Man],pla}//移動(dòng)車}//移動(dòng)馬rule.horseRule(play[Man],play}//移動(dòng)相、象elseifrule.elephantRule(Man,play[Man],pla}//移動(dòng)仕、士rule.chapRule(Man,play[Man],pla}//移動(dòng)將、帥rule.willRule(Man,play[Man],pla}//與否走棋錯(cuò)誤(與否在原地沒有動(dòng))if(Ex==play[Man].getX()&&Ey==play[Ma}}{紅棋走棋");黑棋走棋");}//if//該黑棋走棋的時(shí)候play[Man].getName().charAt(1)=='Ex=play[Man].getXEy=play[Man].getY//移動(dòng)卒、兵if(Man>15&rule.armsRule(Man,play[Man]}//移動(dòng)炮}//移動(dòng)車rule.cannonRule(play[Man],play}//移動(dòng)馬rule.horseRule(play[Man],play}//移動(dòng)相、象rule.elephantRule(Man,play[Man],pla}//移動(dòng)仕、土elseif(Man>11&&Manrule.chapRule(Man,play[Man],play}//移動(dòng)將、帥rule.willRule(Man,play[Man],pla//與否走棋錯(cuò)誤(與否在原地沒有動(dòng))if(Ex==play[Man].getX()&&Ey==play[Mtext.setText("黑棋走棋");}text.setText("紅棋走棋");if//目前沒有操作(停止閃爍)}//if//單擊棋子//第一次單擊棋子(閃爍棋子)for(inti=0;i<32;i//被單擊的棋子//告訴線程讓該棋子閃爍//開始閃爍}//if//第二次單擊棋子(吃棋子)//目前沒有操作(停止閃爍)//找到被吃的棋子if(me.getSource().equals(//該紅棋吃棋的時(shí)候if(chessPlayClickplay[Man].getName().charAt(1)=='Ex=play[Man].getXEy=play[Man].getY//卒、兵吃規(guī)則if(Man>15&&Man<rule.armsRule(play[Man],play}//炮吃規(guī)則elseif(Man>25&&Man<30){rule.cannonRule(0,play[Man],play[i],pla//車吃規(guī)則rule.cannonRule(1,play[Man],play[i],pla//馬吃規(guī)則rule.horseRule(play[Man],play[i],pla}//相、象吃規(guī)則rule.elephantRule(play[Man],play[i],//士、仕吃棋規(guī)則rule.chapRule(Man,play[Man],play[i],//將、帥吃棋規(guī)則rule.willRule(Man,play[Man],play[i],play[Man].setVisible(tru}//與否走棋錯(cuò)誤(與否在原地沒有動(dòng))text.setText("紅棋走棋");黑棋走棋");}//if//該黑棋吃棋的時(shí)候elseif(chessPlplay[Man].getName().charAt(1)=='Ey=play[Man].getY();//卒吃規(guī)則if(Man>156&Man<2rule.cannonRule(0,play[Man]rule.cannonRule(1,play[Man],play[i],pla//馬吃規(guī)則rule.horseRule(play[Man],play[i],plaelseif(Man>7&&Manrule.elephantRule(play[Man],play[i],//士、仕吃棋規(guī)則rule.chapRule(Man,play[Man],play[i],//將、帥吃棋規(guī)則rule.willRule(Man,play[Man],play[i],play[Man].setVisible(tru}//與否走棋錯(cuò)誤(與否在原地沒有動(dòng))text.setText("黑棋走棋");紅棋走棋");if}//if//與否勝利JOptionPane.showConfirthis,"黑棋勝利","玩家一勝利",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNIN//雙方都不可以在走棋了text.setText("黑棋勝利");}//ifJOptionPane.showConfithis,"紅棋勝利","玩家二勝利",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNINtext.setText("紅棋勝利");publicvoidmousePressed(MouseEventme){publicvoidmouseReleased(MouseEventme){}publicvoidmouseEntered(MouseEventme){}publicvoidmouseExited(MouseEventme){**定義按鈕的事件響應(yīng)publicvoidactionPerformed(Ac//重新開始按鈕//重新排列每個(gè)棋子的位置//黑色棋子//車play[i].setBounds(k,56,55,55}//馬play[i].setBounds(k,56,55,55}for(i=8,k=138;i<10;}//士for(i=12,k=195;i<14;play[i].setBounds(k,56,55,55}//卒play[i].setBounds(k,227,55,55//炮for(i=26,k=81;i<28;//將play[30].setBounds(252,56,55,55//紅色棋子//車play[i].setBounds(k,569,55,55//馬play[i].setBounds(k,569,55,55//相for(i=10,k=138;i<12;play[i].setBounds(k,569,55,55for(i=14,k=195;i<16;play[i].setBounds(k,569,55,55}//兵for(i=21,k=24;i<26;for(i=28,k=81;i<30;play[i].setBounds(k,455,55,55}play[31].setBounds(252,569,55,55紅棋走棋");}//清除Vector中的內(nèi)容//悔棋按鈕if(ae.getSource().equal//獲得setVisible屬性值StringS=(String)Var.get(Var.si//獲得x坐標(biāo)Integer.parseInt((String)Var.get(Var.Integer.parseInt((String)Var.get(Var.siInteger.parseInt((String)Var.get(Var.s//賦給棋子play[M].setVisible(truplay[M].setBounds(x,y,55,55if(play[M].getName().charAt(chessPlayclick}黑棋走棋");紅棋走棋");Var.remove(Var.size(Var.remove(Var.size()elseif(ae.getSource().equals(exit)){intj=JOptionPane.showConfirmDialog(this,"真的要退出嗎?","退出",/*定義中國(guó)象棋規(guī)則的類*//**卒子的移動(dòng)規(guī)則*/publicvoidarmsRule(intMan,JLabelplay,MouseEve//黑卒向下if(Man<21){//向下移動(dòng)、得到終點(diǎn)的坐標(biāo)模糊成合法的坐標(biāo)if((me.getY()-play.getY())>27(me.getY()-play.getY())<86&&(me.getX()-p//目前記錄添加到集合(用于悔棋)Var.add(String.valueOf(play.isVisibleVar.add(String.valueOf(play.getVar.add(String.valueOf(play.getYVar.add(String.valueOf(Maplay.setBounds(play.getX(),play.getY()+57,55,}//向右移動(dòng)、得到終點(diǎn)的坐標(biāo)模糊成合法的坐標(biāo)、必須過河elseif(play.getY()>284&&(meplay.getX())>=57&&(me.getX()-play.getX())<=play.setBounds(play.getX()+57,play.getY(),55,}//向左移動(dòng)、得到終點(diǎn)的坐標(biāo)模糊成合法的坐標(biāo)、必須過河//模糊坐標(biāo)if(play.getY()>284&&(play.getX()-&&(play.getX()-me.gplay.setBounds(play.getX()-57,play.getY(),55,}//紅卒向上//目前記錄添加到集合(用于悔棋)Var.add(String.valueOf(play.isVisibleVar.add(String.valueOf(playVar.add(String.valueOf(play.getVar.add(String.valueOf(Ma//向上移動(dòng)、得到終點(diǎn)的坐標(biāo)模糊成合法的坐標(biāo)if((me.getX()-play.getX())>=0(me.getX()-play.getX())<=55&&(play.getY()-me.getY())>27play.getY()-me.getY()<8play.setBounds(play.getx(),play}//向右移動(dòng)、得到終點(diǎn)的坐標(biāo)模糊成合法的坐標(biāo)、必須過河elseif(play.getY()<=341&&(me.getx()-play.getX())>=57&&(me.getX()-play.getX())<=play.setBounds(play.getX()+57,play.getY(),55,//向左移動(dòng)、得到終點(diǎn)的坐標(biāo)模糊成合法的坐標(biāo)、必須過河elseif(play.getY()<=341&&(play.getX()-me.getX())>=3&&(play.getx()-me.getx()play.setBounds(play.getx()-57,p}}}//卒移動(dòng)結(jié)束/**卒吃棋規(guī)則*/publicvoidarmsRule(JLabelplayl,JLabelplay2){//向右走if((play2.getx()-play1.getx())<=112-play1.getX())>=57&&(play1.getY()-play2.getY())<22(play1.getY()-play2.getY())>-22play1.getName().charAt(1)!=play2.getName().charAt//黑棋要過河才能右吃棋if(playl.getName().charAt(1)=='1'&&pl284&&play1.getName().charAt(1)play2.setVisible(fals//把對(duì)方的位置給自己play1.setBounds(play2.getX(),p}//紅棋要過河才左能吃棋e(cuò)lseif(play1.getNplay1.getY()<341&6play1.getName().charAt(1)play2.getName().charAt(1play2.setVisible(fals//把對(duì)方的位置給自己play1.setBounds(play2.getx(),play2.getY(),55,}//向左走elseif((playl.getX()-play2.getX())<=112(play1.getX()-play2.getx())>=57&&(play1.getY()<22&&(play1.getY()-play2.getY())>-22&6&play1.getName().charAt(1)!=play2.getNam//黑棋要過河才能左吃棋if(play1.getName().charAt(1)=='1'&&pl284&&play1.getName().charAt(1)//把對(duì)方的位置給自己play1.setBounds(play2.getx(),play2.getY(),55,}//紅棋要過河才能右吃棋e(cuò)lseif(play1.getNa//把對(duì)方的位置給自己playl.setBounds(play2.getX(),play2.getY(),55,}//向上走elseif(play1.getX()-play2.getX()>=-22&&play1.getX()-play2.getX()<=22&&play1.getY()-play2.getY()>=-112&&play1.getY()-play2.getY()<=11//黑棋不能向上吃棋if(play1.getName().charAt(1)=='1'&&play2.getName().charAt(1play2.setVisible(fals//把對(duì)方的位置給自己playl.setBounds(play2.getx(),play2.getY(),55,}//紅棋不能向下吃棋e(cuò)lseif(playl.getName().charAt(1)=='2'&&play1.getY()>play2.getY()&&play1.getName().charAt(1)!=//把對(duì)方的位置給自己play1.setBounds(play2.getX(),play2.getY(),55,}//目前記錄添加到集合(用于悔棋)Var.add(String.valueOf(playl.isVisible()));Var.add(String.valueOf(play1Var.add(String.valueOf(play1.getYVar.add(String.valueO//目前記錄添加到集合(用于悔棋)Var.add(String.valueOfVar.add(String.valueOfVar.add(String.valueOfVar.add(String.valueOf(}//卒吃結(jié)束/**炮、車移動(dòng)規(guī)則*/publicvoidcannonRule(JLabelplay,JLabel//起點(diǎn)和終點(diǎn)之間與否有棋子//上、下移動(dòng)if(play.getX()-me.getX()<=0&&play.getx(//指定所有模糊Y坐標(biāo)//移動(dòng)的Y坐標(biāo)與否有指定坐標(biāo)相近的//所有的棋子for(intj=0;j<32;j++){//找出在同一條豎線的所有棋子、并不包括自己if(playQ[j].getx()-play.playQ[j].getx()-play.getx()<//從起點(diǎn)到終點(diǎn)(從左到右)for(int//不小于起點(diǎn)、不不小于終點(diǎn)的坐標(biāo)就可以懂得中間與否有棋子if(playQ[j].getY()<i&&playo[j].getY()>play.getY(//中間有一種棋子就不可以從這條豎線過去}//從起點(diǎn)到終點(diǎn)(從右到左)for(intk=i+57;k<play.getY();k+=57){//找起點(diǎn)和終點(diǎn)的棋子if(playQ[j].getY()<play}}//if//起點(diǎn)和終點(diǎn)沒有棋子就可以移動(dòng)了if(Count==//目前記錄添加到集合(用于悔棋)Var.add(String.valueof(play.isVisible()));Var.add(String.valueOf(play.getXVar.add(String.valueOf(play.getYVar.add(String.valueOf(Maplay.setBounds(play.getx(),i,55,5}}//if}//ifelseif(play.getY()-me.getY()>=-27//指定所有模糊X坐標(biāo)for(intif(i-me.getX()>=-55//所有的棋子for(intj=0;j<32;j++){//找出在同一條橫線的所有棋子、并不包括自己if(playQ[j].getY()-play.getY()>=-27&&playQ[j].getY()-play.getY()<=27&&playQ[j].getName()!=play.getName()&&playQ[j].isVisib//從起點(diǎn)到終點(diǎn)(從上到下)for(intk=play.getX()+//不小于起點(diǎn)、不不小于終點(diǎn)的坐標(biāo)就可以懂得中間與否有棋子if(playQ[j].getx()<iplayQ[j].getX()>play.getx(//中間有一種棋子就不可以從這條橫線過去}//從起點(diǎn)到終點(diǎn)(從下到上)for(intk=i+57;k<play.getX();k+=57){//找起點(diǎn)和終點(diǎn)的棋子if(playQ[j].getX()<pla}//if//起點(diǎn)和終點(diǎn)沒有棋子//目前記錄添加到集合(用于悔棋)Var.add(String.valueOf(play.isVisiblVar.add(String.valueOf(play.getXVar.add(String.valueOf(play.getY()));Var.add(String.valueOf(Ma}}//if}//炮、車移動(dòng)措施結(jié)束/**炮、車吃棋規(guī)則*/publicvoidcannonRule(intChess,JLabelplayTake,JLabelplayQ[],MouseEventme){//起點(diǎn)和終點(diǎn)之間與否有棋子//所有的棋子for(intj=0;j<32;j++)(//找出在同一條豎線的所有棋子、并不包括自己if(playQ[j].getX()-play.getX()>=-27&&playQ[j].getx()-play.getx()<=27&&playo[j].getName()!=play.getName()&&playo[j].isVisib//自己是起點(diǎn)被吃的是終點(diǎn)(從上到下)k=play.getY()+57;k<playTake.getY();//不小于起點(diǎn)、不不小于終點(diǎn)的坐標(biāo)就可以懂得中間與否有棋子if(playQ[j].getY()<playTakplayQ[j].getY()>play.getY(//計(jì)算起點(diǎn)和終點(diǎn)的棋子個(gè)數(shù)}//自己是起點(diǎn)被吃的是終點(diǎn)(從下到上)for(intk=playTake.getY();//找起點(diǎn)和終點(diǎn)的棋子if(playQ[j].getY()<plaplayQ[j].getY()>playTake.getY}}//if//找出在同一條豎線的所有棋子、并不包括自己elseif(playQ[j].getY()-play.getY()>=-10playQ[j].getY()-play.getY()<=10&&playQ[j].getName()!=play.getName()&&playo[j].isVisib//自己是起點(diǎn)被吃的是終點(diǎn)(從左到右)k=play.getx()+50;k<playTake.getx();//不小于起點(diǎn)、不不小于終點(diǎn)的坐標(biāo)就可以懂得中間與否有棋子}//自己是起點(diǎn)被吃的是終點(diǎn)(從右到左)for(intk=playTake.getX();k<play.getX();k+=57){//找起點(diǎn)和終點(diǎn)的棋子if(playQ[j].getX()<plaplayQ[j].getX()>playTake.getX}//if//起點(diǎn)和終點(diǎn)之間要一種棋子是炮的規(guī)則、并不能吃自己的棋子if(Count==1&&Chess//目前記錄添加到集合(用于悔棋)Var.add(String.valueOf(play.isVisibleVar.add(String.valueOf(play.getXVar.add(String.valueOf(play.getYVar.add(String.valueOf(Ma//目前記錄添加到集合(用于悔棋)Var.add(String.valueOf(playTake.isVisibleVar.add(String.valueOf(playTake.getx()));Var.add(String.value0f(playTake.getYVar.add(String.valueOfplayTake.setVisible(falplay.setBounds(playTake.getX(),playTake.getY(),55//起點(diǎn)和終點(diǎn)之間沒有棋子是車的規(guī)則、并不能吃自己的棋子//目前記錄添加到集合(用于悔棋)Var.add(String.valueOf(play.isVisibleVar.add(String.valueOf(play.getXVar.add(String.valueOfVar.add(String.valueOf//目前記錄添加到集合(用于悔棋)Var.add(String.valueOf(playTake.isVisibleVar.add(String.valueOf(playTake.getXVar.add(String.valueOf(playTake.getYVar.add(String.valueOf(play.setBounds(playTake.getX(),playTake.getY(),55}}//炮、車吃棋措施結(jié)束/**馬移動(dòng)規(guī)則*/publicvoidhorseRule(JLabelplay,JLabelplayQ[],MouseEvent//保留坐標(biāo)和障礙//上移、左邊if(play.getX()-me.getX()>=2&&pl<=57&&play.getY()-me.getY()>=87&&play.getY()-me.get//合法的Y坐標(biāo)for(int//移動(dòng)的Y坐標(biāo)與否有指定坐標(biāo)相近的if(i-me.getY()>=-27&&i-}//合法的x坐標(biāo)for(inti=24;i<=4//移動(dòng)的x坐標(biāo)與否有指定坐標(biāo)相近的if(i-me.getX()}}//正前方與否有別的棋子if(playQ[i].isVisible()&&play.getX(playQ[i].getX()==0&&play.getY()-playQ[i].getY()==57){}}//可以移動(dòng)該棋子//目前記錄添加到集合(用于悔棋)Var.add(String.valueOfVar.add(String.valueOf(play.getVar.add(String.valueOf(play.getVar.add(String.valueOf(Man));play.setBounds(Ex,Ey,55,5}}//if//左移、上邊elseif(play.getY()-me.getY()>=27me.getY()<=86&&play.getX()-me.getX()>=70&&plafor(intif(i-me.getY()>=-27}}}-me.getx()>=-55&&i-me.getx//正左方與否有別的棋子if(playQ[i].isVisible()&&play.getY(playo[i].getY()==06&play.getx()-playQ[i].getx()=}}//目前記錄添加到集合(用于悔棋)Var.add(String.valueOf(play.isVisibleVar.add(String.valueOf(play.getX()));Var.add(String.valueOf(play.getYVar.add(String.valueOf(Ma}//下移、右邊play.getY()<=141&&me.getfor(int}}//Xfor(inti=if(i-me.getX()>=-55&&i-me.getX()<=0){}//正下方與否有別的棋子for(inti}if(playQ[i].isVisible()&&play.getX(&&playQ[i].getY()-pla}//目前記錄添加到集合(用于悔棋)Var.add(String.valueOfVar.add(String.valueOf(play.getXVar.add(String.valueOf(play.getYVar.add(String.valueOf(Maplay.setBounds(Ex,Ey,55,5}//上移、右邊elseif(play.getY()-me.getY()>=87&&play.getYme.getY()<=141&&me.getX()-play.getX()<=87&&me.getX()-for(int-me.getY()>=-27&&i}//合法的x坐標(biāo)-me.getX()>=-55&&i-me.getX(}//正前方與否有別的棋子System.out.println(i+"playQ[i].getX()//System.out.println("play.getx()="+play.geif(playQ[i].isVisible()&&play.getX(playQ[i].getX()==0&&play.getY()-playQ[i].getY()=//System.out.println("play.getY()="+play.ge//System.out.println("playQ[i].getY()="+playQ[i].ge}}//可以移動(dòng)該棋子//目前記錄添加到集合(用于悔棋)Var.add(String.valueOfVar.add(String.valueOf(play.getxVar.add(String.valueOfVar.add(String.valueOf(Maplay.setBounds(Ex,Ey,55,5}//下移、左邊elseif(me.getY()-play.getY()>=87&&me.gplay.getY()<=141&&play.getX()-me.getX()<=87&&play.getX()//合法的Y坐標(biāo)for(intif(i-me.getY()>=-27&&i-}}//合法的x坐標(biāo)-me.getx()>=-55&&i-me.getx}}//正下方與否有別的棋子for(intiif(playo[i].isVisible()&&play.getX(&&play.getY()-playQ[i}//可以移動(dòng)該棋子//目前記錄添加到集合(用于悔棋)Var.add(String.valueOf(play.isVisibleVar.add(String.valueOf(playVar.add(String.valueOf(play.getVar.add(String.valueOf(Maplay.setBounds(Ex,Ey,55,5//右移、上邊elseif(play.getY()-me.getY()>=30&&play.getYme.getY()<=87&&me.getX()-play.getX()<=141&&me.getX()-for(intif(i-me.getY()>=-27&&i-//X}//正右方與否有別的棋子for(inti=0;i<32;iif(playQ[i].isVisible()&&play.getY(playQ[i].getY()==0}//目前記錄添加到集合(用于悔棋)Var.add(String.valueOf(play.isVisibleVar.add(String.valueOf(play.getVar.add(String.valueOf(play.getYVar.add(String.valueOf(Ma}//右移、下邊elseif(me.getY()-play.getY()>=30play.getY()<=87&&me.getX()-play.getX()<=141&&me.if(i-me.getY()>=-27&&i-me.getY()<=27){}//Xfor(inti=if(i-me.getX()>=-}}//正右方與否有別的棋子if(playo[i].isVisible()&&play.getY(playQ[i].getY()==0&&playQ[i].getX()-play.getX()=}}//目前記錄添加到集合(用于悔棋)Var.add(String.valueOf(play.isVisibleVar.add(String.valueOfVar.add(String.valueOfVar.add(String.valueOf(Man));play.setBounds(Ex,Ey,55,5}//左移、下邊elseif(me.getY()-play.getY()>=30&&me.getY()-play.getY()<=87&&play.getX()-me.getx()<=141&&play.if(i-me.getY()>=-27&&i-}}//X}-me.getX()>=-55&&i-me.getX()<=0){}//正左方與否有別的棋子if(playQ[i].isVisible()&&play.getY(playQ[i].getY()==0&6play.getx()-playQ[i].getx()==57){}//目前記錄添加到集合(用于悔棋)Var.add(String.valueOf(play.isVisibleVar.add(String.valueOf(playVar.add(String.valueOf(playVar.add(String.valueOplay.setBounds(Ex,Ey,55,5}}//馬移動(dòng)結(jié)束/**馬吃棋規(guī)則*/publicvoidhorseRule(JLabelplay,JLabelplayQ[],MouseEventme){//上移、左吃if(play.getName().charAt(1)!=playTake.getNamplay.getX()-playTake.getX()==57&&play.getY()-playTake.//正前方與否有別的棋子for(intif(playo[i].isVisible()&&play.getX(playQ[i].getX()==0&&play.getY()-playQ[i].getY()=}}//if//上移、右吃elseif(play.getY()-playTake.getY()=playTake.getX()-play.getX()==57){//正前方與否有別的棋子for(inti=0;i<32;iif(playQ[i].isVisible()&&play.getX(playQ[i].getX()==0&&play.getY()-playQ[i].getY()=}//左移、上吃elseif(play.getY()-playTake.getY()==57&&play.getX()-playTake.getX()==114//正左方與否有別的棋子if(playQ[i].isVisible()&&play.getY(playQ[i].getY()==0&&play.getX()-playQ[i].getX()=}//左移、下吃elseif(playTake.getY()-play.getY()==57&&play.getX()-playTake.getX()==114//正左方與否有別的棋子if(playo[i].isVisible()&&play.getY(playQ[i].getY()==0&&play.getX()-playQ[i].}//右移、上吃elseif(play.getY()-playTake.getY()==57playTake.getX()-play.getX()==114){//正右方與否有別的棋子for(intiif(playQ[i].isVisible()&&play.getY(playQ[i].getY()==0&&playQ[i].getx()-play.getx()=//右移、下吃elseif(playplayTake.getX()-play.getX()==114){//正右方與否有別的棋子for(inti=0;i<32;iif(playQ[i].isVisible()&&play.getY(playQ[i].getY()==0&&playQ[i].getx}//下移、左吃elseif(playTake.getY()-play.getY()==114play.getX()-playTake.getx()==57//正下方與否有別的棋子for(inti=0;i<32;iif(playQ[i].isVisible()&&play.getX(playQ[i].getx()==0&&play.getY()-playQ[i].getY()==}//下移、右吃elseif(playTake.getY()-play.getY()==114&&playTake.getX()-play.getx()==//正下方與否有別的棋子if(playQ[i].isVisible()&&play.getX(playQ[i].getX()==0&&play.getY()-playQ[i].getY()==-57}//沒有障礙、并可以吃棋、不能吃自己顏色if(Chess&&Move==0&&playTake.getName()play.getName().charAt(1//目前記錄添加到集合(用于悔棋)Var.add(String.valueOfVar.add(String.valueOf(play.getXVar.add(String.valueOfVar.add(String.valueOf(Ma//目前記錄添加到集合(用于悔棋)Var.add(String.valueOfVar.add(String.valueOf(playTake.getXVar.add(String.valueOf(playTake.getYVar.add(String.valueOf(playTake.setVisible(falplay.setBounds(playTake.getX(),playTake.getY(),55}/**相移動(dòng)規(guī)則*/publicvoidelephantRule(intMan,JLabelplay,JLabelplayQ[],MouseEventme){//坐標(biāo)和障礙//上左if(play.getX()-me.getX()<=141&&play.getX(me.getX()>=87

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論