国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java實現(xiàn)五子棋的基礎(chǔ)方法

Java實現(xiàn)五子棋的基礎(chǔ)方法

2020-09-04 00:20MSJ_743579531 Java教程

這篇文章主要為大家詳細介紹了Java實現(xiàn)五子棋的基礎(chǔ)方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Java實現(xiàn)五子棋的具體代碼,供大家參考,具體內(nèi)容如下

任務(wù)概述:

五子棋是全國智力運動會競技項目之一,是一種兩人對弈的純策略型棋類游戲。通常雙方分別使用黑白兩色的棋子,下在棋盤直線與橫線的交叉點上,先形成五子連線者獲勝。

任務(wù)過程:

1.繪制棋盤
2.提示黑方(用 1 表示)和白方(用 2 表示)分別下棋(X,Y 軸位置)并重新繪制棋盤
3.每當一方下棋后判斷是否獲勝

重點講解:

1.關(guān)于勝利的判斷:

根據(jù)用戶所下棋子的位置對其周圍進行檢測,分為以下情況:
橫向:當前下棋位置左右各4顆棋子連續(xù)相同5顆
豎向:當前下棋位置上下各4顆棋子連續(xù)相同5顆
斜向:當前下棋位置左上右下各4顆棋子連續(xù)相同5顆、當前下棋位置左下右上各4顆棋子連續(xù)相同5顆
在檢測時要注意數(shù)組的下標,若用戶下棋位置處于棋盤邊緣,則周圍坐標很可能已經(jīng)在棋盤之外,要注意加上相應(yīng)的判斷避免下標越界!

2.關(guān)于棋盤下滿:

我的思路是,先認為棋盤已經(jīng)下滿,然后在打印棋盤的同時,若當前打印值為0,則認為棋盤未滿,可繼續(xù)下棋操作,若棋盤已經(jīng)打印完畢,仍然沒有打印值為0的情況,則認為棋盤下滿,雙方平局,游戲結(jié)束。

其余內(nèi)容在代碼上有詳細的注釋,以下為代碼:

?
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
import java.util.Scanner;
 
public class Chess {
 
