<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      java小游戲java九宮格

      問題來源于吾愛破解https://www.52pojie.cn/thread-1484202-1-1.html

      編程目標一:根據(jù)下面的“游戲說明”,實現(xiàn)該游戲程序,完成響應用戶的輸入、顯示游戲局面、判定游戲勝負等功能。
      編程目標二:在“編程目標一”的基礎上,順序記錄用戶從游戲開始到游戲結(jié)束的所有輸入,并在游戲結(jié)束時保存游戲過程記錄。
      編程目標三:在“編程目標二”的基礎上,程序?qū)崿F(xiàn)如下功能:從游戲過程記錄中讀取數(shù)據(jù)并回放游戲從開始到結(jié)束的整個過程。
      編程目標四:在“編程目標二”的基礎上,記錄用戶獲勝時所用的移動步數(shù),設計一個移動步數(shù)前10名的排行榜,使用步數(shù)越少,排名越高。用戶獲勝步數(shù)入榜時,提示用戶輸入昵稱。排行榜顯示名次、用戶昵稱、移動步數(shù)等信息。
      【游戲說明】有一種游戲,其規(guī)則如下:有一個 3×3 的九宮方格棋盤,在8個方格中擺棋子,每個棋子上標有1~8中的某一個數(shù)字。棋盤中留有一個空格,空格周圍的棋子可以移到空格中,一次只能移動一個棋子。圖 (a) 定義了棋盤的初始局面。經(jīng)過連續(xù)的若干次移動棋子后,當 3×3 方格呈現(xiàn)出圖 (b) 所示的局面時,表示獲勝;當呈現(xiàn)出圖 (c) 所示的局面時,表示失敗。游戲獲勝或失敗時,本輪游戲結(jié)束。

      實現(xiàn)代碼

      package com.ming;
      
      import java.util.ArrayList;
      import java.util.List;
      import java.util.Scanner;
      
      public class Spfpc {
          private int data_init[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 0}}; // 初始
          private int data_success[][] = {{8, 7, 6}, {5, 0, 4}, {3, 2, 1}}; // 成功
          private int data_fail[][] = {{6, 7, 8}, {5, 0, 4}, {3, 2, 1}}; // 失敗
          private String success; // 正確
          private String fail; // 錯誤
          private List<int[][]> history = new ArrayList<>(); // 移動記錄
      
          public Spfpc() {
              init();
          }
      
          /**
           * @return void
           * @Description 正確答案追加成字符串
           * @date 2021/7/28 17:18
           * @auther FMm
           */
          public void init() {
              StringBuffer stringBuffer = new StringBuffer();
              for (int i = 0; i < data_success.length; i++) {
                  for (int j = 0; j < data_success[i].length; j++) {
                      stringBuffer.append(data_success[i][j]);
                  }
              }
              success = stringBuffer.toString();
              stringBuffer.delete(0, stringBuffer.length());
              for (int i = 0; i < data_fail.length; i++) {
                  for (int j = 0; j < data_fail[i].length; j++) {
                      stringBuffer.append(data_fail[i][j]);
                  }
              }
              fail = stringBuffer.toString();
          }
      
          /**
           * @return void
           * @Description 移動后每次轉(zhuǎn)換
           * @date 2021/7/28 17:20
           * @auther FMm
           */
          public String arrayToString() {
              StringBuffer stringBuffer = new StringBuffer();
              for (int i = 0; i < data_init.length; i++) {
                  for (int j = 0; j < data_init[i].length; j++) {
                      stringBuffer.append(data_init[i][j]);
                  }
              }
              return stringBuffer.toString();
          }
      
          /**
           * @param params 移動的數(shù)字
           * @return java.lang.String
           * @Description 通過選擇要移動的數(shù)字 查找對應下標 x y
           * @date 2021/7/28 17:23
           * @auther FMm
           */
          public String getIndex(int params) {
              for (int i = 0; i < data_init.length; i++) {
                  for (int j = 0; j < data_init[i].length; j++) {
                      int i1 = data_init[i][j];
                      if (i1 == params) {
                          return i + "," + j;
                      }
                  }
              }
              return "";
          }
      
          /**
           * @param i
           * @return boolean
           * @Description 驗證 上下左右 是否正確
           * @date 2021/7/28 17:24
           * @auther FMm
           */
          public static boolean checkPos(int i) {
              if (i == 2 | i == 4 | i == 6 | i == 8) {
                  return true;
              }
              return false;
          }
      
          /**
           * @param pos   移動的方位
           * @param input 移動的數(shù)字
           * @return void
           * @Description 移動數(shù)字
           * @date 2021/7/28 17:27
           * @auther FMm
           */
          public void moveIndex(int pos, int input) {
              String index = getIndex(input);
              String[] split = index.split(",");
              int x = Integer.parseInt(split[0]);
              int y = Integer.parseInt(split[1]);
      //        上8下2左4右6
              if (pos == 8) {
                  if (x == 0 || data_init[x - 1][y] != 0) {
                      System.out.println("無法向上移動");
                  } else {
                      data_init[x - 1][y] = input;
                      data_init[x][y] = 0;
                  }
              } else if (pos == 2) {
                  if (x == 2 || data_init[x + 1][y] != 0) {
                      System.out.println("無法向下移動");
                  } else {
                      data_init[x + 1][y] = input;
                      data_init[x][y] = 0;
                  }
              } else if (pos == 4) {
                  if (y == 0 || data_init[x][y - 1] != 0) {
                      System.out.println("無法向左移動");
                  } else {
                      data_init[x][y - 1] = input;
                      data_init[x][y] = 0;
                  }
              } else if (pos == 6) {
                  if (y == 2 || data_init[x][y + 1] != 0) {
                      System.out.println("無法向右移動");
                  } else {
                      data_init[x][y + 1] = input;
                      data_init[x][y] = 0;
                  }
              }
              history.add(data_init);
              outResult();
          }
      
          /**
           * @return void
           * @Description 輸出移動后的 結(jié)果
           * @date 2021/7/28 17:26
           * @auther FMm
           */
          public void outResult() {
              for (int i = 0; i < data_init.length; i++) {
                  System.out.printf("[");
                  System.out.printf("\t");
                  for (int j = 0; j < data_init[i].length; j++) {
                      int i1 = data_init[i][j];
                      if (i1 == 0) {
                          System.out.printf("-");
                      } else {
                          System.out.printf(String.valueOf(i1));
                      }
                      System.out.printf("\t");
                  }
                  System.out.printf("]");
                  System.out.println();
              }
          }
      
      
          public static void main(String[] args) {
              Spfpc spfpc = new Spfpc();
              System.out.println("【游戲說明】有一種游戲,其規(guī)則如下:");
              System.out.println("有一個 3×3 的九宮方格棋盤,在8個方格中擺棋子,每個棋子上標有1~8中的某一個數(shù)字");
              System.out.println("棋盤中留有一個空格,空格周圍的棋子可以移到空格中,一次只能移動一個棋子");
              System.out.println("圖 (a) 定義了棋盤的初始局面,經(jīng)過連續(xù)的若干次移動棋子后,當 3×3 方格呈現(xiàn)出");
              System.out.println("圖 (b) 所示的局面時,表示獲勝;當呈現(xiàn)出");
              System.out.println("圖 (c) 所示的局面時,表示失敗。游戲獲勝或失敗時,本輪游戲結(jié)束");
      
              System.out.println("圖 (a)\t\t\t圖 (b)\t\t\t圖 (c)\t\t");
              System.out.println("1\t" + "2\t" + "3\t\t" + "8\t" + "7\t" + "6\t\t" + "6\t" + "7\t" + "8\t");
              System.out.println("4\t" + "5\t" + "6\t\t" + "5\t" + "-\t" + "4\t\t" + "5\t" + "-\t" + "4\t");
              System.out.println("7\t" + "8\t" + "-\t\t" + "3\t" + "2\t" + "1\t\t" + "3\t" + "2\t" + "1\t");
              Scanner scanner = new Scanner(System.in);
              System.out.print("請輸入要移動的數(shù)字【1-8】數(shù)字:");
              int number = spfpc.getNumber(scanner);
              System.out.print("請輸入要移動的方向【上8下2左4有6】:");
              int pos = spfpc.getPos(scanner);
              spfpc.moveIndex(pos, number);
      
      
              while (true) {
                  String s = spfpc.arrayToString();
                  if (s.equals(spfpc.fail)) {
                      System.out.printf("失敗");
                      break;
                  } else {
                      if (s.equals(spfpc.success)) {
                          System.out.println("成功");
                          System.out.println("步數(shù):" + spfpc.history.size());
                          break;
                      } else {
                          System.out.print("請輸入要移動的數(shù)字【1-8】數(shù)字:");
                          number = spfpc.getNumber(scanner);
                          System.out.print("請輸入要移動的方向【上8下2左4有6】:");
                          pos = spfpc.getPos(scanner);
                          spfpc.moveIndex(pos, number);
                      }
                  }
              }
      
          }
      
      
          /**
           * @param scanner
           * @return int
           * @Description 移動數(shù)字
           * @date 2021/7/28 17:30
           * @auther FMm
           */
          public int getNumber(Scanner scanner) {
              String params = scanner.next();
              int i = 0;
              while (true) {
                  try {
                      i = Integer.parseInt(params);
                      if (i > 0 && i < 9) {
                          return i;
                      } else {
                          System.err.println("您輸入的是:" + params);
                          System.out.print("請輸入要移動的數(shù)字【1-8】數(shù)字:");
                          params = scanner.next();
                      }
                  } catch (Exception e) {
                      System.err.println("您輸入的是:" + params);
                      System.out.print("請輸入要移動的數(shù)字【1-8】數(shù)字:");
                      params = scanner.next();
                  }
              }
          }
      
          /**
           * @param scanner
           * @return int
           * @Description 移動位置
           * @date 2021/7/28 17:30
           * @auther FMm
           */
          public int getPos(Scanner scanner) {
              String params = scanner.next();
              int i = 0;
              while (true) {
                  try {
                      i = Integer.parseInt(params);
                      if (checkPos(i)) {
                          return i;
                      } else {
                          System.err.println("您輸入的是:" + params);
                          System.out.print("請輸入要移動的方向【上8下2左4有6】:");
                          params = scanner.next();
                      }
                  } catch (Exception e) {
                      System.err.println("您輸入的是:" + params);
                      System.out.print("請輸入要移動的方向【上8下2左4有6】:");
                      params = scanner.next();
                  }
              }
          }
      
      
      }

       

       

        

       

      posted @ 2021-07-29 09:08  天葬  閱讀(438)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 精品国产成人三级在线观看 | 性奴sm虐辱暴力视频网站| 欧洲性开放老太大| 忘忧草在线社区www中国中文| 久久久综合香蕉尹人综合网| 天堂v亚洲国产v第一次| 亚洲熟妇自偷自拍另欧美| 国产国拍亚洲精品永久软件| 亚洲无码精品视频| 亚洲第一极品精品无码久久| 精品av无码国产一区二区| 高清无码18| 国内外成人综合免费视频| 久久99精品久久久久麻豆| 亚洲中文字幕无码爆乳| 欧美日韩精品一区二区三区高清视频| 国产成人久久精品二三区| 久久综合国产色美利坚| 人妻护士在线波多野结衣| 少妇人妻偷人偷人精品| 浮山县| 成人毛片一区二区| 亚洲精品无码久久一线| 中文字幕一卡二卡三卡| 亚洲首页一区任你躁xxxxx| 五月天免费中文字幕av| 人妻无码∧V一区二区| 久草热8精品视频在线观看| 黄平县| 亚洲人成网站观看在线观看| 免费a级毛片18以上观看精品| 日韩精品 在线 国产 丝袜| 中文字幕av一区二区| 久久精品无码专区免费东京热| 久久亚洲精品中文字幕无| 精精国产XXX在线观看| 亚洲av无码之国产精品网址蜜芽| 一区二区三区国产不卡| 人妻在线中文字幕| 99久久久国产精品消防器材| 男人的天堂va在线无码|