java五子棋胜负判定_五子棋的判断输赢规则—Java编程(简单优化完整版)
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 ? ? }
總結
以上是生活随笔為你收集整理的java五子棋胜负判定_五子棋的判断输赢规则—Java编程(简单优化完整版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 同样是面试简历,为何你如此风骚!
- 下一篇: oracle varchar2转date