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

三:结果:

http://www.lryc.cn/news/449693.html

相关文章:

  • 【从0开始自动驾驶】用python做一个简单的自动驾驶仿真可视化界面
  • 一拖二快充线:单接与双接的多场景应用
  • 接口自动化测试概述
  • Fingerprint.js:精准用户识别的浏览器指纹技术
  • Gson将对象转换为JSON(学习笔记)
  • 什么是IPv6
  • python画图|放大和缩小图像
  • Mac优化清理工具CleanMyMac X 4.15.6 for mac中文版
  • 资质申请中常见的错误有哪些?
  • 基于单片机的多路温度检测系统
  • 面试题:通过栈实现队列
  • 网络战时代的端点安全演变
  • 雷池 WAF 如何配置才能正确获取到源 IP
  • libcrypto.so.10内容丢失导致sshd无法运行
  • DTH11温湿度传感器
  • 【Linux系列】CMA (Contiguous Memory Allocator) 简单介绍
  • 基于单片机餐厅呼叫控制系统仿真设计
  • 详细分析Mysql中的定时任务(Event事件)
  • SpinalHDL之语义(Semantic)(三)
  • SpringBoot 请求和响应
  • LQR算法核心思想
  • AI大模型之旅-最强开源文生图工具Stable Diffusion WebUI 教程
  • WinForm程序嵌入Web网页
  • Redis string类型hash类型
  • Solidity智能合约中的异常处理(error、require 和 assert)
  • True NAS禁用ipv6
  • 笔记整理—linux进程部分(2)使用fork创建进程
  • 在Python中实现多目标优化问题(6)
  • Java EE中的编码问题及解决方案
  • 9月27日,每日信息差