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]='┼';}}}}

三:结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/54905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过OpenScada在ARMxy边缘计算网关上实现数字化转型

随着工业4.0概念的普及&#xff0c;数字化转型已成为制造业升级的关键路径之一。在此背景下&#xff0c;边缘计算技术因其能够有效处理大量数据、减少延迟并提高系统响应速度而受到广泛关注。ARMxy边缘计算网关&#xff0c;特别是BL340系列&#xff0c;凭借其强大的性能和灵活的…

SQL高可用优化-优化SQL中distinct和Where条件对索引字段进行非空检查语句

最近做一个需求&#xff0c;关于SQL高可用优化&#xff0c;需要优化项目中的SQL&#xff0c;提升查询效率。 SQL高可用优化 一、优化SQL包含distinct场景二、优化SQL中Where条件中索引字段是否为NULL三、代码验证1. NodeMapper2. NodeService3. NodeController4.数据库数据5.项…

SPI总结

1.前言 1.1 SPI简介 SPI全称Serial Peripheral Interface&#xff0c;串行外设接口&#xff0c;是一种用于连接外设的全双工通信总线。主机和从机支持一对一或一对多通讯连接。 图1 SPI物理层通讯连接 表1 Signal description 1.2 SPI特征 串行&#xff0c;每个时钟周期只传…

每日论文6—16ISCAS一种新型低电流失配和变化电流转向电荷泵

《A Novel Current Steering Charge Pump with Low Current Mismatch and Variation》16ISCAS 本文首先介绍了传统的current steering charge pump&#xff0c;如下图&#xff1a; 比起最简单的电荷泵&#xff0c;主要好处是UP和DN开关离输出节点较远&#xff0c;因此一定程度…

echarts 导出pdf空白原因

问题阐述 页面样式&#xff1a; 导出pdf: 导出pdf&#xff0c;统计图部分为空白。 问题原因 由于代码中进行了dom字符串的复制&#xff0c;而echarts用canvas绘制&#xff0c;canvas内部内容不会进行复制&#xff0c;只会复制canvas节点&#xff0c;因此导出pdf空白。 解决…

C语言VS实用调试技巧

文章目录 一、什么是bug?二、什么是调试&#xff1f;三、Debug和Release四、VS调试快捷键4.1环境准备4.2调试快捷键 五、监视和内存观察5.1监视5.2内存 六、调试举例七、编程常见错误归类7.1编译型错误7.2链接型错误7.3运行时错误 一、什么是bug? &#x1f34e;bug本意是 “…

【珠海一号卫星】

珠海一号卫星 珠海一号卫星星座是由珠海欧比特宇航科技股份有限公司发射并运营的商业遥感微纳卫星星座&#xff0c;是中国首家由民营上市公司建设并运营的卫星星座。以下是对珠海一号卫星的详细介绍&#xff1a; 一、基本概况 组成&#xff1a;整个星座由34颗卫星组成&…

Solidity——抽象合约和接口详解

&#x1f680;本系列文章为个人学习笔记&#xff0c;目的是巩固知识并记录我的学习过程及理解。文笔和排版可能拙劣&#xff0c;望见谅。 Solidity中的抽象合约和接口详解 目录 什么是抽象合约&#xff1f;抽象合约的语法接口&#xff08;Interface&#xff09;的定义接口的语…

通过 OBD Demo 体验 OceanBase 4.3 社区版

本文作者&#xff1a;马顺华 引言 OceanBase 4.3 是一个专为实时分析 AP 业务设计的重大更新版本。它基于LSM-Tree架构&#xff0c;引入了列存引擎&#xff0c;实现了行存与列存数据存储的无缝整合。这一版本不仅显著提升了AP场景的查询性能&#xff0c;同时也确保了TP业务场景…

uniapp云打包

ios打包 没有mac电脑,使用香蕉云编 先登录香蕉云编这个工具,新建csr文件——把csr文件下载到你电脑本地: 然后,登录苹果开发者中心 生成p12证书 1、点击+号创建证书 创建证书的时候一定要选择ios distribution app store and ad hoc类型的证书 2、上传刚才从本站生成的…

