国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Java實現五子棋的基礎方法

瀏覽:36日期:2022-08-25 15:25:09

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

任務概述:

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

任務過程:

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

重點講解:

1.關于勝利的判斷:

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

2.關于棋盤下滿:

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

其余內容在代碼上有詳細的注釋,以下為代碼:

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;//用來儲存要下棋的行數 int column = 0;//用來儲存要下棋的列數 int win = 0;//用來儲存獲勝者編號,為0則雙方均未獲勝,為1則白方獲勝,為2則黑方獲勝 int count1 = 0;//用來儲存當前下棋位置左右各4顆棋子的相同數量 int count2 = 0;//用來儲存當前下棋位置上下各4顆棋子的相同數量 int count3 = 0;//用來儲存當前下棋位置左上右下各4顆棋子的相同數量 int count4 = 0;//用來儲存當前下棋位置左下右上各4顆棋子的相同數量 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軸賦值 } //開始下棋,無限循環直到有一方勝利或棋盤下滿 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) {//棋盤自始至終未有空值,則認為棋盤已經下滿 System.out.print('棋盤已下滿,雙方平局,游戲結束!'); break;//跳出循環 } //棋盤未滿,進入下棋過程 if(order == 1) {//order為1黑方下棋 order = 2;//切換order,下一次則白方下棋 //無限循環直到下棋點可以正常下棋 while(true) { System.out.println('請黑方下棋,請先輸入X軸位置(列數,1-15):'); column = scanner.nextInt();//儲存要下棋的列數 System.out.println('請黑方下棋,請輸入Y軸位置(行數,1-15):'); row = scanner.nextInt();//儲存要下棋的行數 if(board[row][column] != 0)//下棋點已有棋子,需重新下棋 System.out.println('此次下棋無效,請重新下棋!'); else { board[row][column] = 1;//放置黑棋 break;//跳出循環 } } } else {//order為2白方下棋 order = 1;//切換order,下一次則黑方下棋 //無限循環直到下棋點可以正常下棋 while(true) { System.out.println('請白方下棋,請先輸入X軸位置(列數,1-15):'); column = scanner.nextInt();//儲存要下棋的列數 System.out.println('請白方下棋,請輸入Y軸位置(行數,1-15):'); row = scanner.nextInt();//儲存要下棋的行數 if(board[row][column] != 0)//下棋點已有棋子,需重新下棋 System.out.println('此次下棋無效,請重新下棋!'); else { board[row][column] = 2;//放置白棋 break;//跳出循環 } } } //本次下棋完畢,判斷是否有人獲勝 for(int i = -4;i < 4;i++) { //判斷當前下棋位置左右各4顆棋子的相同數量,連續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) {//連續4組相同,獲勝 win = order; break; } } else count1 = 0;//未連續相同,清除相同計數 } //判斷當前下棋位置上下各4顆棋子的相同數量,連續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) {//連續4組相同,獲勝 win = order; break; } } else count2 = 0;//未連續相同,清除相同計數 } //判斷當前下棋位置左上右下各4顆棋子的相同數量,連續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) {//連續4組相同,獲勝 win = order; break; } } else count3 = 0;//未連續相同,清除相同計數 } //判斷當前下棋位置左下右上各4顆棋子的相同數量,連續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) {//連續4組相同,獲勝 win = order; break; } } else count4 = 0;//未連續相同,清除相同計數 } } //有人獲勝,輸出棋盤及獲勝者,跳出循環 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('恭喜黑方獲勝,游戲結束!'); break;//跳出循環 } 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('恭喜白方獲勝,游戲結束!'); break;//跳出循環 } //無人獲勝,清除相同棋子計數,開始新循環 count1 = 0; count2 = 0; count3 = 0; count4 = 0; full = 1;//再次認為棋盤已滿 } }}

更多有趣的經典小游戲實現專題,分享給大家:

C++經典小游戲匯總

python經典小游戲匯總

python俄羅斯方塊游戲集合

JavaScript經典游戲 玩不停

javascript經典小游戲匯總

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 精品久久香蕉国产线看观看亚洲 | 国产在线欧美精品 | 久久亚洲精品中文字幕亚瑟 | 成人在线91 | 武松金莲肉体交战在线观看 | 一区二区中文字幕在线观看 | 波多野结衣免费视频观看 | 色拍拍噜噜噜aⅴ在线观看 色青青草原桃花久久综合 色婷婷91 | 久久爱噜噜噜噜久久久网 | 免费区欧美一级毛片精品 | 国产一区二区高清在线 | 色站综合 | aaa毛片免费观看 | 日韩精品午夜视频一区二区三区 | 亚洲rct中文字幕在线 | 99爱在线视频这里只有精品 | 美女黄页网站 | 久久爱www成人 | 日日爽夜夜操 | 在线男人的天堂 | 免费看 s色| 国内精品伊人久久久久妇 | 久久黄色视屏 | 欧美一级人与动毛片免费播放 | 国产麻豆一级在线观看 | 午夜宅宅宅影院在线观看 | 亚洲综合精品成人 | 亚洲欧美在线看 | 99精品国产在热久久 | 成年人午夜网站 | 中文字幕s级优女区 | 在线观看免费a∨网站 | 丝袜一级片 | 性盈盈影院影院67194 | 成人毛片1024你懂的 | 国产色a| 亚洲一区2区三区4区5区 | 色偷偷亚洲第一成人综合网址 | 精品玖玖玖视频在线观看 | 成人自拍视频网站 | 日韩欧美不卡在线 |