設計一個10*10的棋盤:
行號、列號單獨輸出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
package yu; import java.util.Scanner; public class WuZiQi { /*● 棋子1 ○ 棋子2 * */ public static void main(String[] args) { // TODO Auto-generated method stub String [] [] qipan= new String [ 10 ] [ 10 ]; //初始化棋盤: for ( int k= 0 ;k<qipan.length;k++){ for ( int q= 0 ;q<qipan[k].length;q++){ qipan[k][q]= "+ " ; } } //輸出棋盤: System.out.print( " " ); for ( int i= 0 ;i< 10 ;i++){ System.out.print(i+ " " ); } System.out.println(); for ( int k= 0 ;k<qipan.length;k++){ System.out.print(k+ " " ); for ( int q= 0 ;q<qipan[k].length;q++){ System.out.print(qipan[k][q]); } System.out.println(); } |
輸入坐標下棋(x,y),并作容錯處理:
- 保證輸入的坐標是(x,y);
- 下標越界處理;
- 判斷此坐標有無棋子;
- 確保坐標輸入為數字。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
int x,y; //儲存下棋坐標: Scanner sc= new Scanner(System.in); boolean flag= true ; //區分黑白棋; while ( true ){ System.out.println( "請輸入坐標下棋,坐標格式(x,y)" ); String str=sc.nextLine(); String [] str1=str.split( "," ); //容錯處理1 if (str1.length!= 2 ){ System.out.println( "坐標輸入錯誤,請重新輸入!!" ); } else { //容錯處理3 try { x=Integer.parseInt(str1[ 0 ]); y=Integer.parseInt(str1[ 1 ]); } catch (Exception e){ System.out.println( "坐標輸入錯誤,請重新輸入!!" ); continue ; } //容錯處理2--下標越界 if (x>= 10 ||y>= 10 ){ System.out.println( "坐標輸入錯誤,請重新輸入!!" ); } else { //容錯處理--判斷當前位置是否有棋子: //黑白棋: if (qipan[x][y].equals( "+ " )){ if (flag){ qipan[x][y]= "● " ; } else { qipan[x][y]= "○ " ; } flag=!flag; } else { System.out.println( "當前位置已有棋子,請重新輸入坐標!!" ); continue ; } //輸出棋盤: System.out.print( " " ); for ( int i= 0 ;i< 10 ;i++){ System.out.print(i+ " " ); } System.out.println(); for ( int k= 0 ;k<qipan.length;k++){ System.out.print(k+ " " ); for ( int q= 0 ;q<qipan[k].length;q++){ System.out.print(qipan[k][q]); } System.out.println(); } |
判斷是否五子連珠:
8個方向,4條線
- 上方&下方
- 左方&右方
- 左斜上&右斜下
- 右斜上&左斜下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
//判斷是否五子連珠: int count= 1 ; String currentZiQi=qipan[x][y]; //儲存當前下的棋子; //判斷上方: for ( int k=x- 1 ;k>= 0 ;k--){ if (qipan[k][y].equals(currentZiQi)){ count++; } else { break ; } } if (count>= 5 ){ System.out.println(currentZiQi+ "獲勝!!!" ); break ; } //判斷下方: for ( int k=x+ 1 ;k< 10 ;k++){ if (qipan[k][y].equals(currentZiQi)){ count++; } else { break ; } } if (count>= 5 ){ System.out.println(currentZiQi+ "獲勝!!!" ); break ; } count= 1 ; //重置count; //判斷左邊: for ( int k=y- 1 ;k>= 0 ;k--){ if (qipan[x][k].equals(currentZiQi)){ count++; } else { break ; } } if (count>= 5 ){ System.out.println(currentZiQi+ "獲勝!!!" ); break ; } //判斷右邊: for ( int k=y+ 1 ;k< 10 ;k++){ if (qipan[x][k].equals(currentZiQi)){ count++; } else { break ; } } if (count>= 5 ){ System.out.println(currentZiQi+ "獲勝!!!" ); break ; } count= 1 ; //判斷左上斜邊: for ( int k=x- 1 ,j=y- 1 ;k>= 0 &&j>= 0 ;k--,j--){ if (qipan[k][j].equals(currentZiQi)){ count++; } else { break ; } } if (count>= 5 ){ System.out.println(currentZiQi+ "獲勝!!!" ); break ; } //右下斜方: for ( int k=x+ 1 ,j=y+ 1 ;k< 10 &&j< 10 ;k++,j++){ if (qipan[k][j].equals(currentZiQi)){ count++; } else { break ; } } if (count>= 5 ){ System.out.println(currentZiQi+ "獲勝!!!" ); break ; } count= 1 ; //左下斜方: for ( int k=x- 1 ,j=y+ 1 ;k>= 0 &&j< 10 ;k--,j++){ if (qipan[k][j].equals(currentZiQi)){ count++; } else { break ; } } if (count>= 5 ){ System.out.println(currentZiQi+ "獲勝!!!" ); break ; } //右上斜方: for ( int k=x+ 1 ,j=y- 1 ;k< 10 &&j>= 0 ;k++,j--){ if (qipan[k][j].equals(currentZiQi)){ count++; } else { break ; } } if (count>= 5 ){ System.out.println(currentZiQi+ "獲勝!!!" ); break ; } count= 1 ; } } } } } |
總結
到此這篇關于Java控制臺版五子棋的簡單實現方法的文章就介紹到這了,更多相關Java控制臺版五子棋內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/m0_53246877/article/details/113333770