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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java控制臺(tái)版實(shí)現(xiàn)五子棋游戲

瀏覽:2日期:2022-08-19 08:50:59

控制臺(tái)實(shí)現(xiàn)五子棋游戲,供大家參考,具體內(nèi)容如下

控制臺(tái)打印棋盤 編寫兩人對(duì)弈的五子棋游戲,游戲規(guī)則:黑白雙方有一方首先實(shí)現(xiàn)五子連續(xù),則獲勝,游戲結(jié)束。

java控制臺(tái)版實(shí)現(xiàn)五子棋游戲

代碼:

import java.util.Scanner;public class Wuziqi { //自定義二維數(shù)組來(lái)描述棋盤,默認(rèn)初始值為0 int[][] chessBoard = new int[16][16]; //自定義成員方法來(lái)繪制棋盤 void paint(){ //1.先繪制棋盤中第一行的坐標(biāo)信息,也就是列坐標(biāo)信息 for (int i = 0; i < 17; i++) { if( 0 == i){System.out.println(' '); }else {//按照16進(jìn)制打印i-1的數(shù)值System.out.printf('%x ' , i - 1); } } System.out.println(); //2.繪制棋盤中除了第一行之外的其他部分以及行坐標(biāo)信息 for (int i = 0; i < 16; i++) { //用于打印行坐標(biāo)信息 System.out.printf('%x ', i); for (int j = 0; j < 16; j++) {//剛開始棋盤中所有內(nèi)容都是+ , 因此直接打印if (0 == chessBoard[i][j]){ System.out.print('+ ');} else if (1 == chessBoard[i][j]){ System.out.print('● ');}else { System.out.print('○ ');} } //打印完一行的所有內(nèi)容之后進(jìn)行換行 System.out.println(); } } //自定義成員方法來(lái)提示黑方和白方分別下棋 void play(){ //定義標(biāo)志位來(lái)進(jìn)行黑方和白方的切換,true代表黑方,false代表白方 boolean flag = true; //不斷地分別提示黑方和白方下棋 while(true){ System.out.println('請(qǐng)' + (flag ? '黑方' : '白方') + '輸入落子坐標(biāo)(x,y):'); Scanner sc = new Scanner(System.in); int x = sc.nextInt(); int y = sc.nextInt(); //根據(jù)用戶輸入的坐標(biāo)來(lái)調(diào)整棋盤中的圖案,策略為改變數(shù)值的元素值, //當(dāng)黑子落子時(shí)就將數(shù)組中對(duì)應(yīng)的元素值改為1,當(dāng)白方落子時(shí)就將數(shù)組中對(duì)應(yīng)的元素改為2 chessBoard[x][y] = (flag ? 1 : 2); //重新繪制圖案 paint(); //判斷當(dāng)前方是否勝利,若勝利就結(jié)束游戲 if (Success(x, y)) {System.out.println('恭喜' + (flag ? '黑方' : '白方') + '勝利了!');break; } // 此時(shí)切換下棋方 flag = !flag; } } //自定義成員方法來(lái)判斷用戶是否獲勝,獲勝的規(guī)則時(shí):任意相同顏色的5個(gè)棋子連成一條線 boolean Success(int x, int y){ //1.判斷豎向是否連成一線,則需要以該點(diǎn)為中心向上四個(gè)點(diǎn)向下四個(gè)點(diǎn) //聲明變量來(lái)統(tǒng)計(jì)豎向相同顏色棋子的個(gè)數(shù),先統(tǒng)計(jì)向上同色棋子的個(gè)數(shù) //先統(tǒng)計(jì)向上顏色相同的個(gè)數(shù) int count = 1; for (int i = x - 1; i >= 0; i--) { //若當(dāng)前點(diǎn)代表的棋子與上述某個(gè)點(diǎn)代表的棋子不一樣,則向上統(tǒng)計(jì)結(jié)束 if (chessBoard[x][y] != chessBoard[i][y]){break; } count++; } //再統(tǒng)計(jì)向下顏色相同的個(gè)數(shù) for (int i = x + 1; i < chessBoard.length; i++) { if (chessBoard[x][y] != chessBoard[i][y]){break; } count++; } if (5 == count){ return true; } //2.判斷橫向是否連成一條線,則需要以該店為中心向左四個(gè)點(diǎn)向右四個(gè)點(diǎn) count = 1; //先統(tǒng)計(jì)向左顏色相同的個(gè)數(shù) for (int j = y - 1; j >= 0; j--) { //若當(dāng)前點(diǎn)代表的棋子與上述某個(gè)點(diǎn)代碼的棋子不一樣,則向上統(tǒng)計(jì)結(jié)束 if (chessBoard[x][y] != chessBoard[x][j]) {break; } count++; } //再統(tǒng)計(jì)向右顏色相同的個(gè)數(shù) for (int j = y + 1; j < chessBoard.length; j++) { if(chessBoard[x][y] != chessBoard[x][j]){break; } count++; } if (5 == count){ return true; } // 3.判斷左上到右下是否連成一線,則需要以該點(diǎn)為中心向左上四個(gè)點(diǎn)向右下四個(gè)點(diǎn) count = 1; // 先統(tǒng)計(jì)左上顏色相同的個(gè)數(shù) for (int i = x-1, j = y - 1; i >= 0 && j >= 0; i--, j--) { // 若當(dāng)前點(diǎn)代表的棋子與上述某個(gè)點(diǎn)代表的棋子不一樣,則向上統(tǒng)計(jì)結(jié)束 if (chessBoard[x][y] != chessBoard[i][j]) {break; } count++; } // 再統(tǒng)計(jì)右下顏色相同的個(gè)數(shù) for (int i = x+1, j = y + 1; i <= 15 && j <= 15; i++, j++) { if (chessBoard[x][y] != chessBoard[i][j]) {break; } count++; } if (5 == count) { return true; } // 4.判斷右上到左下是否連成一線,則需要以該點(diǎn)為中心向右上四個(gè)點(diǎn)向左下四個(gè)點(diǎn) count = 1; // 先統(tǒng)計(jì)右上顏色相同的個(gè)數(shù) for (int i = x-1, j = y + 1; i >= 0 && j <= 15; i--, j++) { // 若當(dāng)前點(diǎn)代表的棋子與上述某個(gè)點(diǎn)代表的棋子不一樣,則向上統(tǒng)計(jì)結(jié)束 if (chessBoard[x][y] != chessBoard[i][j]) {break; } count++; } // 再統(tǒng)計(jì)左下顏色相同的個(gè)數(shù) for (int i = x+1, j = y - 1; i <= 15 && j >= 0; i++, j--) { if (chessBoard[x][y] != chessBoard[i][j]) {break; } count++; } if (5 == count) { return true; } // 當(dāng)上述所有情況都不成立時(shí),表示該下棋方?jīng)]有獲勝 return false; }}

public class WuziqiTest { public static void main(String[] args) { //聲明一個(gè)Wuziqi類型的引用指向Wuziqi類型的對(duì)象 Wuziqi wz = new Wuziqi(); //調(diào)用paint()方法打印列信息 wz.paint(); //下棋開始 wz.play(); }}

結(jié)果如下

java控制臺(tái)版實(shí)現(xiàn)五子棋游戲

文中沒(méi)有對(duì)下棋時(shí)候的數(shù)組下標(biāo)進(jìn)行合理值判斷,各位可自行完善。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 毛片在线全部免费观看 | 免费福利在线看黄网站 | 日韩在线视频网址 | 一级成人a免费视频 | 成人欧美在线观看 | 欧美成人26uuu欧美毛片 | 欧美激情视频一级视频一级毛片 | 91最新91精品91蝌蚪 | 毛片在线全部免费观看 | 99视频免费在线观看 | 日韩免费观看一级毛片看看 | 精品在线一区二区 | 国产成人久久精品 | 精品国产高清a毛片无毒不卡 | 黄色美女视频免费 | 欧美做a一级视频免费观看 欧美做爱毛片 | 欧美巨大精品videos | 网红主播大尺度精品福利视频 | 免费一级a毛片在线播放 | 97欧美精品一区二区三区 | 精品日本亚洲一区二区三区 | 国产一级片播放 | 久久免费小视频 | 日本一级高清不卡视频在线 | 国产三级精品最新在线 | 一区二区三区成人 | 美女张开腿让男人桶爽免 | 天天看片天天爽_免费播放 天天看夜夜 | 亚洲欧洲一级 | 女人张开腿男人猛桶视频 | 日韩视频网 | 久久久久久亚洲精品不卡 | 欧美激情久久久久久久大片 | 在线日韩欧美一区二区三区 | 欧美区在线 | 日本午夜vr影院新入口 | 免费观看亚洲视频 | 亚洲人成综合 | 日本欧美色 | 久久99精品久久久久久久不卡 | 国产欧美日韩一区二区三区 |