1 public boolean isWon2(int x, int y, char color) {
2 int count = 1; //本身一点为 1
3 int posX = 0;
4 int posY = 0;
5 /**判断水平方向上的胜负
6 /* 将水平方向以传入的点x上的y轴作为分隔线分为两部分
7 * 先向左边遍历,判断到的相同的连续的点 count++
8 */
9 for(posX = x - 1; posX > 0 ; posX--) {
10 if (board[posX][y] == color) {
11 count++;
12 if (count >= 5) {
13 return true;
14 }
15 }else {
16 break;
17 }
18 } //向右边遍历
19 for(posX = x + 1; posX <= 15; posX++) {
20 if (board[posX][y] == color) {
21 count++;
22 if (count >= 5) {
23 return true;
24 }
25 }else {
26 break;
27 }
28 }
29 /**判断垂直方向上的胜负
30 /* 将垂直方向以传入的点y上的x轴作为分隔线分为两部分
31 * 先向上遍历,判断到的相同的连续的点 count++
32 */
33 for(posY = y - 1; posY > 0; posY--) {
34 if (board[x][posY] == color) {
35 count++;
36 if (count >= 5) {
37 return true;
38 }
39 }else {
40 break;
41 }
42 }//向下遍历
43 for(posY = y + 1; posY <= 15; posY++) {
44 if (board[x][posY] == color) {
45 count++;
46 if (count >= 5) {
47 return true;
48 }
49 }else {
50 break;
51 }
52 }
53 /**判断左上右下方向上的胜负
54 * 以坐标点为分割线,将棋盘分为左右两个等腰三角形
55 * 先判断左边的
56 */
57 for(posX = x - 1, posY = y - 1; posX > 0 && posY > 0; posX--, posY--) {
58 if (board[posX][posY] == color) {
59 count++;
60 if (count >= 5) {
61 count = 1;
62 return true;
63 }
64 }else {
65 break;
66 }
67 }//判断右边的
68 for(posX = x + 1, posY = y + 1; posX <= 15 && posY <= 15; posX++, posY++) {
69 if (board[posX][posY] == color) {
70 count++;
71 if (count >= 5) {
72 count = 1;
73 return true;
74 }
75 }else {
76 break;
77 }
78 }
79 /**判断右下左下方向上的胜负
80 * 以坐标点为分割线,将棋盘分为左右两个等腰三角形
81 * 先判断左边的
82 */
83 for(posX = x + 1, posY = y - 1; posX <= 15 && posY > 0; posX++, posY--) {
84 if (board[posX][posY] == color) {
85 count++;
86 if (count >= 5) {
87 return true;
88 }
89 }else {
90 break;
91 }
92 }//判断右边的
93 for(posX = x - 1, posY = y + 1; posX > 0 && posY <= 15; posX--, posY++) {
94 if (board[posX][posY] == color) {
95 count++;
96 if (count >= 5) {
97 return true;
98 }
99 }else {
100 break;
101 }
102 }
103 return false;
104 }