【设计模式-策略】

定义 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;定义了一系列算法&#xff0c;将每个算法封装起来&#xff0c;并使它们可以互相替换。策略模式让算法独立于使用它的客户端而变化&#xff0c;使得算法的变化不会影响到使用它的客户端…

Java读取YAML文件

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

Metasploit渗透测试之服务端漏洞利用

简介 在之前的文章中&#xff0c;我们学习了目标的IP地址&#xff0c;端口&#xff0c;服务&#xff0c;操作系统等信息的收集。信息收集过程中最大的收获是服务器或系统的操作系统信息。这些信息对后续的渗透目标机器非常有用&#xff0c;因为我们可以快速查找系统上运行的服…

乐鑫ESP32-S2高性能选择,家电中控屏联网通信应用,启明云端乐鑫代理商

在21世纪的今天&#xff0c;家电已经不再是简单的功能性产品&#xff0c;它们正在变得智能化&#xff0c;能够与我们的生活方式更加紧密地融合。 家电智能化正在改变我们与家庭环境的互动方式&#xff0c;它们不仅能够提高我们的生活效率&#xff0c;还能为我们带来更加舒适和…

计算机视觉综述

大家好&#xff0c;今天&#xff0c;我们将一起探讨计算机视觉的基本概念、发展历程、关键技术以及未来趋势。计算机视觉是人工智能的一个重要分支&#xff0c;旨在使计算机能够“看”懂图像和视频&#xff0c;从而完成各种复杂的任务。无论你是对这个领域感兴趣的新手&#xf…

【 EXCEL 数据处理 】000003 案列 标记涨跌,保姆级教程。使用的软件是微软的Excel操作的。处理数据的目的是让数据更直观的显示出来,方便查看。

【 EXCEL 数据处理 】000003 案列 使用条件格式之大于和小于&#xff0c;标记涨跌&#xff0c;保姆级教程。使用的软件是微软的Excel操作的。处理数据的目的是让数据更直观的显示出来&#xff0c;方便查看。 &#x1f4da;一、直接上案例 &#x1f4d6;1.使用条件格式之大于和小…

ElasticSearch安装分词器与整合SpringBoot

ElasticSearch安装分词器与整合SpringBoot 如果还没安装的点击安装ElasticSearch查看怎么安装 分词器 1.分词器 在Elasticsearch中&#xff0c;分词器&#xff08;Tokenizer&#xff09;是分析器&#xff08;Analyzer&#xff09;的一部分&#xff0c;它的主要职责是将文本输入…

宝塔面板部署雷池社区版教程

宝塔面板部署雷池社区版教程 简单介绍一下宝塔面板&#xff0c;安全高效的服务器运维面板&#xff0c;使用宝塔面板的人非常多 在网站管理上&#xff0c;许多用户都是通过宝塔面板进行管理&#xff0c;宝塔面板的Nginx默认监听端口为80和443&#xff0c;这就导致共存部署时雷池…

K8s Calico替换为Cilium,以及安装Cilium过程(鲁莽版)

迁移CNI插件的3种办法&#xff1a; 1、创建一个新的集群&#xff0c;通过Gitops的方式迁移负载&#xff0c;然而&#xff0c;这可能涉及大量的准备工作和潜在的中断。 2、另一种方法是重新配置/etc/cni/net.d/指向Cilium。但是&#xff0c;现有的pod仍将由旧的…

【锁住精华】MySQL锁机制全攻略:从行锁到表锁,共享锁到排他锁,悲观锁到乐观锁

MySQL有哪些锁 1、按照锁的粒度划分 行锁 是最低粒度的的锁&#xff0c;锁住指定行的数据&#xff0c;加锁的开销较大&#xff0c;加锁较慢&#xff0c;可能会出现死锁的情况&#xff0c;锁的竞争度会较低&#xff0c;并发度相对较高。但是如果where条件里的字段没有加索引&…