<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ### **1.1 項目目標** **1.1.1 知識目標** (1)Java基礎語法 (2)字符串和數組 (3)類和對象 **1.1.2 能力目標** (1)熟練使用Java基礎語言進行編碼 (2)熟練對字符串和數組進行操作 (3)熟練掌握類的定義和對象的創建 **1.1.3 素養目標** (1)養成良好的類設計規范,類命名規范,屬性命名規范,方法命名規范等習慣 (2)培養編程的計算思維,可以使用基礎數據知識解決項目中的計算問題 (3)掌握類的抽象,對象的創建過程。 ### **1.2 案例描述** &emsp;&emsp;通過Java控制臺程序完成一個五子棋游戲,能夠實現黑白子交互下棋,程序自動判斷輸贏(需要完成判斷輸贏的算法),主要運用控制臺輸入坐標來實現。本系統采用數組進行數據管理(隨著技術學習的深入,后續可以使用集合、文件或數據庫進行數據管理)。 &emsp;&emsp;系統主要實現功能: (1)程序在設計初就定義黑棋先行,白棋隨后。從第一個棋子開始交互順序落子。 (2)通過坐標索引算出最先在棋盤的橫向、豎向、斜向形成連續的相同色五棋子的一方為勝利。 (3)為保持界面潔凈設為游戲界面設為固定。黑白交互下完棋子刷新界面。 (4)在游戲過程中或下完時可選擇重新開始。 (5)贏家對話輸出信息提示,選擇游戲結束還是重新開始。 (6)游戲實現了基本的單機雙人對戰功能。 ### **1.3 實現效果** &emsp;&emsp;五子棋游戲的實現效果如下所示: ![](http://h.yiniuedu.com/9cb7f8d4b72ede7297b9e9b6f8994575) 圖1 開始界面 ![](http://h.yiniuedu.com/c503689e498ec83cdaa4b9a896ee51a6) 圖2退出界面 ![](http://h.yiniuedu.com/3029511ae9dfe4a9acbf5d9ac1c0106d) 圖3 幫助界面 ![](http://h.yiniuedu.com/1c9f1d2734333e27153104b04cbe03c3) 圖4 選擇開始界面 ![](http://h.yiniuedu.com/36a4ea0b56dc5b2be0b7e19545b66de6) 圖5 下棋界面 ![](http://h.yiniuedu.com/7bd5e345feb113538d4cdd0c13c04f18) 圖6 獲勝界面 ### **1.4 知識點** &emsp;&emsp;本實訓節點涉及到的知識點如下: (1)Java基礎語法 (2)字符串數組 (3)類和對象 ### **1.5 案例分析** #### **1.5.****1****功能劃分** <table> <tr> <td>功能點</td> <td>難度</td> <td>備注</td> </tr> <tr> <td>選擇游戲功能</td> <td> ★★</td> <td> </td> </tr> <tr> <td>下棋功能</td> <td>★★★★★</td> <td> </td> </tr> <tr> <td>判斷獲勝功能</td> <td>★★★★</td> <td> </td> </tr> <tr> <td>退出游戲功能</td> <td>★★</td> <td> </td> </tr> </table> #### **1.5.****2****概要設計** 1.設計五子棋類FiveChess 2.設計坐標點類Point 3.設計業務類游戲類Game 4.設計界面類MainView 5.設計輸入工具類InputUtil #### **1.5.****3****詳細設計** ![](http://h.yiniuedu.com/8912f3fdfed40dbfe2175ac104560fef) 類圖 ### **1.6 實現要點** &emsp;&emsp;五子棋游戲設計與實現,請參照編碼命名規范進行設計與實現。 項目名稱:FiveChessGame 包名稱:com.yiniuedu.cms.fivechessgame 1.定義五子棋類FiveChess,包含行、列、方向和存放數據的數組屬性,然后分辨實現初始化方法、打印下棋過程界面、獲取用戶輸入的方法、下棋位置方法、獲勝方法、有效性驗證方法、數據轉化方法和是否勝利方法。 2.定義坐標點類Point,包含x坐標和y坐標兩個屬性。 3.定義業務類游戲類Game,包含FiveChess類型屬性,包含幫助方法、開始游戲方法和下棋方法。 4.定義界面類MainClass,實現在控制臺終端界面上打印輸出五子棋棋盤和下棋位置。 5.定義輸入工具類InputUtil,使用Scanner類,實現獲取int類型和獲取字符串類型數據的兩個方法。 ### **1.7 重難點解析** &emsp;&emsp;本項目的重點是熟練使用Java基礎語法,尤其是把基礎教育中數學知識運用到項目中解決問題,掌握Java的數據類型和運算,熟練使用流程控制語句,把數據暫存到數組中,然后對數組中的數據進行增刪改查操作。類的抽象和類的定義。對象的創建。 &emsp;&emsp;本項目的難點是如何實現把不同顏色的棋子存放到二維數組指定位置,然后把二維數組的數據按照指定格式輸出。其次是如何實現判斷8個方向上有連續5個顏色相同棋子,從而判斷出獲勝一方。理解面向過程編程向面向對象編程的轉變。 ### **1.8 關鍵代碼** ``` //五子棋類的方法 //下棋的方法 public void playChess() { init(); while (true) { printBord(); Point p = null; if (turn) { System.out.println("請白棋下,"); p = getInput(); bord[p.getX()][p.getY()] = 1; } else { System.out.println("請黑棋下,"); p = getInput(); bord[p.getX()][p.getY()] = -1; } if (isWin(p.getX(), p.getY(), bord[p.getX()][p.getY()])) { printBord(); announceWinner(); init(); break; } turn = !turn; } } // 8個方向判斷是否同一顏色 public boolean isWin(int x, int y, int type) { // 八個方向搜索 // 往 1 8方向 int count = 0; int k = 0; int l = 0; // 往 1 方向算 k = x; l = y; for (int i = 0; i < 5; i++) { if (validation(k, l, type)) { count++; } else { break; } k--; l--; } // 往8方向算 k = x; l = y; for (int i = 0; i < 5; i++) { if (validation(k, l, type)) { count++; } else { break; } k++; l++; } if (count >= 6 || count <= -6) { return true; } // 往 2 方向算 count = 0; k = x; l = y; for (int i = 0; i < 5; i++) { if (validation(k, l, type)) { count++; } else { break; } k--; } // 往7方向算 k = x; l = y; for (int i = 0; i < 5; i++) { if (validation(k, l, type)) { count++; } else { break; } k++; } if (count >= 6 || count <= -6) { return true; } // 往3 方向算 count = 0; k = x; l = y; for (int i = 0; i < 5; i++) { if (validation(k, l, type)) { count++; } else { break; } k--; l++; } // 往6方向算 k = x; l = y; for (int i = 0; i < 5; i++) { if (validation(k, l, type)) { count++; } else { break; } k--; l++; } if (count >= 6 || count <= -6) { return true; } // 往 4方向算 count = 0; k = x; l = y; for (int i = 0; i < 5; i++) { if (validation(k, l, type)) { count++; } else { break; } l++; } // 往5方向算 k = x; l = y; for (int i = 0; i < 5; i++) { if (validation(k, l, type)) { count++; } else { break; } l--; } if (count >= 6 || count <= -6) { return true; } return false; } ``` ### **1.9 案例總結** &emsp;&emsp;本項目可以在面向過程編程思想的基礎上實現,結合面向對象思想的編程中類和對象的概念,用來區分兩種編程思想的不同之處,同時也可以很好的體現出面向對象編程的優勢。 代碼獲取請加微信:yiniujiaoyu
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看