最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java五子棋簡(jiǎn)單實(shí)現(xiàn)代碼舉例

 更新時(shí)間:2024年10月02日 09:31:06   作者:杰克尼  
Java五子棋游戲是一種經(jīng)典的兩人對(duì)戰(zhàn)棋類游戲,它基于簡(jiǎn)單的規(guī)則,即任何一方的棋子在棋盤上形成連續(xù)的五個(gè),無論是橫、豎還是斜線,都將獲勝,這篇文章主要介紹了Java五子棋實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下

一:案例要求:

實(shí)現(xiàn)一個(gè)控制臺(tái)下五子棋的程序。用一個(gè)二維數(shù)組模擬一個(gè)15*15路的五子棋棋盤,把每個(gè)元素賦值位“┼”可以畫出棋盤, “○”代表該交叉點(diǎn)下了一顆白棋子,“●”代表該交叉點(diǎn)下了一顆黑棋子。每次用戶輸入要下棋的坐標(biāo),然后程序顯示出下完后的棋盤,默認(rèn)黑子先行。(選做)

二:代碼:

package ceshi;

import java.util.Scanner;

public class test {
    static Scanner sc =new Scanner(System.in);
    public static void main(String[] args) {
        char[][] qipan=new char[15][15];
        origin(qipan);//初始化
        menu(qipan);//打印棋盤
        int flag=1;
        int a=-10;
        int [] a1;
        char s;
        while (true) {
            a1=xia(qipan, flag);//下棋操作(flag)決定下黑棋還是白棋
            s=flag==1?'●':'○';
            a=judge(qipan,a1,s);//判斷下棋位置是否已有棋子和是否獲勝
            if(a==1){
                System.out.println("黑棋獲勝");break;
            }
            if(a==-1){
                System.out.println("白棋獲勝");break;
            }
            flag*=-1;
        }
    }

    private static int judge(char[][] qipan,int[] a1,char s) {//判斷下棋位置是否已有棋子和是否獲勝
        int n=0,n1=1;
        int f1=-1,f2=-1;
        int sizelie=1,sizehang=1,sizexie=1,sizexie1=1;
        int i=a1[0];
        int j=a1[1];
        while(n<5){//列
            if(i<=0){
                f1=0;
            } else if (i==14) {
                f2=0;
            }
            if(f1!=0){
                if(qipan[i+n1][j]==s){
                    sizelie++;
                }else{
                    f1=0;
                }
            }
            if(f2!=0){
                if(qipan[i-n1][j]==s){
                    sizelie++;
                }else{
                    f2=0;
                }
            }
            if(sizelie>=5){
                return 1;
            }
            n++;n1++;
        }
        n=0;n1=1;
        f1=f2=-1;
        while(n<5){//行
            if(j<=0){
                f1=0;
            } else if (j==14) {
                f2=0;
            }
            if(f1!=0){
                if(qipan[i][j-n1]==s){
                    sizehang++;
                }else{
                    f1=0;
                }
            }
            if(f2!=0){
                if(qipan[i][j+n1]==s){
                    sizehang++;
                }else{
                    f2=0;
                }
            }
            if(sizehang>=5){
                return 1;
            }
            n++;n1++;
        }
        n=0;n1=1;
        f1=f2=-1;
        while(n<5){//斜著
            if(j<=0||i==0){
                f1=0;
            } else if (j==14||i==14) {
                f2=0;
            }
            if(f1!=0){
                if(qipan[i-n1][j-n1]==s){
                    sizexie++;
                }else{
                    f1=0;
                }
            }
            if(f2!=0){
                if(qipan[i+n1][j+n1]==s){
                    sizexie++;
                }else{
                    f2=0;
                }
            }
            if(sizexie>=5){
                return 1;
            }
            n++;n1++;
        }
        n=0;n1=1;
        f1=f2=-1;
        while(n<5){//斜著fan
            if(j==14||i==0){//右上
                f1=0;
            } else if (j==0||i==14) {
                f2=0;
            }
            if(f1!=0){
                if(qipan[i-n1][j+n1]==s){
                    sizexie1++;
                }else{
                    f1=0;
                }
            }
            if(f2!=0){
                if(qipan[i+n1][j-n1]==s){
                    sizexie1++;
                }else{
                    f2=0;
                }
            }
            if(sizexie1>=5){
                return 1;
            }
            n++;n1++;
        }
        return 0;
    }

    private static int[] xia(char[][] qipan,int flag) {//下棋操作(flag)決定下黑棋還是白棋
        char s=flag==1?'●':'○';
        if(s=='●'){
            System.out.print("請(qǐng)選擇'●'的坐標(biāo):");
        }else {
            System.out.print("請(qǐng)選擇'○'的坐標(biāo):");
        }
        int x=0,y=0;
        while (true) {
            x=sc.nextInt();
            y=sc.nextInt();
            if(qipan[x][y]!='┼'){
                System.out.println("該位置已有棋子,請(qǐng)重新輸入:");
            }else{
                break;
            }
        }
        qipan[x][y]=s;
        menu(qipan);
        int[] a={x,y};
        return a;
    }

