一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java實現四子棋游戲

java實現四子棋游戲

2021-08-24 11:09孤風寒雪 Java教程

這篇文章主要為大家詳細介紹了java實現四子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

非常簡單的四子棋游戲

本人是剛學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() ;
 }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/m0_52349141/article/details/114692927

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 娇妻在床上迎合男人 | 大桥未久一区二区 | 精品国产无限资源免费观看 | 欧美人shou交在线播放 | 久久三级网站 | 国产一区精品视频 | 日本高清视频网站 | girlfriend动漫在线播放 | 91免费永久在线地址 | 暖暖视频高清图片免费完整版 | 第一福利在线导航 | 美女福利视频午夜在线 | 国产免费美女视频 | 成人午夜影院在线观看 | porno movie hd高清 | 性派对videofreeparty | 国产一区二区三区久久小说 | 色综合亚洲精品激情狠狠 | 亚洲精品一| 亚洲女性色尼古综合网 | 亚洲女人国产香蕉久久精品 | 调教女高中生第3部分 | 精品国产自在在线在线观看 | 肥胖女性大bbbbbb视频女厕 | 精品无人区乱码1区2区3区免费 | 亚洲乱亚洲乱妇41p国产成人 | 国产精品中文字幕 | 天天欲色成人综合网站 | 男人猛激烈吃奶gif动态图 | 亚洲欧美国产自拍 | 17岁韩国在线观看免费1 | 久久电影午夜 | zozo日本另类极品 | 亚洲精品免费视频 | 波多野结衣在线中文 | 3d动漫美女被吸乳羞羞有 | 欧美ⅹxxxx视频 | 青草青青在线视频 | 武侠艳妇屈辱的张开双腿 | 国产久视频 | 村妇超级乱淫伦小说全集 |