📄 jiang.java
字号:
package com.catking.chess;
import java.util.*;
import com.catking.Utility.*;
public class Jiang extends Chess{
public Jiang(int color) {
super(color);
// TODO Auto-generated constructor stub
this.name = (color == ATTACK_UP )?'帥':'將';
}
@Override
public void go() {
// TODO Auto-generated method stub
System.out.print((color == ATTACK_UP )?"帅":"将");
}
@Override
public Set<Position> availableSteps() {
// TODO Auto-generated method stub
Set<Position>set = new HashSet<Position>();
//老将走田字格的每条边
//left
if(y != 3 && ChessPane.chesses[x][y-1].color != color)
set.add(new Position(x, y-1));
//right
if(y != 5 && ChessPane.chesses[x][y+1].color != color)
set.add(new Position(x, y+1));
if(color == ATTACK_DOWN ){
if(x != 2 && ChessPane.chesses[x+1][y].color != color) //out
set.add(new Position(x+1, y));
if(x != 0 && ChessPane.chesses[x-1][y].color != color) //in
set.add(new Position(x-1, y));
}else{
//attack_up
if(x != ChessPane.ROWS - 3
&& ChessPane.chesses[x-1][y].color != color) //out
set.add(new Position(x-1, y));
if(x != ChessPane.ROWS - 1
&& ChessPane.chesses[x+1][y].color != color) //in
set.add(new Position(x+1, y));
}
//System.out.println("有"+set.size()+"条道路");
return set;
}
//更新棋表中将军的位置,便于将军方法的实现
@Override
public int setPos(int x, int y, boolean alter) {
// TODO Auto-generated method stub
ChessPane.jiangPos[color].x = x;
ChessPane.jiangPos[color].y = y;
return super.setPos(x, y, alter);
}
//覆盖父类
public boolean isJiangJun(){
//老将将军的方式只有老将照明,不同于普通棋子的将军方式
int index = Math.abs(color-3); //得到对方将军位置1->2 2->1
int indexY = ChessPane.jiangPos[index].y; //对方将军的列
int indexX = ChessPane.jiangPos[index].x;
if(indexY == y){ //可能会老将照面
int min = Math.min(indexX, x);
int max = Math.max(indexX, x);
for(int i = min+1; i < max; ++i){
if(ChessPane.chesses[i][y].color != KONG) //中间有棋子
return false;
}
//中间没有棋子 老将会面了 应该是刚刚动棋的那方的老将被将了
ChessPane.isJiangJunState[ChessPane.pre_player] = true;
//提示音
Utilities.playSound("Wav/jiangzhaomian.wav");
return color == ChessPane.pre_player; //刚动棋子一方的将被将了
}
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -