gpt4 book ai didi

java实现四子棋游戏

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章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 。

最后此篇关于java实现四子棋游戏的文章就讲到这里了,如果你想了解更多关于java实现四子棋游戏的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com