    private static void menu(char[][] qipan) {
        System.out.print("   ");
        for (int i = 0; i < 15; i++) {
            System.out.print((i+1)+"  ");
        }
        System.out.println();
        for(int i=0;i<15;i++){
            if(i<9)
                System.out.print(i+1+"   ");
            else
                System.out.print(i+1+"  ");
            for(int j=0;j<15;j++){
                System.out.print(qipan[i][j]+"   ");
            }
            System.out.println();
        }
    }

    private static void origin(char[][] qipan) {//初始化
        for(int i=0;i<15;i++){
            for(int j=0;j<15;j++){
                qipan[i][j]='┼';
            }
        }
    }

}

三:結(jié)果:

總結(jié)

到此這篇關(guān)于Java五子棋簡(jiǎn)單實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Java五子棋內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中的XML解析技術(shù)詳析

    Java中的XML解析技術(shù)詳析

    XML文檔是一個(gè)文檔樹,從根部開始,并擴(kuò)展到樹的最底部,下面這篇文章主要給大家介紹了關(guān)于Java中XML解析技術(shù)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • Spring?security?oauth2以redis作為tokenstore及jackson序列化失敗問題

    Spring?security?oauth2以redis作為tokenstore及jackson序列化失敗問題

    這篇文章主要介紹了Spring?security?oauth2以redis作為tokenstore及jackson序列化失敗問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教<BR>
    2024-04-04
  • Java中的EnumMap集合解析

    Java中的EnumMap集合解析

    這篇文章主要介紹了Java中的EnumMap集合解析,EnumMap是Map接口的一種實(shí)現(xiàn),專門用于枚舉類型的鍵,所有枚舉的鍵必須來自同一個(gè)枚舉,
    EnumMap不允許鍵為空,允許值為空,需要的朋友可以參考下
    2023-09-09
  • java實(shí)現(xiàn)檢測(cè)Linux網(wǎng)絡(luò)狀態(tài)(附源碼)

    java實(shí)現(xiàn)檢測(cè)Linux網(wǎng)絡(luò)狀態(tài)(附源碼)

    實(shí)時(shí)監(jiān)控服務(wù)器網(wǎng)絡(luò)狀態(tài)是保證業(yè)務(wù)高可用性和可靠性的重要環(huán)節(jié),本文主要介紹了如何設(shè)計(jì)并實(shí)現(xiàn)一個(gè)高性能,可擴(kuò)展,支持事件訂閱與周期采樣的Linux?網(wǎng)絡(luò)狀態(tài)檢測(cè)工具,需要的可以了解下
    2025-06-06
  • Springcloud Stream消息驅(qū)動(dòng)工具使用介紹

    Springcloud Stream消息驅(qū)動(dòng)工具使用介紹

    SpringCloud Stream由一個(gè)中間件中立的核組成,應(yīng)用通過SpringCloud Stream插入的input(相當(dāng)于消費(fèi)者consumer,它是從隊(duì)列中接收消息的)和output(相當(dāng)于生產(chǎn)者producer,它是發(fā)送消息到隊(duì)列中的)通道與外界交流
    2022-09-09
  • java后臺(tái)實(shí)現(xiàn)支付寶對(duì)賬功能的示例代碼

    java后臺(tái)實(shí)現(xiàn)支付寶對(duì)賬功能的示例代碼

    這篇文章主要介紹了java后臺(tái)實(shí)現(xiàn)支付寶對(duì)賬功能的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • jedis獲取redis中二進(jìn)制圖片轉(zhuǎn)Base64方式

    jedis獲取redis中二進(jìn)制圖片轉(zhuǎn)Base64方式

    這篇文章主要介紹了jedis獲取redis中二進(jìn)制圖片轉(zhuǎn)Base64方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • redis 使用lettuce 啟動(dòng)內(nèi)存泄漏錯(cuò)誤的解決方案

    redis 使用lettuce 啟動(dòng)內(nèi)存泄漏錯(cuò)誤的解決方案

    這篇文章主要介紹了redis 使用lettuce 啟動(dòng)內(nèi)存泄漏錯(cuò)誤的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Java如何讀寫Properties配置文件(Properties類)

    Java如何讀寫Properties配置文件(Properties類)

    這篇文章主要介紹了Java如何讀寫Properties配置文件(Properties類),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Springboot轉(zhuǎn)發(fā)重定向?qū)崿F(xiàn)方式解析

    Springboot轉(zhuǎn)發(fā)重定向?qū)崿F(xiàn)方式解析

    這篇文章主要介紹了springboot轉(zhuǎn)發(fā)重定向?qū)崿F(xiàn)方式解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論

博湖县| 隆子县| 南宁市| 平泉县| 定安县| 东阿县| 莲花县| 从化市| 鄄城县| 吉安县| 朔州市| 九龙城区| 左云县| 辽源市| 南皮县| 中西区| 广平县| 定边县| 鹤山市| 三河市| 蓬安县| 安达市| 沾益县| 霍山县| 哈密市| 子长县| 清新县| 岱山县| 佛冈县| 平安县| 双峰县| 仲巴县| 九台市| 安阳县| 若尔盖县| 阜新市| 句容市| 台山市| 蓬安县| 昂仁县| 藁城市|