Java控制台版五子棋的简单实现方法

 更新时间:2021年01月31日 13:48:05   作者:钱多多不多余  
这篇文章主要给大家介绍了关于Java控制台版五子棋的简单实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

设计一个10*10的棋盘:

行号、列号单独输出

package yu;

import java.util.Scanner;

public class WuZiQi {
	/*● 棋子1
 ○ 棋子2
	 * 
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 String [] [] qipan=new String [10] [10];
 //初始化棋盘:
 for(int k=0;k<qipan.length;k++){
 	 for(int q=0;q<qipan[k].length;q++){
 		 qipan[k][q]="+ ";
 		 }
 }
 //输出棋盘:
 System.out.print(" ");
 for(int i=0;i<10;i++){
 	 System.out.print(i+" ");
 }
 System.out.println();
 for(int k=0;k<qipan.length;k++){
 	 System.out.print(k+" ");
 	 for(int q=0;q<qipan[k].length;q++){
 		 System.out.print(qipan[k][q]);
 		 }
 	 System.out.println();
 }

输入坐标下棋(x,y),并作容错处理:

  1. 保证输入的坐标是(x,y);
  2. 下标越界处理;
  3. 判断此坐标有无棋子;
  4. 确保坐标输入为数字。
int x,y;//储存下棋坐标:
 Scanner sc=new Scanner(System.in);
 boolean flag=true;//区分黑白棋;
 while(true){
 System.out.println("请输入坐标下棋,坐标格式(x,y)");
 String str=sc.nextLine();
 String [] str1=str.split(",");
  //容错处理1
  if(str1.length!=2){
 	 System.out.println("坐标输入错误,请重新输入!!");
 	 
  }else{
  //容错处理3
 	 try{
 		 x=Integer.parseInt(str1[0]);
    y=Integer.parseInt(str1[1]);
 	 }catch(Exception e){
 		 System.out.println("坐标输入错误,请重新输入!!");
 		 continue;
 	 }
 	 //容错处理2--下标越界
 	 if(x>=10||y>=10){
 		 System.out.println("坐标输入错误,请重新输入!!");
 	 }else{
 		 //容错处理--判断当前位置是否有棋子:
 		 //黑白棋:
 		 if(qipan[x][y].equals("+ ")){
 			 if(flag){
 				 qipan[x][y]="● ";
 			 }else{
 				 qipan[x][y]="○ ";
 			 }
 			 flag=!flag;
 		 }else{
 			 System.out.println("当前位置已有棋子,请重新输入坐标!!");
 			 continue;
 		 }
 		 
 		 //输出棋盘:
 		  System.out.print(" ");
 		  for(int i=0;i<10;i++){
 		 	 System.out.print(i+" ");
 		  }
 		  System.out.println();
 		  for(int k=0;k<qipan.length;k++){
 		 	 System.out.print(k+" ");
 		 	 for(int q=0;q<qipan[k].length;q++){
 		 		 System.out.print(qipan[k][q]);
 		 		 }
 		 	 System.out.println();
 		  
 		  }

判断是否五子连珠:

8个方向,4条线

  1. 上方&下方
  2. 左方&右方
  3. 左斜上&右斜下
  4. 右斜上&左斜下
//判断是否五子连珠:
 		  int count=1;
 		  String currentZiQi=qipan[x][y];//储存当前下的棋子;
 		 //判断上方:
 		  for(int k=x-1;k>=0;k--){
 		 	 if(qipan[k][y].equals(currentZiQi)){
 		 		 count++;
 		 	 }else{
 		 		 break;
 		 	 }
 		 	 }
 		  if(count>=5){
 		 	System.out.println(currentZiQi+"获胜!!!");
 		 	break;
 		  }
 		 //判断下方:
 		 for(int k=x+1;k<10;k++){
  		 if(qipan[k][y].equals(currentZiQi)){
  		  count++;
  		 }else{
  		  break;
  		 }
  		 }
  		if(count>=5){
  		 System.out.println(currentZiQi+"获胜!!!");
  		 break;
 		   }
  		count=1;//重置count;
  	 //判断左边:
  		for(int k=y-1;k>=0;k--){
  		 if(qipan[x][k].equals(currentZiQi)){
  		  count++;
  		 }else{
  		  break;
  		 }
  		 }
  		if(count>=5){
  		 System.out.println(currentZiQi+"获胜!!!");
  		 break;
 		   }
  	 //判断右边:
  		for(int k=y+1;k<10;k++){
  		 if(qipan[x][k].equals(currentZiQi)){
  		  count++;
  		 }else{
  		  break;
  		 }
  		 }
  		if(count>=5){
  		 System.out.println(currentZiQi+"获胜!!!");
  		 break;
 		   }
  		count=1;  	
  		//判断左上斜边:
  		for(int k=x-1,j=y-1;k>=0&&j>=0;k--,j--){
  			if(qipan[k][j].equals(currentZiQi)){
  		  count++;
  		 }else{
  		  break;
  		 }
     		 }
  		if(count>=5){
  		 System.out.println(currentZiQi+"获胜!!!");
  		 break;
 		   }
  		//右下斜方:
  		for(int k=x+1,j=y+1;k<10&&j<10;k++,j++){
  			if(qipan[k][j].equals(currentZiQi)){
  		  count++;
  		 }else{
  		  break;
  		 }
  		 }
  		if(count>=5){
  		 System.out.println(currentZiQi+"获胜!!!");
  		 break;
 		   }
  		count=1;
  		//左下斜方:
  		for(int k=x-1,j=y+1;k>=0&&j<10;k--,j++){
  			if(qipan[k][j].equals(currentZiQi)){
  		  count++;
  		 }else{
  		  break;
  		 }
  		 }
  		if(count>=5){
  		 System.out.println(currentZiQi+"获胜!!!");
  		 break;
 		   }  		
  		//右上斜方:
  		for(int k=x+1,j=y-1;k<10&&j>=0;k++,j--){
  			if(qipan[k][j].equals(currentZiQi)){
  		  count++;
  		 }else{
  		  break;
  		 }
  		 }
  		if(count>=5){
  		 System.out.println(currentZiQi+"获胜!!!");
  		 break;
 		   }
  		count=1;
  		}
 	 }
 	 
 	 
  } 
 }
 }

总结

到此这篇关于Java控制台版五子棋的简单实现方法的文章就介绍到这了,更多相关Java控制台版五子棋内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 数据结构与算法之手撕排序算法

    数据结构与算法之手撕排序算法

    排序算法看似简单,其实不同的算法中蕴涵着经典的算法策略。通过熟练掌握排序算法,就可以掌握基本的算法设计思想,本文主要介绍了Java中的排序算法,需要的朋友欢迎阅读
    2023-04-04
  • Mybatis Lombok使用方法与复杂查询介绍

    Mybatis Lombok使用方法与复杂查询介绍

    Lombok是一种Java实用工具,可用来帮助开发人员消除Java的冗长,尤其是对于简单的Java对象(POJO),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • 单例模式 分析代码优化方法

    单例模式 分析代码优化方法

    这篇文章主要介绍了单例模式 分析代码优化方法,需要的朋友可以参考下
    2015-04-04
  • Java中常用的设计模式之工厂模式详解

    Java中常用的设计模式之工厂模式详解

    这篇文章主要为大家详细介绍了Java中常用的设计模式之工厂模式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • Java实现的生成二维码统计扫描次数并转发到某个地址功能详解

    Java实现的生成二维码统计扫描次数并转发到某个地址功能详解

    这篇文章主要介绍了Java实现的生成二维码统计扫描次数并转发到某个地址功能,可实现生成带统计功能的二维码,涉及java二维码的生成、参数传递、解析等相关操作技巧,需要的朋友可以参考下
    2018-07-07
  • Java Scala偏函数与偏应用函数超详细讲解

    Java Scala偏函数与偏应用函数超详细讲解

    Scala是一种多范式的编程语言,支持面向对象和函数式编程。Scala也支持异常处理,即在程序运行过程中发生意外或错误时,采取相应的措施
    2023-04-04
  • java实现任意矩阵Strassen算法

    java实现任意矩阵Strassen算法

    这篇文章主要介绍了java实现任意矩阵Strassen算法的相关资料,需要的朋友可以参考下
    2016-02-02
  • 一篇文章帮你搞懂什么是java的进程和线程

    一篇文章帮你搞懂什么是java的进程和线程

    这篇文章主要介绍了java 线程详解及线程与进程的区别的相关资料,网上关于java 线程的资料很多,对于进程的资料很是,这里就整理下,需要的朋友可以参考下
    2021-08-08
  • MyBatis入门介绍(超简单)

    MyBatis入门介绍(超简单)

    mybatis是Java的持久层框架, JAVA操作数据库是通过jdbc来操作的,而mybatis是对jdbc的封装。下文给大家介绍mybatis入门知识,感兴趣的朋友参考下吧
    2017-08-08
  • SpringBoot 属性配置中获取值的方式

    SpringBoot 属性配置中获取值的方式

    这篇文章主要介绍了SpringBoot 属性配置中获取值的方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02

最新评论