📄 pao.java
字号:
package com.catking.chess;
import java.util.HashSet;
import java.util.Set;
import com.catking.Utility.Position;
import com.catking.Utility.Bool;
public class Pao extends Chess{
public Pao(int color) {
super(color);
// TODO Auto-generated constructor stub
this.name = '炮';
}
@Override
public void go() {
// TODO Auto-generated method stub
System.out.print("炮");
}
@Override
public Set<Position> availableSteps() {
// TODO Auto-generated method stub
Set<Position> set = new HashSet<Position>();
//left
int temp = y;
Bool isPaoJiaOn = new Bool(false);
while(temp-- != 0){
if(!add(set, x, temp, isPaoJiaOn))
break;
}
//right
temp = y;
isPaoJiaOn.mark = false;
while(temp++ != ChessPane.COLS-1){
if(!add(set, x, temp, isPaoJiaOn))
break;
}
//up
temp = x;
isPaoJiaOn.mark = false;
while(temp-- != 0){
if(!add(set, temp, y, isPaoJiaOn))
break;
}
//down
temp = x;
isPaoJiaOn.mark = false;
while(temp++ != ChessPane.ROWS-1){
if(!add(set, temp, y, isPaoJiaOn))
break;
}
//System.out.println("有"+set.size()+"条道路");
return set;
}
private boolean add(Set<Position>set, int x, int y, Bool isPaoJiaOn){
int clr = ChessPane.chesses[x][y].color;
if(clr == KONG && !isPaoJiaOn.mark){ //空棋可以像车一样直线跑啊!
set.add(new Position(x, y));
//System.out.println("加上空格"+x+","+y);
return true;
}
else if(!isPaoJiaOn.mark){ //遇到炮架子
isPaoJiaOn.mark = true;
return true;
}
else if(clr == color){
return false; //炮架子后面第一个遇到的是自己的棋子
}
else if(clr != color && clr != KONG){ //遇到炮击目标对方的棋
set.add(new Position(x, y)); //没有下一个目标了
//System.out.println("加上炮击目标"+x+","+y);
return false;
}
return true; //炮架子后面全是空棋
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -