📄 mainstrategy.java
字号:
package org.yushang.jumpchess.strategy;
import org.yushang.jumpchess.pkg.Chess;
import org.yushang.jumpchess.pkg.ChessBoard;
import org.yushang.jumpchess.pkg.Player;
import org.yushang.jumpchess.pub.BoardArea;
import org.yushang.jumpchess.pub.Position;
public class MainStrategy extends Strategy {
public MainStrategy(ChessBoard chessBoard, Player player) {
super(chessBoard, player);
}
public MainStrategy(ChessBoard chessBoard, Player player, Step step) {
super(chessBoard, player, step);
}
private boolean isComplete() {
// 是否所有的棋子,都快到目的区域
//条件1:到Postion[0]最远的不超过10,条件2:到Postion[0]的和不超过70
int Distance = 0;
int maxDistance = Integer.MIN_VALUE;
Position position = player.getArea().getOppsiteArea().getAreaPositions()[0];
Chess[] chesses = player.getChesses();
for (int i = 0; i < chesses.length; i++) {
Position chessPosition = chessBoard.getPosition(chesses[i]);
int d = position.getDistance(chessPosition);
if (maxDistance < d) {
maxDistance = d;
}
Distance += d;
}
if ((maxDistance <= 10) && (Distance < 70)) {
return true;
} else {
return false;
}
}
private Position getDestPosition() {
BoardArea destArea = player.getArea().getOppsiteArea();
Position[] destAreaPositions = destArea.getAreaPositions();
Position destPosition = null;
for (int i = 0; i < destAreaPositions.length; i++) {
Chess chess = chessBoard.getChess(destAreaPositions[i]);
if ( (chess == null) ||
(chess.GetColor() != player.GetColor())
) {
destPosition = destAreaPositions[i];
break;
}
}
return destPosition;
}
private int Amend() {
int Score = 0;
BoardArea destArea = player.getArea().getOppsiteArea();
Position[] destAreaPositions = destArea.getAreaPositions();
for (int i = 0; i < destAreaPositions.length; i++) {
if ((chessBoard.getChess(destAreaPositions[i]) == null) ||
(chessBoard.getChess(destAreaPositions[i]).GetColor() != player.GetColor())) {
switch (i) {
case 0:
Score += 3;
break;
case 1:
case 2:
Score += 2;
break;
case 3:
case 4:
case 5:
Score += 1;
default:
break;
}
}
}
return Score;
}
private int CalculateScoreComplete() {
// 得到目标位置
Position destPosition = getDestPosition();
//计算分数
Chess[] chesses = player.getChesses();
BoardArea destArea = player.getArea().getOppsiteArea();
int Score = 0;
if (destPosition != null) {
for (int i = 0; i < chesses.length; i++) {
if (! destArea.isInclude(chessBoard.getPosition(chesses[i]))) {
Score += chessBoard.getPosition(chesses[i]).getDistance(destPosition);
}
}
}
//修正
Score += Amend();
return Score;
}
private int CalculateScoreUnComplete() {
//得到目标位置
Position destPosition = player.getArea().getOppsiteArea().getAreaPositions()[0];
//计算分数
Chess[] chesses = player.getChesses();
int Score = 0;
if (destPosition != null) {
for (int i = 0; i < chesses.length; i++) {
Score += chessBoard.getPosition(chesses[i]).getDistance(destPosition);
}
}
return Score;
}
public int CalculateScore() {
//TODO 可以再完善
//System.out.println("IsComplete:" + Boolean.toString(isComplete()));
if (isComplete()) {
return CalculateScoreComplete();
} else {
return CalculateScoreComplete();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -