/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package server;
import java.util.Scanner;
/**
*
* @author zk
*/
public class Chess {
public boolean Try(int x, int y, int sign, int[][] map) {
//尝试位置
if (map[x][y] == 0) {
for (int i = -1; i < 2; i++) {
for (int k = -1; k < 2; k++) {
if (x + i < 0 || x + i > 7 || y + k < 0 || y + k > 7) {
continue;
} else if (map[x + i][y + k] == (-sign)) {
if (trynext(x + i, y + k, i, k, sign, map)) {
return true;
}
}
}
}
}
return false;
}
private boolean trynext(int x, int y, int i, int k, int sign, int[][] map) {
//为尝试提供递归方法
if (x + i < 0 || x + i > 7 || y + k < 0 || y + k > 7 || map[x + i][y + k] == 0) {
return false;
} else if (map[x + i][y + k] == sign) {
return true;
} else if (map[x + i][y + k] == (-sign)) {
if (trynext(x + i, y + k, i, k, sign, map)) {
return true;
}
}
return false;
}
public void move(int a, int b, int c, int[][] map) {//走棋
//System.out.println("move");
for (int i = -1; i <= 1; i++) {
for (int k = -1; k <= 1; k++) {
if (a + i < 0 || a + i > 7 || b + k < 0 || b + k > 7) {
continue;
}
if (map[a + i][b + k] == (-c)) {
if (next(a + i, b + k, i, k, c, map)) {
map[a][b] = c;
}
}
}
}
}
public boolean next(int a, int b, int i, int k, int c, int[][] map) {//沿此方向是否有本色棋子
if (a + i < 0 || a + i > 7 || b + k < 0 || b + k > 7 || map[a + i][b + k] == 0) {
return false;
} else if (map[a + i][b + k] == c) {
map[a][b] = c;
return true;
} else if (map[a + i][b + k] == (-c)) {
int x = a + i;
int y = b + k;
next(x, y, i, k, c, map);
}
if (next(a + i, b + k, i, k, c, map)) {
map[a][b] = c;
return true;
}
return false;
}
public boolean search(int sign, int[][] map) {
for (int i = 0; i < 8; i++) {
for (int k = 0; k < 8; k++) {
if (Try(i, k, sign, map)) {
return true;
}
}
}
return false;
}
}