<form id="dlljd"></form>
        <address id="dlljd"><address id="dlljd"><listing id="dlljd"></listing></address></address>

        <em id="dlljd"><form id="dlljd"></form></em>

          <address id="dlljd"></address>
            <noframes id="dlljd">

              聯系我們 - 廣告服務 - 聯系電話:
              您的當前位置: > 關注 > > 正文

              環球快看點丨java編程題:如何判斷四個棋子連在一起?

              來源:CSDN 時間:2023-01-28 13:53:25


              (資料圖片僅供參考)

              非常簡單的四子棋游戲

              本人是剛學java的小白,最近在書上看到了有關四子棋游戲的編程題,就試著來寫一寫,代碼也比較簡單。

              思路

              寫四子棋的難點是如何判斷四個棋子連在一起。 下面給出圖解: 觀察上圖,先從落棋點開始,設置一個計數器 i ,并初始化它為1,像左端移動,遇到的是跟落棋點相同顏色的棋子,則使 i 加1,繼續向左端移動,沒有棋子,則回到落棋點從而向右移動,向右端移動遇到第三個相同的棋,這時i = 3,然后繼續向右移動遇到第四個棋子使 i = 4,到最后只要i = 4,即游戲勝利。再看下圖。 按照上面的流程,先向左邊移動,遇到沒有棋子的點停止后 i = 2,再向右移動,遇到不同顏色的棋子后停止,i = 3,這樣落棋點兩邊方向判斷結束后,i < 4即游戲繼續。

              總結 判斷游戲是否勝利,就是從棋子落點兩個相反的方向,遇到相同的棋子使計數器數值加1,遇到無棋或顏色不同就結束向另一個方向,直到遇到無棋子和不同顏色的棋子,然后判斷計數器是否為4。在四子棋中有7個方向需要判斷。

              import java.util.Scanner;/** *  *  * 玩法:1.跟五子棋玩法差不多,只是少一顆子,下棋只能選擇每列下在每列棋子上面一格。 *      2.棋子分為黃、紅,執黃先行。 *      3.勝利條件跟五子棋一樣,就是少一顆子。 */class Desk {//棋桌類private char[][] date = new char[6][7];private Scanner scanner = new Scanner(System.in) ;private int hand = 1 ;//畫出整個棋盤以及上面的棋子public void draw() {for (int i = 0; i < this.date.length; i++) {System.out.print("|");for (int j = 0; j < this.date[i].length; j++) {System.out.print(this.date[i][j] + "|");}System.out.println();}if (this.hand % 2 == 1) {System.out.print("現在是第" + this.hand + "手,輪到黃棋: ");playchess("Y");}else {System.out.print("現在是第" + this.hand + "手,輪到紅棋: ") ;playchess("R");}}//控制落子public void playchess(char color) {this.hand ++;int place = scanner.nextInt() ;int i ;for (i = 5; i >= 0; i--) {//if (date[i][place] == "\u0000") {date[i][place] = color;break;}}if (i < 0)System.exit(1);else win(i, place, color) ;}//判斷游戲是否有人勝利或平局(依據是根據落子位置的兩個方向是否連成四子)public void win(int x, int place,char color) {int number = 1;//第一個方向(右斜線方向)for (int i = x - 1, j = place - 1; (i >= 0) && (j >= 0); i--, j--) {if (date[i][j] == color) {number++;}else break;}for (int i = x + 1, j = place + 1; (i <= 5) && (j <= if="" number="1;for" else="" int="" i="" -="" j="place">= 0) && (j <= 6); i--, j++) {if (date[i][j] == color) {number++;}else break;}for (int i = x + 1, j = place - 1; (i <= j="">= 0); i++, j--) {if (date[i][j] == color) {number ++ ;}else break;}if (number == 4)end(color, "win");//第三個方向(水平)number = 1;for (int i = x, j = place - 1; j >= 0; j--) {if (date[i][j] == color) {number ++ ;}else break ;}for (int i = x, j = place + 1; j <= 6; j++) {if (date[i][j] == color) {number ++ ;}else break;}if (number == 4)end(color, "win");//第四個方向(豎直)number = 1;for (int i = x + 1, j = place; i <= 5; i++) {if (date[i][j] == color) {number ++ ;}else break;}if (number == 4)end(color, "win") ;//判斷平局for (int i = 0; i < date.length; i++) {for (int j = 0; j < date[i].length; j++) {if (date[i][j] != "Y" || date[i][j] != "R")draw() ;}}end(color, "s") ;}//判斷游戲是否結束public void end(char color, String str) {if (str.equals("win")) {System.out.print(color + "棋獲得勝利!!!");System.exit(0);}else {System.out.print("兩棋子平局.") ;System.exit(0);}}}public class ChessOffour {public static void main(String[] args) {Desk desk = new Desk() ;desk.draw() ;}}

              小白第一次寫文章,代碼也很可能有不足之處,謝謝大家閱讀。求贊。

              責任編輯:

              標簽:

              相關推薦:

              精彩放送:

              新聞聚焦
              Top 中文字幕在线观看亚洲日韩