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

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

 更新時(shí)間:2019年11月30日 14:36:41   作者:donggedeboke  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單控制臺(tái)五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java實(shí)現(xiàn)簡(jiǎn)單控制臺(tái)五子棋的具體代碼,供大家參考,具體內(nèi)容如下

GobangMain這個(gè)類是游戲的主方法,主要用于控制游戲的執(zhí)行,值得注意的是輸入的坐標(biāo)的格式是3,4的樣式,不能是其他的格式,也不能出現(xiàn)空格。

package com.qf.Gobang;

import java.util.Scanner;

import org.omg.CORBA.PUBLIC_MEMBER;

public class GobangMain {
  public static String white = "白色";
  public static String black = "黑色";
  public static boolean color=true;
  public static String spoint;//存儲(chǔ)坐標(biāo)
  public static void main(String[] args) {

    Gobang gobang = new Gobang();
    Scanner scanner=new Scanner(System.in);
    while(true){
      System.out.println("請(qǐng)"+(color?white:black)+"落子:");
      spoint=scanner.next();//獲得坐標(biāo)
      Point point=gobang.analysisPoint(spoint);//解析坐標(biāo),并返回坐標(biāo)對(duì)象

      if(gobang.luoZi(point,color)){
        gobang.printMap();
        if(gobang.isWin(point,color)){
          System.out.println(""+(color?white:black)+"贏了!");
          break;
        }
        color=!color;
      }
    }

  }
}

Point類

public class Point {

  public Point(int x, int y) {
    super();
    this.x = x;
    this.y = y;
  }
  int x;
  int y;
}

Gobang 類是游戲類,主要包含游戲的判斷游戲的結(jié)束等等。

package com.qf.Gobang;

import java.awt.Event;
import java.util.Scanner;

public class Gobang {
  public int n = 20;// 地圖的規(guī)模
  public String color;// 確認(rèn)是白方,還是黑方
  public String mark = "╋";
  public String white = "○";
  public String black = "●";
  public String[][] map = new String[n][n];;
  public String[] coordinate = { "⒈", "⒉", "⒊", "⒋", "⒌", "⒍", "⒎", "⒏", "⒐", "⒑", "⒒", "⒓", "⒔", "⒕", "⒖", "⒗", "⒘",
      "⒙", "⒚", "⒛" };

  public Gobang() {
    // 初始化地圖
    init();
  }

  // 初始化地圖
  public void init() {
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        if (i == n - 1) {
          map[i][j] = coordinate[j];
        } else if (j == n - 1) {
          map[i][j] = coordinate[i];
        } else {
          map[i][j] = mark;
        }
      }
    }
    printMap();
  }

  // 打印地圖
  public void printMap() {
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        System.out.print(map[i][j]);
      }
      System.out.println();
    }
  }

  // 解析坐標(biāo)
  public Point analysisPoint(String point) {
    String[] points = point.split(",");
    int x = Integer.parseInt(points[0]) - 1;
    int y = Integer.parseInt(points[1]) - 1;
    return new Point(x, y);
  }

  // 落子
  public boolean luoZi(Point point, Boolean color) {
    // 判斷是否越界
    if (point.x < 0 || point.y > 18 || point.y < 0 || point.y > 18) {
      return false;
    }
    // 判斷落子的地方有沒有其他的子
    if (map[point.x][point.y] != mark) {
      return false;
    }
    map[point.x][point.y] = color ? white : black;
    return true;
  }

  // 判斷是否輸贏
  public boolean isWin(Point point, boolean color) {
    // 縱向
    int zxS = 0;// 縱向上
    for (int i = 0; i < 5; i++) {
      if (point.x - i < 0) {
        break;
      }
      if (map[point.x - i][point.y].equals(color ? white : black)) {
        zxS++;
      } else {
        break;
      }
    }
    int zxX = 0;// 縱向下
    for (int i = 1; i < 5; i++) {
      if (point.x + i > 18) {
        break;
      }
      if (map[point.x + i][point.y].equals(color ? white : black)) {
        zxX++;
      } else {
        break;
      }
    }
    // 橫向
    int hxZ = 0;// 橫向左
    for (int i = 0; i < 5; i++) {
      if (point.y - i < 0) {
        break;
      }
      if (map[point.x][point.y - i].equals(color ? white : black)) {
        hxZ++;
      } else {
        break;
      }
    }
    int hxY = 0;// 橫向右
    for (int i = 1; i < 5; i++) {
      if (point.y + i > 18) {
        break;
      }
      if (map[point.x][point.y + i].equals(color ? white : black)) {
        hxY++;
      } else {
        break;
      }
    }
    // 正斜
    int zxxS = 0;// 正斜上
    for (int i = 0; i < 5; i++) {
      if (point.y + i > 18 || point.x - i < 0) {
        break;
      }
      if (map[point.x - i][point.y + i].equals(color ? white : black)) {
        zxxS++;
      } else {
        break;
      }
    }
    int zxxX = 0;// 正斜下
    for (int i = 1; i < 5; i++) {
      if (point.y - i < 0 || point.x + i > 18) {
        break;
      }
      if (map[point.x + i][point.y - i].equals(color ? white : black)) {
        zxxX++;
      } else {
        break;
      }
    }
    // 反斜
    int fxxS = 0;// 反斜上
    for (int i = 0; i < 5; i++) {
      if (point.y - i < 0 || point.x - i < 0) {
        break;
      }
      if (map[point.x - i][point.y - i].equals(color ? white : black)) {
        fxxS++;
      } else {
        break;
      }
    }
    int fxxX = 0;// 反斜下
    for (int i = 1; i < 5; i++) {
      if (point.y + i > 18 || point.x + i >18) {
        break;
      }
      if (map[point.x + i][point.y + i].equals(color ? white : black)) {
        fxxX++;
      } else {
        break;
      }
    }
    System.out.println();
    System.out.print("反斜上↖:" + fxxS+"\t");
    System.out.print("縱向上↑:" + zxS+"\t");
    System.out.print("正斜上↗:" + zxxS);
    System.out.println();
    System.out.print("橫向左←:" + hxZ+"\t\t\t");
    System.out.print("橫向右→:" + hxY);
    System.out.println();
    System.out.print("正斜下↙:" + zxxX+"\t");
    System.out.print("縱向下↓:" + zxX+"\t");
    System.out.print("反斜下↘:" + fxxX);
    System.out.println();
    if (zxS + zxX > 4 || hxY + hxZ > 4 || zxxS + zxxX > 4 || fxxS + fxxX > 4) {
      return true;
    }
    return false;
  }
}

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

相關(guān)文章

  • StackTraceElement獲取方法調(diào)用棧信息實(shí)例詳解

    StackTraceElement獲取方法調(diào)用棧信息實(shí)例詳解

    這篇文章主要介紹了StackTraceElement獲取方法調(diào)用棧信息實(shí)例詳解,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Spring?BeanFactory工廠使用教程

    Spring?BeanFactory工廠使用教程

    Spring的本質(zhì)是一個(gè)bean工廠(beanFactory)或者說bean容器,它按照我們的要求,生產(chǎn)我們需要的各種各樣的bean,提供給我們使用。只是在生產(chǎn)bean的過程中,需要解決bean之間的依賴問題,才引入了依賴注入(DI)這種技術(shù)
    2023-02-02
  • java 算法之歸并排序詳解及實(shí)現(xiàn)代碼

    java 算法之歸并排序詳解及實(shí)現(xiàn)代碼

    這篇文章主要介紹了java 算法之歸并排序詳解及實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 如何使用maven-helper插件解決jar包沖突問題

    如何使用maven-helper插件解決jar包沖突問題

    安裝了Maven?Helper插件,只要打開pom文件,就可以打開該pom文件的Dependency?Analyzer視圖,這篇文章主要介紹了使用maven-helper插件解決jar包沖突,需要的朋友可以參考下
    2024-05-05
  • Maven繼承父工程時(shí)的relativePath標(biāo)簽解析用法小結(jié)

    Maven繼承父工程時(shí)的relativePath標(biāo)簽解析用法小結(jié)

    relativePath 的作用是為了找到父級(jí)工程的pom.xml,本文主要介紹了Maven繼承父工程時(shí)的relativePath標(biāo)簽解析用法小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • SpringBoot可視化監(jiān)控的具體應(yīng)用

    SpringBoot可視化監(jiān)控的具體應(yīng)用

    最近越發(fā)覺得,任何一個(gè)系統(tǒng)上線,運(yùn)維監(jiān)控都太重要了,本文介紹了SpringBoot可視化監(jiān)控的具體應(yīng)用,分享給大家,有興趣的同學(xué)可以參考一下
    2021-06-06
  • Java數(shù)據(jù)導(dǎo)入功能之讀取Excel文件實(shí)例

    Java數(shù)據(jù)導(dǎo)入功能之讀取Excel文件實(shí)例

    這篇文章主要介紹了Java數(shù)據(jù)導(dǎo)入功能之讀取Excel文件實(shí)例,本文給出了jar包的下載地址以及讀取Excel文件的代碼實(shí)例,需要的朋友可以參考下
    2015-06-06
  • 詳解Spring的兩種代理方式:JDK動(dòng)態(tài)代理和CGLIB動(dòng)態(tài)代理

    詳解Spring的兩種代理方式:JDK動(dòng)態(tài)代理和CGLIB動(dòng)態(tài)代理

    這篇文章主要介紹了詳解Spring的兩種代理方式:JDK動(dòng)態(tài)代理和CGLIB動(dòng)態(tài)代理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • JVM分析之類加載機(jī)制詳解

    JVM分析之類加載機(jī)制詳解

    JVM內(nèi)部架構(gòu)包含類加載器、內(nèi)存區(qū)域、執(zhí)行引擎等。日常開發(fā)中,我們編寫的java文件被編譯成class文件后,jvm會(huì)進(jìn)行加載并運(yùn)行使用類。本次將對(duì)JVM加載部分進(jìn)行分析,便于大家了解并掌握加載機(jī)制
    2022-08-08
  • Java中CyclicBarrier和CountDownLatch的用法與區(qū)別

    Java中CyclicBarrier和CountDownLatch的用法與區(qū)別

    CyclicBarrier和CountDownLatch這兩個(gè)工具都是在java.util.concurrent包下,并且平時(shí)很多場(chǎng)景都會(huì)使用到。本文將會(huì)對(duì)兩者進(jìn)行分析,記錄他們的用法和區(qū)別,感興趣的可以了解一下
    2021-08-08

最新評(píng)論

新平| 通州区| 绥芬河市| 道孚县| 哈巴河县| 九龙坡区| 东乌珠穆沁旗| 石城县| 滕州市| 盖州市| 鲁山县| 深水埗区| 竹溪县| 通江县| 宜兰市| 文水县| 社旗县| 申扎县| 玉树县| 定西市| 融水| 巴马| 丹江口市| 溧阳市| 泰来县| 晴隆县| 隆安县| 湘西| 东方市| 原平市| 兴文县| 桐柏县| 手机| 谢通门县| 武隆县| 东港市| 墨脱县| 江山市| 马山县| 东乡族自治县| 固始县|