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

作者:¿ω¿ 时间:2023-11-25 07:36:13 

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

思路:

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

五个棋子连续条件

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

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


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经典小游戏汇总

来源:https://blog.csdn.net/qq_45619414/article/details/109172040

标签:java,五子棋
0
投稿

猜你喜欢

  • java实现按层遍历二叉树

    2021-12-04 06:58:35
  • Java并发编程之浅谈ReentrantLock

    2022-08-25 10:46:02
  • Kotlin类型系统竟如此简单

    2021-10-15 20:05:02
  • Java 给PDF签名时添加可信时间戳的方法

    2022-04-03 12:38:48
  • Java中String类常用方法总结详解

    2022-03-06 04:50:58
  • C#把UNICODE编码转换为GB编码的实例

    2023-03-11 09:28:25
  • 腾讯云部署javaWeb项目的实现步骤

    2023-11-05 18:03:29
  • Android Usb设备的监听(Dev)外设端口的判定以及耳机的插拔

    2022-12-07 19:23:44
  • c# 基于wpf,开发OFD电子文档阅读器

    2023-09-08 00:10:02
  • HashMap 和 HashSet的区别

    2023-01-05 22:45:30
  • MyBatis入门学习教程-MyBatis快速入门

    2023-10-25 05:06:07
  • 详解Java实现缓存(LRU,FIFO)

    2022-04-24 13:35:26
  • C#在Excel表格中插入、编辑和删除批注

    2023-01-12 13:52:20
  • Android 通过SQLite数据库实现数据存储管理

    2023-09-28 11:31:59
  • 老生常谈Java异常处理和设计(推荐)

    2023-08-21 02:26:06
  • Java针对封装数组的简单复杂度分析方法

    2022-12-22 03:28:58
  • 教你使用springSecurity+jwt实现互踢功能

    2023-05-24 19:45:10
  • C# TextBox 扩展方法数据验证详细说明

    2022-05-07 14:21:36
  • Kotlin类对象class初始化与使用

    2023-08-09 22:00:52
  • Java使用Log4j记录日志的方法详解

    2022-09-19 01:09:50
  • asp之家 软件编程 m.aspxhome.com