📄 maincontrol.java~8~
字号:
}
else if (cmd.equals("读取游戏进度"))
{
}
else if (cmd.equals("放弃该局"))
{
} else if (cmd.equals("退出")) {
int ans = JOptionPane.showConfirmDialog(null, "确定要退出吗?(Y/N)");
if (ans == 0) {
this.dispose();
System.exit(0);
} else {
repaint();
}
} else if (cmd.equals("新建游戏")) {
//如果选择此项,则在两者通信时此机器作为服务器
NetWork w = new NetWork();
w.setVisible(true);
repaint();
isServer = true;
//标志是服务器
//con.ConnectToClient();
} else if (cmd.equals("加入游戏")) {
//如果选择此项,则在两者通信时此机器作为客户端
NetWork w = new NetWork();
w.setVisible(true);
repaint();
isServer = false;
//标志是客户端
//con.ConnectToClient();
}
else
{
repaint();
}
}
/*初始化节点矩阵matrix*/
public
/*static*/ void ini() {
//初始化matrix矩阵
for (int i = 0; i < LINE_NUM; i++) {
for (int j = 0; j < COLUMN_NUM; j++) {
if ((i == 3 && j == 3) || (i == 4 && j == 4)) {
matrix[i][j] = 1;
//白子
} else if ((i == 3 && j == 4) || (i == 4 && j == 3)) {
matrix[i][j] = -1;
//黑子
} else {
matrix[i][j] = 0;
//其它:无子
}
}
}
}
/*初始化棋盘上各个位置处的权重*/
public void iniWeight() {
//weight = { 5 , 0 , 4 , 3 , 3 , 4 , 0 , 5 ; 0,0, 1,1,1,1,0,0;4,1,2,2,2,2,1,4;3,1,2,2,2,2,1,3;3,1,2,2,2,2,1,3;4,1,2,2,2,2,1,4;0,0, 1,1,1,1,0,0;5 , 0 , 4 , 3 , 3 , 4 , 0 , 5 ;}
}
public int[][] getMatrix() {
return matrix;
}
public void setMatrix(int[][] matrix) {
this.matrix = matrix;
}
/*矩阵中位置与前台坐标之间的相互转化方法,返回值不好处理*/
public void convert() {
}
/*check方法:检测出所有当前执棋方能到达的位置,之所以叫做checkObject,是用于下面画“X”的地方,修改其matrix值*/
public void checkObjects(int side) {
// side 表示当前(接下来)要走棋的是哪一方,然后此方法查找所有这一方所能到达的地方,并修改其matrix值并调用paint()方法
for (int i = 0; i < LINE_NUM; i++) {
for (int j = 0; j < COLUMN_NUM; j++) {
//用来定位到棋盘上的某一棋子,然后从8个方向上来定位搜索可到达的位置
if (matrix[i][j] == side) {
//如果当前位置棋子为待检测的棋子,则从8个方向上来定位搜索可到达的位置,
//看在哪一些地方可以放置要走的这一步棋子,并修改对应的matrix的值
//上
//////////////////////////////////////////////////////////
if (i != 0) {
//如果不为第一行,则向上搜索
if (matrix[i - 1][j] == ( -1) * side) {
//说明在“上”这个方向是对方的棋子,则还有检索下去的必要
for (int m = i - 2; m >= 0; m--) {
if (matrix[m][j] == side) {
break;
//如果"遭遇"相同的棋子,这个方向就停止搜索,跳出
} else if (matrix[m][j] % 2 == 0) {
matrix[m][j] += 2;
objectPlaces++;
break;
//如果出现“空格”,就修改其matrix的值,以供repaint()画"X"时使用
} else if (matrix[m][j] == ( -1) * side) {
//如果仍为与当前棋子不同颜色的棋子,则继续往下走
}
}
}
}
///////////////////////////////////////////////////////////////////////
//下
//////////////////////////////////////////////////////////////////////
if (i != 7) {
//如果不为最后一行,则向下搜索
if (matrix[i + 1][j] == ( -1) * side) {
//说明在“下”这个方向是对方的棋子,则还有检索下去的必要
for (int m = i + 2; m <= 7; m++) {
if (matrix[m][j] == side) {
break;
//如果"遭遇"相同的棋子,这个方向就停止搜索,跳出
} else if (matrix[m][j] % 2 == 0) {
matrix[m][j] += 2;
objectPlaces++;
break;
//如果出现“空格”,就修改其matrix的值,以供repaint()画"X"时使用
} else if (matrix[m][j] == ( -1) * side) {
//如果仍为与当前棋子不同颜色的棋子,则继续往下走
}
}
}
}
//////////////////////////////////////////////////////////////////////
//左
//////////////////////////////////////////////////////////
if (j != 0) {
//如果不为第一列,则向左搜索
if (matrix[i][j - 1] == ( -1) * side) {
//说明在“左”这个方向是对方的棋子,则还有检索下去的必要
for (int m = j - 2; m >= 0; m--) {
if (matrix[i][m] == side) {
break;
//如果"遭遇"相同的棋子,这个方向就停止搜索,跳出
} else if (matrix[i][m] % 2 == 0) {
matrix[i][m] += 2;
objectPlaces++;
break;
//如果出现“空格”,就修改其matrix的值,以供repaint()画"X"时使用
} else if (matrix[i][m] == ( -1) * side) {
//如果仍为与当前棋子不同颜色的棋子,则继续往下走
}
}
}
}
///////////////////////////////////////////////////////////////////////
//右
//////////////////////////////////////////////////////////////////////
if (j != 7) {
//如果不为最后一列,则向右搜索
if (matrix[i][j + 1] == ( -1) * side) {
//说明在“右”这个方向是对方的棋子,则还有检索下去的必要
for (int m = j + 2; m <= 7; m++) {
if (matrix[i][m] == side) {
break;
//如果"遭遇"相同的棋子,这个方向就停止搜索,跳出
} else if (matrix[i][m] % 2 == 0) {
matrix[i][m] += 2;
objectPlaces++;
break;
//如果出现“空格”,就修改其matrix的值,以供repaint()画"X"时使用
} else if (matrix[i][m] == ( -1) * side) {
//如果仍为与当前棋子不同颜色的棋子,则继续往下走
}
}
}
}
//////////////////////////////////////////////////////////////////////
//左上
//////////////////////////////////////////////////////////////////////
if (i != 0 && j != 0) {
//如果不为第一列或第一列,则向左上搜索
if (matrix[i - 1][j - 1] == ( -1) * side) {
//说明在“左上”这个方向是对方的棋子,则还有检索下去的必要
for (int m = i - 2, n = j - 2; m >= 0 && n >= 0; m--,
n--) {
if (matrix[m][n] == side) {
break;
//如果"遭遇"相同的棋子,这个方向就停止搜索,跳出
} else if (matrix[m][n] % 2 == 0) {
matrix[m][n] += 2;
objectPlaces++;
break;
//如果出现“空格”,就修改其matrix的值,以供repaint()画"X"时使用
} else if (matrix[m][n] == ( -1) * side) {
//如果仍为与当前棋子不同颜色的棋子,则继续往下走
}
}
}
}
//////////////////////////////////////////////////////////////////////
//右上
//////////////////////////////////////////////////////////////////////
if (i != 0 && j != 7) {
//如果不为最后一列或第一行,则向右上搜索
if (matrix[i - 1][j + 1] == ( -1) * side) {
//说明在“右上”这个方向是对方的棋子,则还有检索下去的必要
for (int m = i - 2, n = j + 2; m >= 0 && n <= 7; m--,
n++) {
if (matrix[m][n] == side) {
break;
//如果"遭遇"相同的棋子,这个方向就停止搜索,跳出
} else if (matrix[m][n] % 2 == 0) {
matrix[m][n] += 2;
objectPlaces++;
break;
//如果出现“空格”,就修改其matrix的值,以供repaint()画"X"时使用
} else if (matrix[m][n] == ( -1) * side) {
//如果仍为与当前棋子不同颜色的棋子,则继续往下走
}
}
}
}
//////////////////////////////////////////////////////////////////////
//左下
//////////////////////////////////////////////////////////////////////
if (i != 7 && j != 0) {
//如果不为最后一行或第一列,则向左下搜索
if (matrix[i + 1][j - 1] == ( -1) * side) {
//说明在“左下”这个方向是对方的棋子,则还有检索下去的必要
for (int m = i + 2, n = j - 2; m <= 7 && n >= 0; m++,
n--) {
if (matrix[m][n] == side) {
break;
//如果"遭遇"相同的棋子,这个方向就停止搜索,跳出
} else if (matrix[m][n] % 2 == 0) {
matrix[m][n] += 2;
objectPlaces++;
break;
//如果出现“空格”,就修改其matrix的值,以供repaint()画"X"时使用
} else if (matrix[m][n] == ( -1) * side) {
//如果仍为与当前棋子不同颜色的棋子,则继续往下走
}
}
}
}
//////////////////////////////////////////////////////////////////////
//右下
//////////////////////////////////////////////////////////////////////
if (i != 7 && j != 7) {
//如果不为最后一列或最后一列,则向右下搜索
if (matrix[i + 1][j + 1] == ( -1) * side) {
//说明在“右下”这个方向是对方的棋子,则还有检索下去的必要
for (int m = i + 2, n = j + 2; m <= 7 && n <= 7; m++,
n++) {
if (matrix[m][n] == side) {
break;
//如果"遭遇"相同的棋子,这个方向就停止搜索,跳出
} else if (matrix[m][n] % 2 == 0) {
matrix[m][n] += 2;
objectPlaces++;
break;
//如果出现“空格”,就修改其matrix的值,以供repaint()画"X"时使用
} else if (matrix[m][n] == ( -1) * side) {
//如果仍为与当前棋子不同颜色的棋子,则继续往下走
}
}
}
}
//////////////////////////////////////////////////////////////////////
}
}
}
}
/*paint()方法,要求必须导入AWT包*/
public void paint(Graphics g) {
//画图方法:注意,整个窗口的原点是( 0 , 0 ),而棋盘的原点是( dx , dy )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -