📄 gamescreen.java
字号:
// 卒上下移动
if (ID[from] == 7){
ChangeZu(g);
return;
}
// 关羽下移动
if (ID[from] == 5 && cursorPosition - from == 4){
if (ID[cursorPosition + 1] == 0){
ChangeGuanYu_V(g);
return;
}
}
// 关羽上移动
if (ID[from] == 5 && cursorPosition - from == -4){
if (ID[cursorPosition + 1] == 0){
ChangeGuanYu_V(g);
return;
}
}
}
// 关羽上下移动一格处理
if (cursorPosition - from == 5 || cursorPosition - from == -3){
// 关羽下移动
if (ID[from] == 5 && cursorPosition - from == 5){
if (ID[cursorPosition - 1] == 0){
cursorPosition = cursorPosition - 1;
ChangeGuanYu_V(g);
return;
}
}
// 关羽上移动
if (ID[from] == 5 && cursorPosition - from == -3){
if (ID[cursorPosition - 1] == 0){
cursorPosition = cursorPosition - 1;
ChangeGuanYu_V(g);
return;
}
}
}
// 曹操上下移动一格处理
if (cursorPosition - from == 8 || cursorPosition - from == -4){
// 曹操下移动
if (ID[from] == 2 && cursorPosition - from == 8){
if (ID[cursorPosition + 1] == 0){
ChangeCaoCao_V(g, 1);
return;
}
}
// 曹操上移动
if (ID[from] == 2 && cursorPosition - from == -4){
if (ID[cursorPosition + 1] == 0){
ChangeCaoCao_V(g, -1);
return;
}
}
}
// 曹操上下移动一格处理
if (cursorPosition - from == 9 || cursorPosition - from == -3){
// 曹操下移动
if (ID[from] == 2 && cursorPosition - from == 9){
if (ID[cursorPosition - 1] == 0){
cursorPosition = cursorPosition - 1;
ChangeCaoCao_V(g, 1);
return;
}
}
// 曹操上移动
if (ID[from] == 2 && cursorPosition - from == -3){
if (ID[cursorPosition - 1] == 0){
cursorPosition = cursorPosition - 1;
ChangeCaoCao_V(g, -1);
return;
}
}
}
// 张飞、马超、赵云、黄忠上下移动一格处理
if (cursorPosition - from == 8 || cursorPosition - from == -4){
// 下移动
if (hOld == boardCellSize * 2 && cursorPosition - from == 8){
ChangeV2_V(g, 1);
return;
}
// 上移动
if (hOld == boardCellSize * 2 && cursorPosition - from == -4){
ChangeV2_V(g, -1);
return;
}
}
// 张飞、马超、赵云、黄忠上下移动两格处理
if (cursorPosition - from == 12 || cursorPosition - from == -8){
// 下移动
if (hOld == boardCellSize * 2 && cursorPosition - from == 12){
ChangeV2_V(g, 2);
return;
}
// 上移动
if (hOld == boardCellSize * 2 && cursorPosition - from == -8){
ChangeV2_V(g, -2);
return;
}
}
// 卒下移两格处理
if (cursorPosition - from == 8){
if (ID[from] == 7 && ID[cursorPosition - 4] == 0){
ChangeZu(g);
return;
}
}
// 卒上移两格处理
if (cursorPosition - from == -8){
if (ID[from] == 7 && ID[cursorPosition + 4] == 0){
ChangeZu(g);
return;
}
}
// 卒右移两格处理
if (cursorPosition - from == 2 && cursorPosition % 4 > 1){
if (ID[from] == 7 && ID[cursorPosition - 1] == 0){
ChangeZu(g);
return;
}
}
// 卒左移两格处理
if (cursorPosition - from == -2 && cursorPosition % 4 < 2){
if (ID[from] == 7 && ID[cursorPosition + 1] == 0){
ChangeZu(g);
return;
}
}
// 卒右移一格、上移一格处理
if (cursorPosition - from == -3 && cursorPosition % 4 > 0){
if (ID[from] == 7 && (ID[from - 4] == 0 || ID[from + 1] == 0)){
ChangeZu(g);
return;
}
}
// 卒左移一格、上移一格处理
if (cursorPosition - from == -5 && cursorPosition % 4 < 3){
if (ID[from] == 7 && (ID[from - 4] == 0 || ID[from - 1] == 0 )){
ChangeZu(g);
return;
}
}
// 卒左移一格、下移一格处理
if (cursorPosition - from == 3 && cursorPosition % 4 < 3){
if (ID[from] == 7 && (ID[from - 1] == 0 || ID[from + 4] == 0 )){
ChangeZu(g);
return;
}
}
// 卒右移一格、下移一格处理
if (cursorPosition - from == 5 && cursorPosition % 4 > 0){
if (ID[from] == 7 && (ID[from + 1] == 0 || ID[from + 4] == 0 )){
ChangeZu(g);
return;
}
}
}
}
// 在光标当前所处位置以蓝线绘制光标框
g.setColor(BLUE);
// 当前光标大小
int w = boardCellSize;
int h = boardCellSize;
if (cursorPosition / 4 < 4)
if (Draw[cursorPosition + 4] == 0 && ID[cursorPosition] == ID[cursorPosition + 4])
h = h * 2;
if (cursorPosition % 4 < 3)
if (Draw[cursorPosition + 1] == 0 && ID[cursorPosition] == ID[cursorPosition + 1])
w = w * 2;
// 绘制光标
g.drawRect(((cursorPosition % 4) * boardCellSize) + 1 + boardLeft, ((int)(cursorPosition / 4) * boardCellSize) + 1 + boardTop, w - 2, h - 2);
}
private void ChangeZu(Graphics g) {
// 交换图象
ID[cursorPosition] = 7;
ID[from] = 0;
// 交换主索引标志
Draw[cursorPosition] = 1;
Draw[from] = 1;
// 绘制交换后的图片
int x = (cursorPosition % 4) * boardCellSize + 1 + boardLeft;
int y = ((int)(cursorPosition / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[ID[cursorPosition]], x, y, 0);
x = (from % 4) * boardCellSize + 1 + boardLeft;
y = ((int)(from / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[0], x, y, 0);
}
private void ChangeV2_V(Graphics g, int step){
// 交换图象
int temp = ID[from];
ID[from] = 0;
ID[from + 4] = 0;
ID[cursorPosition] = temp;
// 交换主索引标志
Draw[from] = 1;
Draw[from + 4] = 1;
if (step > 0){
// 交换图象
ID[cursorPosition - 4] = temp;
// 交换主索引标志
Draw[cursorPosition - 4] = 1;
Draw[cursorPosition] = 0;
// 修正主索引位置
cursorPosition = cursorPosition - 4;
}
else{
// 交换图象
ID[cursorPosition + 4] = temp;
// 交换主索引标志
Draw[cursorPosition] = 1;
Draw[cursorPosition + 4] = 0;
}
int x = (from % 4) * boardCellSize + 1 + boardLeft;
int y = ((int)(from / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[0], x, y, 0);
x = ((from + 4) % 4) * boardCellSize + 1 + boardLeft;
y = ((int)((from + 4) / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[0], x, y, 0);
// 绘制交换后的图片
x = (cursorPosition % 4) * boardCellSize + 1 + boardLeft;
y = ((int)(cursorPosition / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[ID[cursorPosition]], x, y, 0);
}
private void ChangeV2_H(Graphics g){
// 交换图象
ID[cursorPosition] = ID[from];
ID[cursorPosition + 4] = ID[from];
ID[from] = 0;
ID[from + 4] = 0;
// 交换主索引标志
Draw[cursorPosition] = 1;
Draw[cursorPosition + 4] = 0;
Draw[from] = 1;
Draw[from + 4] = 1;
// 绘制交换后的图片
int x = (cursorPosition % 4) * boardCellSize + 1 + boardLeft;
int y = ((int)(cursorPosition / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[ID[cursorPosition]], x, y, 0);
x = (from % 4) * boardCellSize + 1 + boardLeft;
y = ((int)(from / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[0], x, y, 0);
x = ((from + 4) % 4) * boardCellSize + 1 + boardLeft;
y = ((int)((from + 4) / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[0], x, y, 0);
}
private void ChangeGuanYu_H(Graphics g, int step){
// 交换图象
ID[from] = 0;
ID[from + 1] = 0;
ID[cursorPosition] = 5;
// 交换主索引标志
Draw[from] = 1;
Draw[from + 1] = 1;
if (step > 0){
// 交换图象
ID[cursorPosition - 1] = 5;
// 交换主索引标志
Draw[cursorPosition - 1] = 1;
Draw[cursorPosition] = 0;
// 修正主索引位置
cursorPosition = cursorPosition - 1;
}
else{
// 交换图象
ID[cursorPosition + 1] = 5;
// 交换主索引标志
Draw[cursorPosition] = 1;
Draw[cursorPosition + 1] = 0;
}
int x = (from % 4) * boardCellSize + 1 + boardLeft;
int y = ((int)(from / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[0], x, y, 0);
x = ((from + 1) % 4) * boardCellSize + 1 + boardLeft;
y = ((int)((from + 1) / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[0], x, y, 0);
// 绘制交换后的图片
x = (cursorPosition % 4) * boardCellSize + 1 + boardLeft;
y = ((int)(cursorPosition / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[ID[cursorPosition]], x, y, 0);
}
private void ChangeGuanYu_V(Graphics g){
// 交换图象
ID[cursorPosition] = ID[from];
ID[cursorPosition + 1] = ID[from];
ID[from] = 0;
ID[from + 1] = 0;
// 交换主索引标志
Draw[cursorPosition] = 1;
Draw[cursorPosition + 1] = 0;
Draw[from] = 1;
Draw[from + 1] = 1;
// 绘制交换后的图片
int x = (cursorPosition % 4) * boardCellSize + 1 + boardLeft;
int y = ((int)(cursorPosition / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[ID[cursorPosition]], x, y, 0);
x = (from % 4) * boardCellSize + 1 + boardLeft;
y = ((int)(from / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[0], x, y, 0);
x = ((from + 1) % 4) * boardCellSize + 1 + boardLeft;
y = ((int)((from + 1) / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[0], x, y, 0);
}
private void ChangeCaoCao_H(Graphics g, int step){
int x, y;
// 交换图象
ID[from] = 0;
ID[from + 1] = 0;
ID[from + 4] = 0;
ID[from + 5] = 0;
ID[cursorPosition] = 2;
ID[cursorPosition + 4] = 2;
// 交换主索引标志
Draw[from] = 1;
Draw[from + 1] = 1;
Draw[from + 4] = 1;
Draw[from + 5] = 1;
if (step > 0){
// 交换图象
ID[cursorPosition - 1] = 2;
ID[cursorPosition + 3] = 2;
// 交换主索引标志
Draw[cursorPosition - 1] = 1;
Draw[cursorPosition] = 0;
Draw[cursorPosition + 3] = 0;
Draw[cursorPosition + 4] = 0;
// 修正主索引位置
cursorPosition = cursorPosition - 1;
x = (from % 4) * boardCellSize + 1 + boardLeft;
y = ((int)(from / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[0], x, y, 0);
x = ((from + 4) % 4) * boardCellSize + 1 + boardLeft;
y = ((int)((from + 4) / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[0], x, y, 0);
}
else{
// 交换图象
ID[cursorPosition + 1] = 2;
ID[cursorPosition + 5] = 2;
// 交换主索引标志
Draw[cursorPosition] = 1;
Draw[cursorPosition + 1] = 0;
Draw[cursorPosition + 4] = 0;
Draw[cursorPosition + 5] = 0;
x = ((from + 1) % 4) * boardCellSize + 1 + boardLeft;
y = ((int)((from + 1) / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[0], x, y, 0);
x = ((from + 5) % 4) * boardCellSize + 1 + boardLeft;
y = ((int)((from + 5) / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[0], x, y, 0);
}
// 绘制交换后的图片
x = (cursorPosition % 4) * boardCellSize + 1 + boardLeft;
y = ((int)(cursorPosition / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[ID[cursorPosition]], x, y, 0);
// 游戏结束检测
if (ID[13] == 2 && ID[14] == 2 && ID[17] == 2 && ID[18] == 2) {
isGameOver = true;
repaint();
}
preCursorPosition = cursorPosition;
}
private void ChangeCaoCao_V(Graphics g, int step){
int x, y;
// 交换图象
ID[from] = 0;
ID[from + 1] = 0;
ID[from + 4] = 0;
ID[from + 5] = 0;
ID[cursorPosition] = 2;
ID[cursorPosition + 1] = 2;
// 交换主索引标志
Draw[from] = 1;
Draw[from + 1] = 1;
Draw[from + 4] = 1;
Draw[from + 5] = 1;
if (step > 0){
// 交换图象
ID[cursorPosition - 4] = 2;
ID[cursorPosition - 3] = 2;
// 交换主索引标志
Draw[cursorPosition - 4] = 1;
Draw[cursorPosition - 3] = 0;
Draw[cursorPosition] = 0;
Draw[cursorPosition + 1] = 0;
// 修正主索引位置
cursorPosition = cursorPosition - 4;
x = (from % 4) * boardCellSize + 1 + boardLeft;
y = ((int)(from / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[0], x, y, 0);
x = ((from + 1) % 4) * boardCellSize + 1 + boardLeft;
y = ((int)((from + 1) / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[0], x, y, 0);
}
else{
// 交换图象
ID[cursorPosition + 4] = 2;
ID[cursorPosition + 5] = 2;
// 交换主索引标志
Draw[cursorPosition] = 1;
Draw[cursorPosition + 1] = 0;
Draw[cursorPosition + 4] = 0;
Draw[cursorPosition + 5] = 0;
x = ((from + 4) % 4) * boardCellSize + 1 + boardLeft;
y = ((int)((from + 4) / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[0], x, y, 0);
x = ((from + 5) % 4) * boardCellSize + 1 + boardLeft;
y = ((int)((from + 5) / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[0], x, y, 0);
}
// 绘制交换后的图片
x = (cursorPosition % 4) * boardCellSize + 1 + boardLeft;
y = ((int)(cursorPosition / 4)) * boardCellSize + boardTop + 1;
g.drawImage(Pic[ID[cursorPosition]], x, y, 0);
// 游戏结束检测
if (ID[13] == 2 && ID[14] == 2 && ID[17] == 2 && ID[18] == 2){
isGameOver = true;
repaint();
}
preCursorPosition = cursorPosition;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -