中国象棋对弈系统Java课程设计_第1页
中国象棋对弈系统Java课程设计_第2页
中国象棋对弈系统Java课程设计_第3页
中国象棋对弈系统Java课程设计_第4页
中国象棋对弈系统Java课程设计_第5页
已阅读5页,还剩129页未读 继续免费阅读

下载本文档

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

文档简介

《面向对象程序设计》题目:中国象棋对弈软件设计与实现华中科技大学武昌分校制面向对象程序设计课程设计任务书中国象棋对弈软件设计与实现内容:运用Java实现一种中国象棋对弈的软件,实现中国象棋是方形的,棋盘的中间有一条“界河”,把对垒的双方隔在两边。两边画有交叉线的交叉点共有90个,棋子就摆在这些交叉点上。中国象棋共有32枚棋子,分为黑红两下棋的双方各用一组,每组各有一帅(将)两士两相两马两车两炮五兵。两人对局时,按照规定的位置将各自的棋子摆好,红方先走,然后轮番下子。多种棋子走法不一最终把对方将死为胜,不分胜败则为和棋。系统使用Eclipse与JDK1.6工具,操作系统为WINDOWS,采用面向对象措施完毕,包括总体设计、详细设计、编码实现、测基本功能与规定:1.象棋对弈。首先红方走棋,然后黑方走棋,直到一方获胜。2.象棋规则。根据中国象棋的规则。3.新游戏。任何时候都可以重新开始一盘新的对弈。5.信息提醒。提醒目前信息状态。2.耿祥义.JAVA大学实用教程.北京:清华大学出版社,2023.1.课程设计汇报2.课程设计软件布置任务,查找资料、需求分析1天总体设计1天详细设计1.5天编制源程序实现3.5天测试与修改1天撰写课设汇报2天[1]张广彬.Java课程设计案例精编(第二版).北京:清华大学出版社,2023.[2]耿祥义.Java课程设计(第二版).北京:清华大学出版社,2023.[3]耿祥义.JAVA大学实用教程.北京:清华大学出版社,2023.[4]邹林达.陈国君Java2程序设计基础.北京:清华大学出版社,2023.[5]邹林达.Java2程序设计基础试验指导.北京:清华大学,2023.指导教师(签名):2详细设计………………错误!未定义书签。3编码实现…………总结……………………错误!(2)黑棋子:将一种,车、马、炮、象、士各两个,卒五个。(3)在对局时,由执红棋的一方先走,双方轮番各走一着,直至分出胜败或走成(5)士每一着只许沿“九宫”斜线走一步,可进可退。相(象)不能越过“河界”,每一着斜走两步,可进可退,即俗称(6)马每着走一直(或一横)一斜,可进可退,即俗称“马走日字”。假如在要去方向紧靠一直(或一横)的地方,有别的棋子挡住,俗称“蹩马腿”,就不能走过去。(7)车每一着可以直进、直退、横走,不限步数。(8)炮在不吃子的时候,走法同车同样。(9)兵(卒)在没有过“河界”前,每着只许向前直走一步;过“河界”后,每着子(无论是哪一方的)跳吃,即俗称“炮打隔子”。除帅(将)外,其他棋子都可以听“将军”,或简称“将”。被“将军”的一方必须立即“应将”,即用自卫的着法去化解被“将”的状态。假如被“将军”而无法“应将”,就算被“将死”。轮到走棋的一方,帅(将)虽没被对方“将军”,却被禁在一种位置上无路1.2总体设计功能图如图1-1所示。新游戏悔棋象棋对弈信息提示var2.1详细设计思绪由上述类图进行分析。中国象棋对弈系统的程序由文总体设计流程图如图2-1所示。开始开始布置棋盘与棋子走对弈能新游戏信息提示是否是结束开始新的一局退一步悔棋12(1)图形顾客界面模块(2)按钮的操作模块开始开始悔棋按钮信息提示是否真退出结束到上一步的位置图2-2按钮模块流程图(3)棋子的操作模块开始开始盘结束图2-3棋子操作模块流程图(4)棋子的移动规则类模块棋子的移动规则如下所述。⑦兵(卒)在没有过“河界”前,每次只许向前直走一步;过“河界”后,每次可3编码实现源代码importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.util.*;publicstaticvoidmain(StringargnewChessMainFrame("中国象棋:观棋不语真君子,棋死无悔大丈夫");}//主框架类//棋盘//窗格JToolBarjmain;//退出//目前信息//保留目前操作VectorVar;//规则类对象(使于调用措施)**单击棋子=true闪烁棋子并给线程响应=false吃棋子停止闪烁并给线程响应**控制玩家走棋黑棋走棋红棋走棋默认红棋双方都不能走棋**构造函数**初始化图形顾客界面//获行客格引用con=this.getContentPane();//实例化规则类//创立工具栏text=newJLabel("欢迎使用象棋对弈系统");//当鼠标放上显示信息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);//添加棋子标签repent.addActionListene//注册棋子移动监听play[i].addMouseListener(th}Toolkit.getDefaultToolkit(this.setLocation((screenSize.width-frameSize.width)/2-280,(screenSize.height-frameSize.height)/2//设置**添加棋子措施publicvoiddrawChessMan(){//流程控制//图标//黑色棋子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}**线程措施控制棋子闪烁//单击棋子第一下开始闪烁//时间控制play[Man].setVisible(tru}//闪烁目前提醒信息以免顾客看不见}}**单击棋子措施publicvoidmouseClicked(MouseEventme){//目前坐标//启动线程if(tmain==null){}//单击棋盘(移动棋子)if(me.getSource().equa//该红棋走棋的时候if(chessPlayclick==2&&play[Man].getNameEx=playEy=play[Man].getY//移动卒、兵if(Man>15&&Man<26){rule.armsRule(Man,play[Man]}//移动炮rule.cannonRule(play[Man],pla}//移动车}//移动马rule.horseRule(play[Man],play}//移动相、象elseifrule.elephantRule(Man,play[Man],pla}//移动仕、士rule.chapRule(Man,play[Man],pla}//移动将、帅rule.willRule(Man,play[Man],pla}//与否走棋错误(与否在原地没有动)if(Ex==play[Man].getX()&&Ey==play[Ma}}{红棋走棋");黑棋走棋");}//if//该黑棋走棋的时候play[Man].getName().charAt(1)=='Ex=play[Man].getXEy=play[Man].getY//移动卒、兵if(Man>15&rule.armsRule(Man,play[Man]}//移动炮}//移动车rule.cannonRule(play[Man],play}//移动马rule.horseRule(play[Man],play}//移动相、象rule.elephantRule(Man,play[Man],pla}//移动仕、土elseif(Man>11&&Manrule.chapRule(Man,play[Man],play}//移动将、帅rule.willRule(Man,play[Man],pla//与否走棋错误(与否在原地没有动)if(Ex==play[Man].getX()&&Ey==play[Mtext.setText("黑棋走棋");}text.setText("红棋走棋");if//目前没有操作(停止闪烁)}//if//单击棋子//第一次单击棋子(闪烁棋子)for(inti=0;i<32;i//被单击的棋子//告诉线程让该棋子闪烁//开始闪烁}//if//第二次单击棋子(吃棋子)//目前没有操作(停止闪烁)//找到被吃的棋子if(me.getSource().equals(//该红棋吃棋的时候if(chessPlayClickplay[Man].getName().charAt(1)=='Ex=play[Man].getXEy=play[Man].getY//卒、兵吃规则if(Man>15&&Man<rule.armsRule(play[Man],play}//炮吃规则elseif(Man>25&&Man<30){rule.cannonRule(0,play[Man],play[i],pla//车吃规则rule.cannonRule(1,play[Man],play[i],pla//马吃规则rule.horseRule(play[Man],play[i],pla}//相、象吃规则rule.elephantRule(play[Man],play[i],//士、仕吃棋规则rule.chapRule(Man,play[Man],play[i],//将、帅吃棋规则rule.willRule(Man,play[Man],play[i],play[Man].setVisible(tru}//与否走棋错误(与否在原地没有动)text.setText("红棋走棋");黑棋走棋");}//if//该黑棋吃棋的时候elseif(chessPlplay[Man].getName().charAt(1)=='Ey=play[Man].getY();//卒吃规则if(Man>156&Man<2rule.cannonRule(0,play[Man]rule.cannonRule(1,play[Man],play[i],pla//马吃规则rule.horseRule(play[Man],play[i],plaelseif(Man>7&&Manrule.elephantRule(play[Man],play[i],//士、仕吃棋规则rule.chapRule(Man,play[Man],play[i],//将、帅吃棋规则rule.willRule(Man,play[Man],play[i],play[Man].setVisible(tru}//与否走棋错误(与否在原地没有动)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){**定义按钮的事件响应publicvoidactionPerformed(Ac//重新开始按钮//重新排列每个棋子的位置//黑色棋子//车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中的内容//悔棋按钮if(ae.getSource().equal//获得setVisible属性值StringS=(String)Var.get(Var.si//获得x坐标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,"真的要退出吗?","退出",/*定义中国象棋规则的类*//**卒子的移动规则*/publicvoidarmsRule(intMan,JLabelplay,MouseEve//黑卒向下if(Man<21){//向下移动、得到终点的坐标模糊成合法的坐标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,}//向右移动、得到终点的坐标模糊成合法的坐标、必须过河elseif(play.getY()>284&&(meplay.getX())>=57&&(me.getX()-play.getX())<=play.setBounds(play.getX()+57,play.getY(),55,}//向左移动、得到终点的坐标模糊成合法的坐标、必须过河//模糊坐标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//向上移动、得到终点的坐标模糊成合法的坐标if((me.getX()-play.getX())>=0(me.getX()-play.getX())<=55&&(play.getY()-me.getY())>27play.getY()-me.getY()<8play.setBounds(play.getx(),play}//向右移动、得到终点的坐标模糊成合法的坐标、必须过河elseif(play.getY()<=341&&(me.getx()-play.getX())>=57&&(me.getX()-play.getX())<=play.setBounds(play.getX()+57,play.getY(),55,//向左移动、得到终点的坐标模糊成合法的坐标、必须过河elseif(play.getY()<=341&&(play.getX()-me.getX())>=3&&(play.getx()-me.getx()play.setBounds(play.getx()-57,p}}}//卒移动结束/**卒吃棋规则*/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//把对方的位置给自己play1.setBounds(play2.getX(),p}//红棋要过河才左能吃棋elseif(play1.getNplay1.getY()<341&6play1.getName().charAt(1)play2.getName().charAt(1play2.setVisible(fals//把对方的位置给自己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)//把对方的位置给自己play1.setBounds(play2.getx(),play2.getY(),55,}//红棋要过河才能右吃棋elseif(play1.getNa//把对方的位置给自己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//把对方的位置给自己playl.setBounds(play2.getx(),play2.getY(),55,}//红棋不能向下吃棋elseif(playl.getName().charAt(1)=='2'&&play1.getY()>play2.getY()&&play1.getName().charAt(1)!=//把对方的位置给自己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(}//卒吃结束/**炮、车移动规则*/publicvoidcannonRule(JLabelplay,JLabel//起点和终点之间与否有棋子//上、下移动if(play.getX()-me.getX()<=0&&play.getx(//指定所有模糊Y坐标//移动的Y坐标与否有指定坐标相近的//所有的棋子for(intj=0;j<32;j++){//找出在同一条竖线的所有棋子、并不包括自己if(playQ[j].getx()-play.playQ[j].getx()-play.getx()<//从起点到终点(从左到右)for(int//不小于起点、不不小于终点的坐标就可以懂得中间与否有棋子if(playQ[j].getY()<i&&playo[j].getY()>play.getY(//中间有一种棋子就不可以从这条竖线过去}//从起点到终点(从右到左)for(intk=i+57;k<play.getY();k+=57){//找起点和终点的棋子if(playQ[j].getY()<play}}//if//起点和终点没有棋子就可以移动了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坐标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//从起点到终点(从上到下)for(intk=play.getX()+//不小于起点、不不小于终点的坐标就可以懂得中间与否有棋子if(playQ[j].getx()<iplayQ[j].getX()>play.getx(//中间有一种棋子就不可以从这条横线过去}//从起点到终点(从下到上)for(intk=i+57;k<play.getX();k+=57){//找起点和终点的棋子if(playQ[j].getX()<pla}//if//起点和终点没有棋子//目前记录添加到集合(用于悔棋)Var.add(String.valueOf(play.isVisiblVar.add(String.valueOf(play.getXVar.add(String.valueOf(play.getY()));Var.add(String.valueOf(Ma}}//if}//炮、车移动措施结束/**炮、车吃棋规则*/publicvoidcannonRule(intChess,JLabelplayTake,JLabelplayQ[],MouseEventme){//起点和终点之间与否有棋子//所有的棋子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//自己是起点被吃的是终点(从上到下)k=play.getY()+57;k<playTake.getY();//不小于起点、不不小于终点的坐标就可以懂得中间与否有棋子if(playQ[j].getY()<playTakplayQ[j].getY()>play.getY(//计算起点和终点的棋子个数}//自己是起点被吃的是终点(从下到上)for(intk=playTake.getY();//找起点和终点的棋子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//自己是起点被吃的是终点(从左到右)k=play.getx()+50;k<playTake.getx();//不小于起点、不不小于终点的坐标就可以懂得中间与否有棋子}//自己是起点被吃的是终点(从右到左)for(intk=playTake.getX();k<play.getX();k+=57){//找起点和终点的棋子if(playQ[j].getX()<plaplayQ[j].getX()>playTake.getX}//if//起点和终点之间要一种棋子是炮的规则、并不能吃自己的棋子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//起点和终点之间没有棋子是车的规则、并不能吃自己的棋子//目前记录添加到集合(用于悔棋)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}}//炮、车吃棋措施结束/**马移动规则*/publicvoidhorseRule(JLabelplay,JLabelplayQ[],MouseEvent//保留坐标和障碍//上移、左边if(play.getX()-me.getX()>=2&&pl<=57&&play.getY()-me.getY()>=87&&play.getY()-me.get//合法的Y坐标for(int//移动的Y坐标与否有指定坐标相近的if(i-me.getY()>=-27&&i-}//合法的x坐标for(inti=24;i<=4//移动的x坐标与否有指定坐标相近的if(i-me.getX()}}//正前方与否有别的棋子if(playQ[i].isVisible()&&play.getX(playQ[i].getX()==0&&play.getY()-playQ[i].getY()==57){}}//可以移动该棋子//目前记录添加到集合(用于悔棋)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坐标-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}}//可以移动该棋子//目前记录添加到集合(用于悔棋)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坐标for(intif(i-me.getY()>=-27&&i-}}//合法的x坐标-me.getx()>=-55&&i-me.getx}}//正下方与否有别的棋子for(intiif(playo[i].isVisible()&&play.getX(&&play.getY()-playQ[i}//可以移动该棋子//目前记录添加到集合(用于悔棋)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}}//马移动结束/**马吃棋规则*/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}/**相移动规则*/publicvoidelephantRule(intMan,JLabelplay,JLabelplayQ[],MouseEventme){//坐标和障碍//上左if(play.getX()-me.getX()<=141&&play.getX(me.getX()>=87

温馨提示

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

评论

0/150

提交评论