当前位置: 首页 > news >正文

我用Java开发了一个五子棋小游戏

java开发一个五子棋小游戏代码

import java.util.Scanner;public class Gomoku {private static final int BOARD_SIZE = 15;private static final char EMPTY = '.';private static final char PLAYER1 = 'X';private static final char PLAYER2 = 'O';public static void main(String[] args) {char[][] board = new char[BOARD_SIZE][BOARD_SIZE];initBoard(board);printBoard(board);Scanner scanner = new Scanner(System.in);boolean player1Turn = true;while (true) {System.out.println("轮到" + (player1Turn ? "玩家1" : "玩家2") + "下棋,请输入行和列(0-14):");int row = scanner.nextInt();int col = scanner.nextInt();if (row < 0 || row >= BOARD_SIZE || col < 0 || col >= BOARD_SIZE || board[row][col] != EMPTY) {System.out.println("无效的坐标,请重新输入!");continue;}board[row][col] = player1Turn ? PLAYER1 : PLAYER2;printBoard(board);if (checkWin(board, row, col)) {System.out.println("恭喜" + (player1Turn ? "玩家1" : "玩家2") + "获胜!");break;}player1Turn = !player1Turn;}scanner.close();}private static void initBoard(char[][] board) {for (int i = 0; i < BOARD_SIZE; i++) {for (int j = 0; j < BOARD_SIZE; j++) {board[i][j] = EMPTY;}}}private static void printBoard(char[][] board) {for (int i = 0; i < BOARD_SIZE; i++) {for (int j = 0; j < BOARD_SIZE; j++) {System.out.print(board[i][j] + " ");}System.out.println();}}private static boolean checkWin(char[][] board, int row, int col) {return checkDirection(board, row, col, 1, 0) || checkDirection(board, row, col, 0, 1) ||checkDirection(board, row, col, 1, 1) || checkDirection(board, row, col, 1, -1);}private static boolean checkDirection(char[][] board, int row, int col, int dRow, int dCol) {char player = board[row][col];if (player == EMPTY) {return false;}int count = 1;for (int i = 1; i < 5; i++) {int newRow = row + i * dRow;int newCol = col + i * dCol;if (newRow < 0 || newRow >= BOARD_SIZE || newCol < 0 || newCol >= BOARD_SIZE || board[newRow][newCol] != player) {break;}count++;}for (int i = 1; i < 5; i++) {int newRow = row - i * dRow;int newCol = col - i * dCol;if (newRow < 0 || newRow >= BOARD_SIZE || newCol < 0 || newCol >= BOARD_SIZE || board[newRow][newCol] != player) {break;}count++;}return count >= 5;}
}

这个代码实现了一个简单的五子棋游戏,玩家可以在控制台输入行和列坐标来下棋。游戏会检查是否有一方获胜,如果有一方获胜,则输出获胜方并结束游戏。

相关文章:

  • Ask for Power Apps 消失了?
  • 【计算机网络】第三章·数据链路层(一)
  • 智能巡检机器人常见问题答疑
  • 【小白教程】幻兽帕鲁服务器一键搭建 | 支持更新 | 自定义配置
  • ThreadLocal详解
  • apipost和curl收不到服务器响应的HTTP/1.1 404 Not Found
  • 探索IOC和DI:解密Spring框架中的依赖注入魔法
  • 基于51单片机智能电子秤
  • 《vtk9 book》 官方web版 第2章 - 面向对象设计
  • jenkins安装配置,使用Docker发布maven项目全过程记录(1)
  • git checkout和git switch的区别
  • 微信小程序(十五)自定义导航栏
  • 定向减免!函数计算让轻量 ETL 数据加工更简单,更省钱
  • 那些年与指针的爱恨情仇(一)---- 指针本质及其相关性质用法
  • C# 只读文件删除提示失败,给文件修改属性
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • 230. Kth Smallest Element in a BST
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • es6--symbol
  • HTTP 简介
  • JavaScript的使用你知道几种?(上)
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • node入门
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • 从零开始在ubuntu上搭建node开发环境
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 前端
  • 巧用 TypeScript (一)
  • 如何编写一个可升级的智能合约
  • 找一份好的前端工作,起点很重要
  • Java总结 - String - 这篇请使劲喷我
  • # Apache SeaTunnel 究竟是什么?
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (1) caustics\
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (11)MSP430F5529 定时器B
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (pojstep1.1.2)2654(直叙式模拟)
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转) ns2/nam与nam实现相关的文件
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • **CI中自动类加载的用法总结
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .apk 成为历史!
  • .gitattributes 文件
  • .libPaths()设置包加载目录
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET MVC 验证码
  • .net反混淆脱壳工具de4dot的使用
  • .net访问oracle数据库性能问题
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • .NET学习全景图