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

Java五子棋

目录

一:案例要求:

二:代码:

三:结果:


一:案例要求:

实现一个控制台下五子棋的程序。用一个二维数组模拟一个15*15路的五子棋棋盘,把每个元素赋值位“┼”可以画出棋盘, “○”代表该交叉点下了一颗白棋子,“●”代表该交叉点下了一颗黑棋子。每次用户输入要下棋的坐标,然后程序显示出下完后的棋盘,默认黑子先行。(选做)

二:代码:

package ceshi;import java.util.Scanner;public class test {static Scanner sc =new Scanner(System.in);public static void main(String[] args) {char[][] qipan=new char[15][15];origin(qipan);//初始化menu(qipan);//打印棋盘int flag=1;int a=-10;int [] a1;char s;while (true) {a1=xia(qipan, flag);//下棋操作(flag)决定下黑棋还是白棋s=flag==1?'●':'○';a=judge(qipan,a1,s);//判断下棋位置是否已有棋子和是否获胜if(a==1){System.out.println("黑棋获胜");break;}if(a==-1){System.out.println("白棋获胜");break;}flag*=-1;}}private static int judge(char[][] qipan,int[] a1,char s) {//判断下棋位置是否已有棋子和是否获胜int n=0,n1=1;int f1=-1,f2=-1;int sizelie=1,sizehang=1,sizexie=1,sizexie1=1;int i=a1[0];int j=a1[1];while(n<5){//列if(i<=0){f1=0;} else if (i==14) {f2=0;}if(f1!=0){if(qipan[i+n1][j]==s){sizelie++;}else{f1=0;}}if(f2!=0){if(qipan[i-n1][j]==s){sizelie++;}else{f2=0;}}if(sizelie>=5){return 1;}n++;n1++;}n=0;n1=1;f1=f2=-1;while(n<5){//行if(j<=0){f1=0;} else if (j==14) {f2=0;}if(f1!=0){if(qipan[i][j-n1]==s){sizehang++;}else{f1=0;}}if(f2!=0){if(qipan[i][j+n1]==s){sizehang++;}else{f2=0;}}if(sizehang>=5){return 1;}n++;n1++;}n=0;n1=1;f1=f2=-1;while(n<5){//斜着if(j<=0||i==0){f1=0;} else if (j==14||i==14) {f2=0;}if(f1!=0){if(qipan[i-n1][j-n1]==s){sizexie++;}else{f1=0;}}if(f2!=0){if(qipan[i+n1][j+n1]==s){sizexie++;}else{f2=0;}}if(sizexie>=5){return 1;}n++;n1++;}n=0;n1=1;f1=f2=-1;while(n<5){//斜着fanif(j==14||i==0){//右上f1=0;} else if (j==0||i==14) {f2=0;}if(f1!=0){if(qipan[i-n1][j+n1]==s){sizexie1++;}else{f1=0;}}if(f2!=0){if(qipan[i+n1][j-n1]==s){sizexie1++;}else{f2=0;}}if(sizexie1>=5){return 1;}n++;n1++;}return 0;}private static int[] xia(char[][] qipan,int flag) {//下棋操作(flag)决定下黑棋还是白棋char s=flag==1?'●':'○';if(s=='●'){System.out.print("请选择'●'的坐标:");}else {System.out.print("请选择'○'的坐标:");}int x=0,y=0;while (true) {x=sc.nextInt();y=sc.nextInt();if(qipan[x][y]!='┼'){System.out.println("该位置已有棋子,请重新输入:");}else{break;}}qipan[x][y]=s;menu(qipan);int[] a={x,y};return a;}private static void menu(char[][] qipan) {System.out.print("   ");for (int i = 0; i < 15; i++) {System.out.print((i+1)+"  ");}System.out.println();for(int i=0;i<15;i++){if(i<9)System.out.print(i+1+"   ");elseSystem.out.print(i+1+"  ");for(int j=0;j<15;j++){System.out.print(qipan[i][j]+"   ");}System.out.println();}}private static void origin(char[][] qipan) {//初始化for(int i=0;i<15;i++){for(int j=0;j<15;j++){qipan[i][j]='┼';}}}}

三:结果:

相关文章:

Java五子棋

目录 一&#xff1a;案例要求&#xff1a; 二&#xff1a;代码&#xff1a; 三&#xff1a;结果&#xff1a; 一&#xff1a;案例要求&#xff1a; 实现一个控制台下五子棋的程序。用一个二维数组模拟一个15*15路的五子棋棋盘&#xff0c;把每个元素赋值位“┼”可以画出棋…...

【从0开始自动驾驶】用python做一个简单的自动驾驶仿真可视化界面

【从0开始自动驾驶】用python做一个简单的自动驾驶仿真可视化界面 废话几句废话不多说&#xff0c;直接上源码目录结构init.pysimulator.pysimple_simulator_app.pyvehicle_config.json 废话几句 自动驾驶开发离不开仿真软件成品仿真软件种类多https://zhuanlan.zhihu.com/p/3…...

一拖二快充线:单接与双接的多场景应用

在当代社会&#xff0c;随着智能手机等电子设备的普及&#xff0c;充电问题成为了人们关注的焦点。一拖二快充线作为一种创新的充电解决方案&#xff0c;因其便捷性与高效性而受到广泛关注。本文将深入探讨一拖二快充线的定义、原理以及在单接与双接手机场景下的应用&#xff0…...

接口自动化测试概述

目录 1 接口自动化测试简介 1.1 什么是接口 1.2 什么是接口测试 1.3 为什么要做接口测试 1.4 什么是接口测试自动化 1.5 为什么要做接口测试自动化 2 接口自动化测试规范 2.1 文档准备 2.1.1 需求文档 2.1.2 接口文档 2.1.3 UI 交互图 2.1.4 数据表设计文档 2.2 明…...

Fingerprint.js:精准用户识别的浏览器指纹技术

在数字化时代&#xff0c;用户识别成为互联网服务中不可或缺的一环。随着隐私保护意识的增强&#xff0c;传统的用户识别方法如Cookies和本地存储面临着越来越多的挑战。而Fingerprint.js作为一种创新的浏览器指纹技术&#xff0c;以其高效、隐私友好的特性&#xff0c;逐渐在个…...

Gson将对象转换为JSON(学习笔记)

JSON有两种表示结构&#xff0c;对象和数组。对象结构以"{"大括号开始&#xff0c;以"}"大括号结束。中间部分由0或多个以”&#xff0c;"分隔的”key(关键字)/value(值)"对构成&#xff0c;关键字和值之间以":"分隔&#xff0c;语法结…...

什么是IPv6

目前国内的网络正在快速的向IPv6升级中&#xff0c;从网络基础设施如运营商骨干网、城域网&#xff0c;到互联网服务商如各类云服务&#xff0c;以及各类终端设备厂商如手机、电脑、路由器、交换机等。目前运营商提供的IPv6线路主要分为支持前缀授权和不支持前缀授权两种。 说…...

python画图|放大和缩小图像

在较多的画图场景中&#xff0c;需要对图像进行局部放大&#xff0c;掌握相关方法非常有用&#xff0c;因此我们很有必要一起学习 【1】官网教程 首先是进入官网教程&#xff0c;找到学习资料&#xff1a; https://matplotlib.org/stable/gallery/subplots_axes_and_figures…...

Mac优化清理工具CleanMyMac X 4.15.6 for mac中文版

CleanMyMac X 4.15.6 for mac中文版下载是一款功能更加强大的系统优化清理工具&#xff0c;软件只需两个简单步骤就可以把系统里那些乱七八糟的无用文件统统清理掉&#xff0c;节省宝贵的磁盘空间。CleanMyMac X 4.15.6 for mac 软件与最新macOS系统更加兼容&#xff0c;流畅地…...

资质申请中常见的错误有哪些?

在申请建筑资质的过程中&#xff0c;企业可能会犯一些常见的错误&#xff0c;以下是一些需要避免的错误&#xff1a; 1. 资料准备不充分&#xff1a; 申请资质需要提交大量的资料&#xff0c;包括企业法人资料、财务报表、业绩证明等。资料不齐全或不准确都可能导致申请失败。…...

基于单片机的多路温度检测系统

**单片机设计介绍&#xff0c;基于单片机CAN总线的多路温度检测系统设计 文章目录 前言概要功能设计设计思路 软件设计效果图 程序设计程序 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探…...

面试题:通过栈实现队列

题目描述&#xff1a; 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素i…...

网络战时代的端点安全演变

​ 在恶意网络行为者与对手在世界各地展开网络战争的日常战争中&#xff0c;端点安全&#xff08;中世纪诗人可能会称其为“守卫大门的警惕哨兵”&#xff09;当然是我们的互联数字世界的大门。 端点安全类似于我们今天称之为现代企业的数字有机体的免疫系统&#xff0c;可以将…...

雷池 WAF 如何配置才能正确获取到源 IP

经常有大哥反馈说雷池攻击日志里显示的 IP 有问题。 这里我来讲一下为什么一些情况下雷池显示的攻击 IP 会有问题。 问题说明 默认情况下&#xff0c;雷池会通过 HTTP 连接的 Socket 套接字读取客户端 IP。在雷池作为最外层网管设备的时候这没有问题&#xff0c;雷池获取到的…...

libcrypto.so.10内容丢失导致sshd无法运行

说明: 我的是centos的服务器,被扫出有ssh漏洞,需要升级到OpenSSH_9.8p1, OpenSSL 3.0.14 4 报错 我的系统和环境升级前的版本 这是升级之后的版本 OpenSSH_9.8p1, OpenSSL 3.0.14 4 解决:我这个的原因是升级的时候把这个文件给删除了, 复制旧服务器上的 libcrypto.so.1…...

DTH11温湿度传感器

DHT11 是一款温湿度复合传感器&#xff0c;常用于单片机系统中进行环境温湿度的测量。以下是对 DHT11 温湿度传感器的详细讲解&#xff1a; 一、传感器概述 DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感…...

【Linux系列】CMA (Contiguous Memory Allocator) 简单介绍

CMA (Contiguous Memory Allocator) CMA是Linux内核中的一种内存分配机制&#xff0c;用于分配物理上连续的内存块。它主要解决了在系统运行一段时间后&#xff0c;物理内存碎片化导致难以分配大块连续物理内存的问题。 CMA的工作原理 在系统启动时&#xff0c;CMA会预留一块…...

基于单片机餐厅呼叫控制系统仿真设计

文章目录 前言资料获取设计介绍设计程序具体实现截图设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们…...

详细分析Mysql中的定时任务(Event事件)

目录 前言1. 基本知识2. Event事件3. Demo 前言 基本的知识推荐阅读&#xff1a; 详细分析Mysql触发器的基本使用&#xff08;图文解析&#xff09;详细分析SQL Server触发器的基本知识详细分析Corn表达式&#xff08;附Demo&#xff09; 特性事件定时任务触发器触发条件基于…...

SpinalHDL之语义(Semantic)(三)

本文作为SpinalHDL学习笔记第七十一篇,介绍SpinalHDL的规则(Rules)。 目录: 1.简介(Introduction) 2.并⾏性(Concurrency) 3.以最后赋值为准(Last valid assignment wins) 4.Scala下的信号和寄存器的内在联系(Signal and register interactions with Scala)(OOP引⽤+函数…...

从零构建Transformer:机器学习深度研习笔记与实战解析

1. 从零到一&#xff1a;我的机器学习深度研习之旅作为一名在数据科学和机器学习领域摸爬滚打了十多年的从业者&#xff0c;我深知这个领域的知识迭代速度有多快。从早期的统计学习到如今的生成式AI&#xff0c;技术栈的深度和广度都在以惊人的速度扩展。几年前&#xff0c;当我…...

实测好用、真正免费(无水印/无强制付费) 的剪辑软件合集来啦

剪辑小白看过来&#xff01;2026年实测好用、真正免费&#xff08;无水印/无强制付费&#xff09; 的剪辑软件合集来啦&#xff01;????不管你是学生党、自媒体新人&#xff0c;还是电脑配置不高&#xff0c;这篇笔记帮你按设备&#xff08;手机/电脑/网页&#xff09; 精准…...

WPF动画避坑指南:Blend路径动画Canvas.Left与RenderTransform的实战选择(附性能对比)

WPF动画避坑指南&#xff1a;Blend路径动画Canvas.Left与RenderTransform的实战选择&#xff08;附性能对比&#xff09; 在WPF开发中&#xff0c;动画效果的实现往往让开发者陷入选择困境。特别是当我们需要让UI元素沿着复杂路径运动时&#xff0c;Canvas.Left/Top与RenderTra…...

Groops实战入门:从源码编译到首个PPP案例运行

1. 认识Groops&#xff1a;GNSS数据处理的神器 第一次听说Groops这个软件时&#xff0c;我和大多数GNSS新手一样一脸茫然。直到导师扔给我一堆GRACE卫星数据&#xff0c;要求做精密单点定位分析时&#xff0c;才真正开始接触这个工具。Groops全称是Gravity Recovery Object-Ori…...

dotUI设计系统生成器:基于品牌配置一键生成React组件库

1. 项目概述&#xff1a;dotUI&#xff0c;一个为品牌而生的设计系统在当今的Web开发领域&#xff0c;尤其是基于React的生态中&#xff0c;我们常常面临一个两难的选择&#xff1a;是使用现成的UI组件库快速搭建界面&#xff0c;还是投入大量时间从零开始构建一套完全符合品牌…...

基于Intelli框架构建智能体应用:从核心原理到电商客服实战

1. 项目概述&#xff1a;从“智能节点”到“智能体”的进化 最近在开源社区里&#xff0c;一个名为 intelligentnode/Intelli 的项目引起了我的注意。乍一看这个名字&#xff0c;你可能会和我最初一样&#xff0c;把它理解为一个“智能节点”框架。但深入探究其代码仓库和设计…...

ANSYS Workbench网格进阶:巧用‘Face Meshing’与‘Sweep’扫掠,让你的轴承座仿真既快又准

ANSYS Workbench网格进阶&#xff1a;巧用‘Face Meshing’与‘Sweep’扫掠提升轴承座仿真效率 轴承座作为机械传动系统中的关键部件&#xff0c;其应力分布与变形分析的准确性直接影响设备可靠性评估。传统四面体网格虽能快速生成&#xff0c;但在应力集中区域往往需要极高密度…...

FinalShell不止是SSH客户端:挖掘它的云端同步、命令补全和服务器管理隐藏功能

FinalShell进阶指南&#xff1a;解锁云端同步、智能补全与高效运维的隐藏技巧 如果你已经用FinalShell完成了基础的SSH连接操作&#xff0c;那么是时候探索这个工具更强大的另一面了。作为一款被低估的一体化运维工具&#xff0c;FinalShell在高效命令操作、多设备协同和服务器…...

AI提示词工程实战:结构化系统与用户提示词提升AI工具效能

1. 项目概述&#xff1a;一个为AI工具提供高质量提示词的“弹药库”如果你和我一样&#xff0c;每天都在和各种AI工具打交道——从写代码的Cursor、ChatGPT&#xff0c;到画图的Midjourney、DALL-E&#xff0c;再到处理数据的Pandas AI——那你肯定遇到过这样的时刻&#xff1a…...

【源码深度】Android 系统底层机制精讲|Linux 进程 Binder 通信 ART 虚拟机|Android 全栈体系 150 讲 - 41

...