📄 chesspanetest.java
字号:
package com.catking.chess;
import java.util.*;
import com.catking.GUI.chessBoard.ChessBoard;
import com.catking.Utility.*;
public class ChessPaneTest implements ChessKind{
public static Chess[][] chesses ;
public static int ATTACK_UP_BANK;
public static int ATTACK_DOWN_BANK;
public static boolean isRedDown;
public static final int ROWS = 10;
public static final int COLS = 9;
public static Position[] jiangPos;
public static Boolean[] isJiangJunState; //记录双方是否被将军
public static int pre_player;
////////////////////////
//GUI
//chess所画的地方
public static ChessBoard canvas;
////////////////////////
//摆完整的棋谱
public static void init(ChessBoard c, boolean isRedDown){
ChessPane.isRedDown = isRedDown;
ATTACK_UP_BANK = isRedDown?5:4;
ATTACK_DOWN_BANK = isRedDown?4:5;
chesses = new Chess[ROWS][COLS];
for(int i=0; i < ROWS; ++i)
for(int j=0; j < COLS; ++j)
chesses[i][j] = new Kong(KONG);
//红色棋子在下方
int blackX, redX;
blackX = isRedDown?0:9;
redX = isRedDown?9:0;
chesses[blackX][0] = new Ju(ATTACK_DOWN);
chesses[redX][0] = new Ju(ATTACK_UP);
chesses[blackX][1] = new Ma(ATTACK_DOWN);
chesses[9][1] = new Ma(ATTACK_UP);
chesses[blackX][2] = new Xiang(ATTACK_DOWN);
chesses[redX][2] = new Xiang(ATTACK_UP);
chesses[blackX][3] = new Shi(ATTACK_DOWN);
chesses[redX][3] = new Shi(ATTACK_UP);
chesses[blackX][4] = new Jiang(ATTACK_DOWN);
chesses[redX][4] = new Jiang(ATTACK_UP);
chesses[blackX][5] = new Shi(ATTACK_DOWN);
chesses[redX][5] = new Shi(ATTACK_UP);
chesses[blackX][6] = new Xiang(ATTACK_DOWN);
chesses[redX][6] = new Xiang(ATTACK_UP);
chesses[blackX][7] = new Ma(ATTACK_DOWN);
chesses[redX][7] = new Ma(ATTACK_UP);
chesses[blackX][8] = new Ju(ATTACK_DOWN);
chesses[redX][8] = new Ju(ATTACK_UP);
blackX = isRedDown?2:7;
redX = isRedDown?7:2;
chesses[blackX][1] = new Pao(ATTACK_DOWN);
chesses[blackX][7] = new Pao(ATTACK_DOWN);
chesses[redX][1] = new Pao(ATTACK_UP);
chesses[redX][7] = new Pao(ATTACK_UP);
blackX = isRedDown?3:6;
redX = isRedDown?6:3;
for(int i=0; i < 9; i+=2){
chesses[blackX][i] = new Bing(ATTACK_DOWN);
chesses[redX][i] = new Bing(ATTACK_UP);
}
for(int i=0; i < ROWS; ++i)
for(int j=0; j < COLS; ++j){
chesses[i][j].x = i;
chesses[i][j].y = j;
}
jiangPos = new Position[3];
isJiangJunState = new Boolean[3];
//将军位置
jiangPos[ATTACK_UP] = new Position(9, 4);
jiangPos[ATTACK_DOWN] = new Position(0, 4);
//两边都没有被将
isJiangJunState[ATTACK_UP] = false;
isJiangJunState[ATTACK_DOWN] = false;
pre_player = KONG; //尚未动棋子
}
public static void print(){
System.out.println("\n**********************");
for(int i = 0; i < ROWS; ++i){
for(int j = 0; j < COLS; ++j){
chesses[i][j].go();
}
if(i == 4)
System.out.println("\n---------楚河 汉界---------");
else
System.out.println();
}
System.out.println("\n**********************");
}
//负责检查两个老将的被将状态
public static void checkJiangJunState(){
Set<Bool>state = new HashSet<Bool>();
for(int i=0; i < ROWS; ++i){
for(int j=0; j < COLS; ++j){
System.out.print(chesses[i][j].isJiangJun());
state.add(new Bool(chesses[i][j].isJiangJun()));
}
System.out.println();
}
//如果某个棋子将对方军,它已经更新了ChessPane.isJiangJunState了
//所以只要更新刚刚动完棋的一方被将军状态有未解除
if(!state.contains(new Bool(true)))
isJiangJunState[pre_player] = false;
System.out.println("将军"+"attack up:"+isJiangJunState[ATTACK_UP]);
System.out.println("将军"+"attack down:"+isJiangJunState[ATTACK_DOWN]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -