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

Java項(xiàng)目實(shí)現(xiàn)五子棋小游戲

 更新時(shí)間:2020年05月27日 09:14:52   作者:Sampson_S  
這篇文章主要為大家詳細(xì)介紹了Java項(xiàng)目實(shí)現(xiàn)五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

項(xiàng)目名稱

五子棋小游戲

項(xiàng)目描述

可以改變獲勝棋子數(shù),率先連成棋數(shù)的人獲勝

代碼實(shí)現(xiàn)

測(cè)試類

public class Test {
 public static void main(String[] args) {
 FiveChess fiveChess = new FiveChess();
 fiveChess.start();
 }
}

主類:實(shí)現(xiàn)主方法

public class FiveChess {
 private static final int CheckerSize = 10;
 private static final int successSize = 5;
 private Chess[][] chess;
 private int xPos;
 private int yPos;
 private boolean flag = true;
 private Scanner scanner = new Scanner(System.in);
 public FiveChess(){
 chess = new Chess[CheckerSize][CheckerSize];
 }
 private void initCheck(){
 for(int i=0;i<CheckerSize;i++){
  for(int j=0;j<CheckerSize;j++){
  chess[i][j] = new Chess("十");
  }
 }
 }
 private boolean judge(int xPos,int yPos){
 //橫向
 if(yPos-1>=0 && chess[xPos][yPos].getValue().equals(chess[xPos][yPos-1].getValue()) ||
  yPos+1<CheckerSize && chess[xPos][yPos].getValue().equals(chess[xPos][yPos+1].getValue())){
  int count = 1;
  for (int i = 1; i < successSize; i++) {
  if (yPos - i >= 0 && chess[xPos][yPos - i].getValue().equals(chess[xPos][yPos].getValue())) {
   count++;
  } else {
   break;
  }
  }
  for (int i = 1; i < successSize; i++) {
  if (yPos + i < CheckerSize &&
   chess[xPos][yPos + i].getValue().equals(chess[xPos][yPos].getValue())) {
   count++;
  } else {
   break;
  }
  }
  return count >= successSize ? true : false;
 }
 //縱向
 if (xPos-1>=0 && chess[xPos][yPos].getValue().equals(chess[xPos-1][yPos].getValue()) ||
  xPos+1<CheckerSize && chess[xPos][yPos].getValue().equals(chess[xPos+1][yPos].getValue())){
  int count = 1;
  for (int i = 1; i < successSize; i++) {
  if (xPos- i >= 0 && chess[xPos-i][yPos].getValue().equals(chess[xPos][yPos].getValue())) {
   count++;
  } else {
   break;
  }
  }
  for (int i = 1; i < successSize; i++) {
  if (xPos + i < CheckerSize &&
   chess[xPos+i][yPos].getValue().equals(chess[xPos][yPos].getValue())) {
   count++;
  } else {
   break;
  }
  }
  return count >= successSize ? true : false;
 }
 //正斜線
 if (xPos-1>=0 && yPos-1>=0 && chess[xPos][yPos].getValue().equals(chess[xPos-1][yPos-1].getValue()) ||
  xPos+1<CheckerSize && yPos+1<CheckerSize &&
   chess[xPos][yPos].getValue().equals(chess[xPos+1][yPos+1].getValue())){
  int count = 1;
  for (int i = 1; i < successSize; i++) {
  if (xPos - i >= 0 && yPos - i >= 0 &&
   chess[xPos-i][yPos-i].getValue().equals(chess[xPos][yPos].getValue())) {
   count++;
  } else {
   break;
  }
  }
  for (int i = 1; i < successSize; i++) {
  if (xPos + i < CheckerSize && yPos + i < CheckerSize &&
   chess[xPos+i][yPos+i].getValue().equals(chess[xPos][yPos].getValue())) {
   count++;
  } else {
   break;
  }
  }
  return count >= successSize ? true : false;
 }
 //反斜線
 if (xPos-1>=0 && yPos+1<CheckerSize &&
  chess[xPos][yPos].getValue().equals(chess[xPos-1][yPos+1].getValue()) ||
  xPos+1<CheckerSize && yPos-1>=0 &&
   chess[xPos][yPos].getValue().equals(chess[xPos+1][yPos-1].getValue())){
  int count = 1;
  for (int i = 1; i < successSize; i++) {
  if (xPos - i >= 0 && yPos + i<CheckerSize &&
   chess[xPos-i][yPos+i].getValue().equals(chess[xPos][yPos].getValue())) {
   count++;
  } else {
   break;
  }
  }
  for (int i = 1; i < successSize; i++) {
  if (xPos + i < CheckerSize && yPos - i >= 0 &&
   chess[xPos+i][yPos-i].getValue().equals(chess[xPos][yPos].getValue())) {
   count++;
  } else {
   break;
  }
  }
  return count >= successSize ? true : false;
 }
 return false;
 }
 private void runChess(String run){
 System.out.println("請(qǐng)輸入"+run+"坐標(biāo):");
 xPos = scanner.nextInt();
 yPos = scanner.nextInt();
 if(chess[xPos-1][yPos-1].getValue().equals("十")){
  if(run.equals("黑棋")){
  chess[xPos-1][yPos-1] = new Chess("●");
  }
  else if(run.equals("白棋")){
  chess[xPos-1][yPos-1] = new Chess("〇");
  }
  for(int i=0;i<CheckerSize;i++){
  for (int j=0;j<CheckerSize;j++){
   System.out.print(chess[i][j].getValue());
  }
  System.out.println();
  }
  if(judge(xPos-1,yPos-1)){
  flag = false;
  System.out.println(run+"獲勝");
  System.out.println("游戲結(jié)束,是否重玩");
  String finish = scanner.next();
  if (finish.equals("是")){
   flag = true;
   start();
  }
  else if (finish.equals("否")){
   System.exit(0);
  }
  }
 }else {
  System.out.println("該處已存在棋子,請(qǐng)重新選擇");
  runChess(run);
 }
 }
 public void start(){
 initCheck();
 System.out.println("請(qǐng)選擇先走方:黑棋or白棋");
 String run = scanner.next();
 for(int i=0;i<CheckerSize;i++){
  for (int j=0;j<CheckerSize;j++){
  System.out.print(chess[i][j].getValue());
  }
  System.out.println();
 }
 while (flag) {
  switch (run) {
  case "黑棋":
   runChess("黑棋");
   run = "白棋";
   break;
  case "白棋":
   runChess("白棋");
   run = "黑棋";
   break;
  default:
  }
 }
 }
}

結(jié)點(diǎn)類

public class Chess {
 private String value;
 public Chess(String value){
 this.value = value;
 }
 public String getValue() {
 return value;
 }
}

更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:

C++經(jīng)典小游戲匯總

python經(jīng)典小游戲匯總

python俄羅斯方塊游戲集合

JavaScript經(jīng)典游戲 玩不停

javascript經(jīng)典小游戲匯總

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

相關(guān)文章

  • 完美解決java.lang.OutOfMemoryError處理錯(cuò)誤的問題

    完美解決java.lang.OutOfMemoryError處理錯(cuò)誤的問題

    下面小編就為大家?guī)硪黄昝澜鉀Qjava.lang.OutOfMemoryError處理錯(cuò)誤的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • Springboot筆記之熱部署及不生效的解決方案

    Springboot筆記之熱部署及不生效的解決方案

    這篇文章主要介紹了Springboot筆記之熱部署及不生效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • JAVA實(shí)現(xiàn)Base64編碼的三種方式

    JAVA實(shí)現(xiàn)Base64編碼的三種方式

    本文主要介紹了JAVA實(shí)現(xiàn)Base64編碼的三種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 淺談JAVA 線程狀態(tài)中可能存在的一些誤區(qū)

    淺談JAVA 線程狀態(tài)中可能存在的一些誤區(qū)

    這篇文章主要介紹了淺談JAVA 線程狀態(tài)中可能存在的一些誤區(qū),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 圖文詳解如何將java編寫的程序轉(zhuǎn)為exe文件

    圖文詳解如何將java編寫的程序轉(zhuǎn)為exe文件

    我們寫的程序,要讓小伙伴打開即用,可以將java程序生成可執(zhí)行文件,下面這篇文章主要給大家介紹了關(guān)于一步步教你如何將java編寫的程序轉(zhuǎn)為exe文件的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • springboot與dubbo的版本匹配問題

    springboot與dubbo的版本匹配問題

    這篇文章主要介紹了springboot與dubbo的版本匹配問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • java 中Collection存儲(chǔ)器詳解及簡(jiǎn)單實(shí)例

    java 中Collection存儲(chǔ)器詳解及簡(jiǎn)單實(shí)例

    這篇文章主要介紹了java 中Collection存儲(chǔ)器詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • SpringBoot后端服務(wù)重定向的實(shí)現(xiàn)示例

    SpringBoot后端服務(wù)重定向的實(shí)現(xiàn)示例

    本文主要介紹了SpringBoot后端服務(wù)重定向的實(shí)現(xiàn)示例,通過重定向、路徑匹配、反向代理和直接調(diào)用Controller層接口等方法來實(shí)現(xiàn),感興趣的可以了解一下
    2025-01-01
  • MyBatis框架搭建與代碼解讀分析

    MyBatis框架搭建與代碼解讀分析

    MyBatis是一個(gè)靈活的持久層框架,適合與數(shù)據(jù)庫交互,支持自定義SQL和高級(jí)映射,這篇文章給大家介紹MyBatis框架搭建與代碼解讀,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • Java Swing仿QQ登錄界面效果

    Java Swing仿QQ登錄界面效果

    這篇文章主要為大家詳細(xì)介紹了Java Swing仿QQ登錄界面效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評(píng)論

邹平县| 双鸭山市| 西丰县| 拜泉县| 石楼县| 洱源县| 垦利县| 蚌埠市| 巴林右旗| 谢通门县| 蒙自县| 定州市| 靖边县| 双牌县| 彭阳县| 三台县| 罗源县| 攀枝花市| 平顺县| 会昌县| 六枝特区| 长垣县| 沐川县| 深泽县| 阿尔山市| 永定县| 嘉祥县| 临漳县| 象山县| 扎囊县| 紫云| 邻水| 大港区| 石柱| 鹰潭市| 桐柏县| 华坪县| 纳雍县| 什邡市| 峡江县| 青冈县|