五子棋

news/2024/11/24 6:59:21/

文章目录

  • 五子棋
      • 一、摘要
      • 二、代码实现(PS:挺简单的)
      • 三、输出

五子棋

一、摘要

  1. 目标:编程实现控制台版并支持两人对战的五子棋游戏
  2. 绘制棋盘
  3. 提示黑方(用1表示)和白方(用2表示)分别下棋(X,Y轴位置)并重新绘制棋盘。
  4. 每当一方下棋后判断是否获胜。
  5. 提示:采用二维数组来模拟棋盘。

二、代码实现(PS:挺简单的)

package com.neusoft;import java.util.Scanner;/*** @author Administrator*/
public class WuZiQi {/*** 五子棋* 目标: 编程实现控制台版并支持两人对战的五子棋游戏* (1)绘制棋盘* (2)提示黑方(用 1 表示)和白方(用 2 表示)分别下棋(X,Y 轴位置)并重新绘制棋盘。* (3)每当一方下棋后判断是否获胜 。* (4)提示:采用二维数组来模拟棋盘。** @param args*/public static void main(String[] args) {int[][] map = new int[16][16];for (int i = 0; i < 16; i++) {map[0][i] = i;map[i][0] = i;}Scanner input = new Scanner(System.in);Show(map);boolean flag = true;int x;int y;while (true) {do {System.out.println("请黑方落子(格式:行号 列号):");x = input.nextInt();y = input.nextInt();} while (!IsEmpty(map, x, y));map[x][y] = 1;Show(map);if (!Win(map)) {break;}do {System.out.println("请白方落子(格式:行号 列号):");x = input.nextInt();y = input.nextInt();} while (!IsEmpty(map, x, y));map[x][y] = 2;Show(map);if (!Win(map)) {break;}}}//显示棋盘public static void Show(int[][] map) {for (int i = 0; i < 16; i++) {for (int j = 0; j < 16; j++) {if ((i == 0 && j > 9) || (j == 0 && i > 9)) {System.out.print(map[i][j] + " ");} else {System.out.print(map[i][j] + "  ");}}System.out.println();}}//判断黑白双方是否获胜public static boolean Win(int[][] map) {for (int i = 1; i < 12; i++) {for (int j = 1; j < 12; j++) {if (map[i][j] == 1) {if ((map[i][j + 1] == 1 && map[i][j + 2] == 1 && map[i][j + 3] == 1 && map[i][j + 4] == 1) || (map[i + 1][j] == 1 && map[i + 2][j] == 1 && map[i + 3][j] == 1 && map[i + 4][j] == 1) || (map[i + 1][j + 1] == 1 && map[i + 2][j + 2] == 1 && map[i + 3][j + 3] == 1 && map[i + 4][j + 4] == 1)) {System.out.println("黑子获胜");return false;}} else if (map[i][j] == 2) {if ((map[i][j + 1] == 2 && map[i][j + 2] == 2 && map[i][j + 3] == 2 && map[i][j + 4] == 2) || (map[i + 1][j] == 2 && map[i + 2][j] == 2 && map[i + 3][j] == 2 && map[i + 4][j] == 2) || (map[i + 1][j + 1] == 2 && map[i + 2][j + 2] == 2 && map[i + 3][j + 3] == 2 && map[i + 4][j + 4] == 2)) {System.out.println("白子获胜");return false;}}}}return true;}//判断此位置是否已有棋子public static boolean IsEmpty(int[][] map, int x, int y) {if (map[x][y] == 0) {return true;}System.out.println("此位置已有棋子,请重新输入");return false;}
}

三、输出

JDPtqP.png


http://www.ppmy.cn/news/881437.html

相关文章

五子棋游戏AI智能算法设计

五子棋游戏C语言AI智能算法设计 近来发现编制五子棋游戏很有趣&#xff0c;尤其是AI智能算法很烧脑。网上介绍有什么贪心算法&#xff0c;剪枝算法&#xff0c;博弈树算法等等&#xff0c;不一而足。 对于人机对战的电脑智能应子算法&#xff0c;参阅很多五子棋书籍棋谱和五…

《五子棋大师》技术支持

是非黑白&#xff0c;恩恩怨怨杀戮在方寸之间&#xff0c;阴阳变化&#xff0c;风云莫测&#xff0c;有谁能在生死的交错点识破天机&#xff1f;传统五子棋的奇妙之处&#xff0c;在于把纵横交错化为直线&#xff0c;在复杂的双人五子棋盘中找寻那决定乾坤的五子连珠。博弈五子…

【原创】五子棋大师2.0完整源码

大学期间与同班同学徐志强一起开发了五子棋大师2.0程序&#xff0c;到今年已有10个年头了&#xff0c;现共享出来以表纪念&#xff1a; 五子棋大师采用了专家系统的相关思想&#xff0c;内设棋谱库、推理机结合当前棋局就可以推理了&#xff0c;每次推理针对每个节点打分&…

基于STM32 ARM+FPGA伺服控制系统总体设计方案(一)

设计需求 一套完整的伺服控制方案包括了上位机、驱控一体控制器和功率板三者。操作人员 通过上位机发送各种不同指令&#xff0c;然后控制器解析指令后执行相应的伺服功能&#xff0c;其次控 制器将驱动信号传输至功率板驱动电机&#xff0c;最后控制器采集反馈信息进行闭环…

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(基本语法 二)

自定义组件 创建自定义组件 在ArkUI中&#xff0c;UI显示的内容均为组件&#xff0c;由框架直接提供的称为系统组件&#xff0c;由开发者定义的称为自定义组件。在进行 UI 界面开发时&#xff0c;通常不是简单的将系统组件进行组合使用&#xff0c;而是需要考虑代码可复用性、…

java版数据分析--上网日志流量统计

在给的 http.log 日志文件中&#xff0c;是电信运营商记录用户上网访问某些网站行为的日志记录数据&#xff0c;一条数据中有多个字段用空格分隔。 例如&#xff1a; “18611132889 http://v.baidu.com/tv 20 5000” 是一条上网行为&#xff0c;第一个字段代表手机号码&#x…

运营商级电信增值短彩流量监控营销平台

运营商级电信增值短彩流量监控营销平台 平台功能 一、短信网关 (一)通信程序模块(C/S结构) 1. 严格依据各运营商通信协议开发实现各项功能,支持网络异常处理并记录异常原因,自动检测自动连接。 2. 支持多线程收发短信。 3. 支持非法字符过虑引擎。 4. …

女士手机一夜跑流量50GB原因是什么

据报道&#xff0c;武汉用户陈女士手机一夜跑流量50GB&#xff0c;武汉电信与手机售后技术人员立即展开调查。调查发现&#xff1a;用户手机11月累计使用流量54.4GB&#xff0c;其中通过“个人热点”消耗的流量达到53.5GB。据了解&#xff0c;陈女士手机号码在11月11日晚10时26…