当前位置: 首页 > 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]='┼';}}}}

三:结果:

相关文章:

  • Centos/fedora/openEuler 终端中文显示配置
  • 进程、线程、协程详解:并发编程的三大武器
  • pyhton语法 正则表达式
  • c++进阶学习--------多态
  • 目前相对稳定的下载上传的方法(WebClient )(异步与进度)
  • FortiGate SSL VPN host check添加自定义防病毒软件
  • VS开发 - 静态编译和动态编译的基础实践与混用
  • Python爬虫bs4的基本使用
  • mfc140u.dll缺失?快速解决方法全解析,解决mfc140u.dll错误
  • Harmony商城项目
  • SpringBoot日常:链路追踪skyworking的接入
  • MYSQL求月份同比数据和环比数据
  • 【步联科技身份证】 身份证读取与解析———未来之窗行业应用跨平台架构
  • 深度学习应用详解
  • 叶国富“推翻”马云新零售,零售新王此刻登基?
  • @angular/forms 源码解析之双向绑定
  • Django 博客开发教程 16 - 统计文章阅读量
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • Javascript弹出层-初探
  • Js基础——数据类型之Null和Undefined
  • PermissionScope Swift4 兼容问题
  • React-redux的原理以及使用
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 后端_MYSQL
  • 力扣(LeetCode)965
  • 每天一个设计模式之命令模式
  • 前嗅ForeSpider中数据浏览界面介绍
  • 使用agvtool更改app version/build
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 智能合约开发环境搭建及Hello World合约
  • 从如何停掉 Promise 链说起
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • #define,static,const,三种常量的区别
  • #HarmonyOS:基础语法
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (03)光刻——半导体电路的绘制
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (南京观海微电子)——I3C协议介绍
  • (四) Graphivz 颜色选择
  • (详细文档!)javaswing图书管理系统+mysql数据库
  • ***原理与防范
  • *p++,*(p++),*++p,(*p)++区别?
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .Mobi域名介绍
  • .mysql secret在哪_MySQL如何使用索引
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .net 流——流的类型体系简单介绍
  • .net6 webapi log4net完整配置使用流程