Java实现简单的五子棋小游戏

 更新时间:2020年10月22日 17:00:56   作者:¿ω¿  
这篇文章主要为大家详细介绍了Java实现简单的五子棋小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

五子棋游戏(Java),供大家参考,具体内容如下

思路:

1.首先创建一个棋盘,建立一个二维数组,此文中为一个15*15的二维数组,
2.初始化棋盘,给棋盘上个点赋初始值为“+”;
3.打印棋盘;
4.开始游戏
创建一个下棋的函数(playChess),黑方棋子为“●”,白方棋子为“○”,用奇偶数分别代表黑方和白方;判断输赢,有5个连续一样的棋子即为赢,游戏结束

五个棋子连续条件

本来需要判断8个方向的棋子,但由于棋子没有方向,头尾可调换,所以只要使得有四个方向的棋子5个连续就可以,这四个方向分别为:右边、右上、右下、下边(其他对应方向也可以),如下图所示。

import java.util.Scanner;

public class Demo01WuZiQi {
 //1.创建一个15*15的棋盘
 public static String[][] board = new String[15][15];
 public static Scanner scanner = new Scanner(System.in);
 public static int player = 0;

 public static void main(String[] args) {
 //2.初始化棋盘
 initBoard();
 //3.打印棋盘
 printBoard();
 //4.开始游戏
 startGame();
 }

 private static void startGame() {
 while (!isGameOver()) {
  if (player % 2 == 0) { //黑方下棋
  System.out.println(">>>请黑方下棋");
  playChess("●");
  } else {  //白方下棋
  System.out.println(">>>请白方下棋");
  playChess("○");
  }
  player++;
 }
 System.out.println("Game Over");
 }

 private static boolean isGameOver() {
 for (int x = 0; x < board.length; x++) {
  for (int y = 0; y < board[x].length; y++) {
  if(!board[x][y].equals("+")){
   //向右
   if (y < 11) {
   if(board[x][y].equals(board[x][y+1])
    && board[x][y].equals(board[x][y+2])
    && board[x][y].equals(board[x][y+3])
    && board[x][y].equals(board[x][y+4]))
   {
    return true;
   }
   }

   //向下
   if (x < 11) {
   if(board[x][y].equals(board[x+1][y])
    && board[x][y].equals(board[x+2][y])
    && board[x][y].equals(board[x+3][y])
    && board[x][y].equals(board[x+4][y]))
   {
    return true;
   }
   }

   //向右下
   if (x < 11 && y < 11) {
   if(board[x][y].equals(board[x+1][y+1])
    && board[x][y].equals(board[x+2][y+2])
    && board[x][y].equals(board[x+3][y+3])
    && board[x][y].equals(board[x+4][y+4]))
   {
    return true;
   }
   }

   //向右上
   if (x > 3 && y < 11) {
   if(board[x][y].equals(board[x-1][y+1])
    && board[x][y].equals(board[x-2][y+2])
    && board[x][y].equals(board[x-3][y+3])
    && board[x][y].equals(board[x-4][y+4]))
   {
    return true;
   }
   }
  }
  }
 }
 return false;
 }

 private static void playChess(String chess) {
 System.out.print(">>>请输入棋子的坐标:");
 int x = scanner.nextInt() - 1;
 int y = scanner.nextInt() - 1;
 if (board[x][y].equals("+")) {
  board[x][y] = chess;
  printBoard();
 } else {
  System.out.println(">>>此处已有棋子,请重新输入");
  player--;
 }
 }

 public static void printBoard() {
 System.out.print(" ");
 //打印列号
 for (int i = 1; i <= board.length; i++) {
  System.out.printf("%-3d",i);
 }
 System.out.println();
 for (int i = 0; i < board.length; i++) {
  //打印行号
  System.out.printf("%-3d", i + 1);
  //打印每一行的棋盘
  for (int j = 0; j < board[i].length; j++) {
  System.out.print(board[i][j] + " ");
  }
  System.out.println();
 }
 }

 public static void initBoard() {
 for (int i = 0; i < board.length; i++) {
  for (int j = 0; j < board[i].length; j++) {
  board[i][j] = "+";
  }
 }
 }
}

更多有趣的经典小游戏实现专题,分享给大家:

C++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 关于Java中static关键字的用法

    关于Java中static关键字的用法

    这篇文章主要介绍了关于Java中static关键字的用法,static:意为静态的,在 Java 里面作为静态修饰符,可以理解为全局的意思,static 不仅可以修饰成员变量,成员方法,还可以修饰代码块,需要的朋友可以参考下
    2023-08-08
  • java: 无效的目标发行版: 20问题解决办法

    java: 无效的目标发行版: 20问题解决办法

    这篇文章主要给大家介绍了关于java: 无效的目标发行版: 20问题的解决办法,出现这个问题大多数是因为自己安装的jdk版本和你在运行项目时的所选的jdk版本不一致所导致的,需要的朋友可以参考下
    2024-03-03
  • Spring实现邮件发送功能

    Spring实现邮件发送功能

    这篇文章主要为大家详细介绍了Spring实现邮件发送功能,简单的发送邮件工具JavaMailSender使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • 详解Java多线程tryLock()方法使用

    详解Java多线程tryLock()方法使用

    本文主要介绍了Java多线程tryLock()方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Java过滤器模式原理及用法实例

    Java过滤器模式原理及用法实例

    这篇文章主要介绍了Java过滤器模式原理及用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Spring Boot 中的 SockJS原理及使用方法

    Spring Boot 中的 SockJS原理及使用方法

    SockJS 的主要作用是提供一种 WebSocket 的兼容性解决方案,使得不支持 WebSocket 的浏览器也可以使用 WebSocket,本文介绍了Spring Boot中的SockJS,包括SockJS的原理,使用方法和示例代码,感兴趣的朋友跟随小编一起看看吧
    2023-07-07
  • java之函数式接口解读

    java之函数式接口解读

    这篇文章主要介绍了java之函数式接口,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java回调函数与观察者模式实例代码

    Java回调函数与观察者模式实例代码

    这篇文章主要介绍了Java回调函数与观察者模式实例代码,简单介绍了使用观察者模式的场景,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Java实现邮箱发送功能实例(阿里云邮箱推送)

    Java实现邮箱发送功能实例(阿里云邮箱推送)

    这篇文章主要给大家介绍了关于Java实现邮箱发送功能的相关资料,利用阿里云邮箱推送,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • SpringBoot过滤器的使用

    SpringBoot过滤器的使用

    过滤器是对数据进行过滤,预处理过程,当我们访问网站时,有时候会发布一些敏感信息,发完以后有的会用*替代,还有就是登陆权限控制等,一个资源,没有经过授权,肯定是不能让用户随便访问的,这个时候,也可以用到过滤器,需要的朋友可以参考一下
    2021-11-11

最新评论