 public static void main(String[] args) {
 Scanner scanner = new Scanner(System.in);
 int order = 1;//儲存順序,當order為1時輪到黑方下棋,當order為2時輪到白方下棋
 int row = 0;//用來儲存要下棋的行數(shù)
 int column = 0;//用來儲存要下棋的列數(shù)
 int win = 0;//用來儲存獲勝者編號,為0則雙方均未獲勝,為1則白方獲勝,為2則黑方獲勝
 int count1 = 0;//用來儲存當前下棋位置左右各4顆棋子的相同數(shù)量
 int count2 = 0;//用來儲存當前下棋位置上下各4顆棋子的相同數(shù)量
 int count3 = 0;//用來儲存當前下棋位置左上右下各4顆棋子的相同數(shù)量
 int count4 = 0;//用來儲存當前下棋位置左下右上各4顆棋子的相同數(shù)量
 int full = 1;//用來判斷棋盤是否下滿,默認值1認為已滿,只要有1處空則置0
 int board[][] = new int[16][16];//用來記錄棋盤
 
 //為棋盤的坐標賦值
 for(int i = 0;i<16;i++) {
  board[i][0] = i;//為棋盤的Y軸賦值
 }
 for(int j = 0;j<16;j++) {
  board[0][j] = j;//為棋盤的X軸賦值
 }
 
 //開始下棋,無限循環(huán)直到有一方勝利或棋盤下滿
 while(true) {
  
  //首先輸出棋盤
  for(int i = 0;i<16;i++) {
  for(int j = 0;j<16;j++) {
   if(board[i][j] == 0)//若棋盤有1處空則認為棋盤未滿
   full = 0;
   System.out.print(board[i][j]+"\t");
  }
  System.out.println();
  }
  
  //然后判斷棋盤是否下滿
  if(full == 1) {//棋盤自始至終未有空值,則認為棋盤已經(jīng)下滿
  System.out.print("棋盤已下滿,雙方平局,游戲結(jié)束!");
  break;//跳出循環(huán)
  }
  
  //棋盤未滿,進入下棋過程
  if(order == 1) {//order為1黑方下棋
  order = 2;//切換order,下一次則白方下棋
  //無限循環(huán)直到下棋點可以正常下棋
  while(true) {
   System.out.println("請黑方下棋,請先輸入X軸位置(列數(shù),1-15):");
   column = scanner.nextInt();//儲存要下棋的列數(shù)
   System.out.println("請黑方下棋,請輸入Y軸位置(行數(shù),1-15):");
   row = scanner.nextInt();//儲存要下棋的行數(shù)
   if(board[row][column] != 0)//下棋點已有棋子,需重新下棋
   System.out.println("此次下棋無效,請重新下棋!");
   else {
   board[row][column] = 1;//放置黑棋
   break;//跳出循環(huán)
   }
  }
  }
  else {//order為2白方下棋
  order = 1;//切換order,下一次則黑方下棋
  //無限循環(huán)直到下棋點可以正常下棋
  while(true) {
   System.out.println("請白方下棋,請先輸入X軸位置(列數(shù),1-15):");
   column = scanner.nextInt();//儲存要下棋的列數(shù)
   System.out.println("請白方下棋,請輸入Y軸位置(行數(shù),1-15):");
   row = scanner.nextInt();//儲存要下棋的行數(shù)
   if(board[row][column] != 0)//下棋點已有棋子,需重新下棋
   System.out.println("此次下棋無效,請重新下棋!");
   else {
   board[row][column] = 2;//放置白棋
   break;//跳出循環(huán)
   }
  }
  }
  
  //本次下棋完畢,判斷是否有人獲勝
  for(int i = -4;i < 4;i++) {
  
  //判斷當前下棋位置左右各4顆棋子的相同數(shù)量,連續(xù)4組相同則獲勝
  if(column+i>0 && column+i+1<16) {//防止下標越界
   if(board[row][column+i] == board[row][column+i+1] && board[row][column+i] != 0) {
   count1++;
   if(count1 == 4) {//連續(xù)4組相同,獲勝
    win = order;
    break;
   }
   }
   else
   count1 = 0;//未連續(xù)相同,清除相同計數(shù)
  }
  
  //判斷當前下棋位置上下各4顆棋子的相同數(shù)量,連續(xù)4組相同則獲勝
  if(row+i>0 && row+i+1<16) {//防止下標越界
   if(board[row+i][column] == board[row+i+1][column] && board[row+i][column] != 0) {
   count2++;
   if(count2 == 4) {//連續(xù)4組相同,獲勝
    win = order;
    break;
   }
   }
   else
   count2 = 0;//未連續(xù)相同,清除相同計數(shù)
  }
  
  //判斷當前下棋位置左上右下各4顆棋子的相同數(shù)量,連續(xù)4組相同則獲勝
  if(column+i>0 && column+i+1<16 && row+i>0 && row+i+1<16) {//防止下標越界
   if(board[row+i][column+i] == board[row+i+1][column+i+1] && board[row+i][column+i] != 0) {
   count3++;
   if(count3 == 4) {//連續(xù)4組相同,獲勝
    win = order;
    break;
   }
   }
   else
   count3 = 0;//未連續(xù)相同,清除相同計數(shù)
  }
  
  //判斷當前下棋位置左下右上各4顆棋子的相同數(shù)量,連續(xù)4組相同則獲勝
  if(column+i>0 && column+i+1<16 && row-i-1>0 && row-i<16) {//防止下標越界
   if(board[row-i][column+i] == board[row-i-1][column+i+1] && board[row-i][column+i] != 0) {
   count4++;
   if(count4 == 4) {//連續(xù)4組相同,獲勝
    win = order;
    break;
   }
   }
   else
   count4 = 0;//未連續(xù)相同,清除相同計數(shù)
  }
  
  }
  
  //有人獲勝,輸出棋盤及獲勝者,跳出循環(huán)
  if(win == 2) {//由于win是order的值,order輪到白方,說明黑方獲勝
  //輸出棋盤
  for(int i = 0;i<16;i++) {
   for(int j = 0;j<16;j++) {
   System.out.print(board[i][j]+"\t");
   }
   System.out.println();
  }
  System.out.println("恭喜黑方獲勝,游戲結(jié)束!");
  break;//跳出循環(huán)
  }
  else if(win == 1) {//由于win是order的值,order輪到黑方,說明白方獲勝
  //輸出棋盤
  for(int i = 0;i<16;i++) {
   for(int j = 0;j<16;j++) {
   System.out.print(board[i][j]+"\t");
   }
   System.out.println();
  }
  System.out.println("恭喜白方獲勝,游戲結(jié)束!");
  break;//跳出循環(huán)
  }
  
  //無人獲勝,清除相同棋子計數(shù),開始新循環(huán)
  count1 = 0;
  count2 = 0;
  count3 = 0;
  count4 = 0;
  full = 1;//再次認為棋盤已滿
 
 }
 }
 
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/qq_35221384/article/details/108347818

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 秋霞成人| 亚洲精品国产综合区久久久久久久 | www.国产精品 | 国产精品日韩在线观看 | 国产专区在线看 | 国产精品久久久久久久久久久久久 | 中文字幕免费观看 | 先锋影音男人 | 国产亚洲精品久久久久久久 | 精品久久一区二区三区 | 看av网站 | 免费一级片视频 | 亚洲精品视频在线 | 成人精品久久久 | 欧美亚洲一区二区三区 | 亚洲三区在线观看 | 欧美欧美欧美 | 69久久夜色精品国产69乱www | 日韩av一级片 | 日韩精品一区不卡 | 色噜噜狠狠狠综合曰曰曰88av | 午夜影院在线观看 | 亚洲三级在线观看 | 在线播放黄 | 欧美国产精品一区二区三区 | 黄色av免费在线播放 | 麻豆国产免费 | 在线观看国产中文字幕 | 精品久久久久久久久久久 | 成人三区 | 中文在线一区二区三区 | 日本天天操 | 欧美日韩久久精品 | 国产九九九 | 国产日韩精品入口 | 成人午夜精品一区二区三区 | 久久久综合视频 | 一级毛片视频 | 久久精品中文字幕大胸 | 欧美日韩在线电影 | 亚洲国产精品久久久久秋霞蜜臀 |