一下是我关于炮上下吃子的判断的方法,我的程序运行后炮是可以实现向下吃子的功能的,但是纯在的问题是炮不能实现向上吃子的功能而且炮可以在目标棋子之间没有棋子的情况下吃掉目标棋子。(请帮我指出代码中的不足)我已经呆呆的看了自己的代码2个多小时了试过改数值和嵌套都还是改变不了原来的问题
public void cannoRule(ChessMainBehavior play,ChessMainBehavior playQ[],MouseEvent me,List<ChessRegret> chessRegretList,int man){
int count=0;//统计中间隔了多少个棋子
int cx=me.getX();//得到鼠标点击的横坐标
int cy=me.getY()+30;//鼠标点击的纵坐标,坐标加上30px是因为我们的窗体上工具栏占用了30px
//判断棋子没有左右移动
if(cx-play.getX()>=0 && cx-play.getX()<57){
//cx是鼠标点击的位置-棋子的位置,
//保证了我们的上下移动和左右移动因为气质的像素是55和55棋子间的间隔为2所以是57
//所以每个格子的间隔是57
//26是棋子的开始的高度因为有一半的棋子是在网格外的(细品)
//棋盘中是26相加但是要加上工具栏的高度30所以是56
//569是棋盘总高度
for(int i=56;i<=569;i+=57){
if(cy-i>=0 && cy-i<57){
for(int j=0;j<32;j++){
if(playQ[j].getX()==play.getX() && play.getName()!=playQ[j].getName() && playQ[j].died==false){
// //判定这个棋子不是自己 //并且这个棋子是显示的
for(int k=i;k<play.getY();k+=57){
if(playQ[j].getY()==k){
count++;
//判定路上是否有别的棋子
}
}
for(int k=play.getY();k<i;k+=57){
if(playQ[i].getY()==k){
count++;
}
}
}
}
if(count==0){
ChessRegret chessRegret=new ChessRegret();
chessRegret.man=man;
chessRegret.cx=play.getX();
chessRegret.cy=play.getY();
chessRegretList.add(chessRegret);
play.setBounds(play.getX(), i,55, 55);
return;
}
}
}
}