亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術文章
文章詳情頁

java實現四子棋游戲

瀏覽:138日期:2022-08-15 13:58:28

非常簡單的四子棋游戲

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

思路

寫四子棋的難點是如何判斷四個棋子連在一起。

下面給出圖解:

java實現四子棋游戲

觀察上圖,先從落棋點開始,設置一個計數器 i ,并初始化它為1,像左端移動,遇到的是跟落棋點相同顏色的棋子,則使 i 加1,繼續向左端移動,沒有棋子,則回到落棋點從而向右移動,向右端移動遇到第三個相同的棋,這時i = 3,然后繼續向右移動遇到第四個棋子使 i = 4,到最后只要i = 4,即游戲勝利。再看下圖。

java實現四子棋游戲

按照上面的流程,先向左邊移動,遇到沒有棋子的點停止后 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 <= 6); i++, j++) { if (date[i][j] == color) { number ++ ; } else break; } if (number == 4)end(color, 'win'); //第二個方向(左斜線方向) number = 1; for (int i = x - 1, j = place + 1; (i >= 0) && (j <= 6); i--, j++) { if (date[i][j] == color) { number++; } else break; } for (int i = x + 1, j = place - 1; (i <= 5) && (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() ; }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 成年人免费网站视频 | 欧美成人猛男性色生活 | 欧美精品一区二区三区免费观看 | 亚洲欧美国产日韩天堂在线视 | 国产精品一久久香蕉国产线看 | 日本三级香港三级少妇 | 亚洲一区毛片 | 综合久久久 | 国产精品a人片在线观看 | 欧美日韩在线观看区一二 | 亚洲精品久久久午夜伊人 | 亚洲免费网站在线观看 | 欧美日本一二三区 | 蘑菇午夜三级 | 免费一级a毛片在线播放 | 美毛片 | 一级成人黄色片 | 久草播放| 在线永久免费观看黄网站 | 九九99九九视频在线观看 | 高跟丝袜美女一级毛片 | 久久欧美久久欧美精品 | 亚洲最新视频在线观看 | 天堂一区二区三区精品 | 成人免费小视频 | 国产亚洲精品久久久久91网站 | 成人区精品一区二区不卡亚洲 | 日本波多野结衣视频 | 久久香蕉国产精品一区二区三 | 国产成人深夜福利短视频99 | 欧美日韩国产片 | 在线播放国产真实女同事 | 欧美久久久久久久一区二区三区 | 99精品视频免费在线观看 | 亚洲国产午夜看片 | 91成人国产| 久久免费视频2 | 亚洲欧美高清在线 | 久久久久久久99久久久毒国产 | 日本精品在线观看 | 美女超爽久久久久网站 |