java程序--控制台五子棋

控制台五子棋,具体思路见代码注释。

代码如下:

<span style="font-size:18px;">package test;

import java.io.IOException;
import java.util.Scanner;

//控制台简单五子棋
public class GoBang {

	//二维数组作为棋盘
	private static char[][] board=new char[16][16];
	//已下棋子数目
	private static int cnt;
	//分别代表玩家1,2的棋子
	private static char[] qizi={'#','@'};
	//八方向搜索检测
	private static int[] dx={-1,0,-1,-1,1,1,0,1};
	private static int[] dy={0,-1,-1,1,-1,1,1,0};

	//输入检测
	private static int CheckInput(int x,int y){

		if(board[x][y]!='+')
			return 0;
		if(x<1||x>15||y<1||y>15)
			return 0;
		return 1;
	}

        //边界检测
	private static int Check(int x,int y){
		if(x>15||x<1||y>15||y<1)
			return 0;
		return 1;
	}
	//检测玩家是否获胜,需要传入玩家编号,及当前落点坐标
	private static int CheckAns(int num,int x,int y){
		if(cnt==15*15)
			return 1;
	    //横竖 左斜 右斜 四个方向判断是否有五个棋子连在一起
		for(int i=0;i<4;i++){
			int sum=1;
			int xx=x+dx[i];
			int yy=y+dy[i];
			while(board[xx][yy]==qizi[num]&&Check(xx,yy)==1){
				sum++;
				xx=xx+dx[i];
				yy=yy+dy[i];
			}
			xx=x+dx[7-i];
			yy=y+dy[7-i];
			while(board[xx][yy]==qizi[num]&&Check(xx,yy)==1){
				sum++;
				xx=xx+dx[7-i];
				yy=yy+dy[7-i];
			}
			if(sum>=5)
				return 1;
	    }
	    return 0;
	}

	//初始化
	private static void Init(){
		cnt=0;
		for(int i=1;i<=15;i++)
			for(int j=1;j<=15;j++)
			    board[i][j]='+';
	}

	//输出棋盘
	private static void Print(){
	    int i,j;
	    for(i=1;i<=15;i++){
	    	for(j=1;j<=15;j++){

	    		System.out.print(board[i][j]);
	    	}
	    	System.out.println();
	    }
	}

	public static int run(){

		int x,y;
		Init();
		//当前棋手编号,默认0号先下
		int num=0;
		while(true){
			Print();
			System.out.print(num+1+"号选手请输入您下棋的坐标,应以x y形式: ");
			Scanner sc =new Scanner(System.in);
			while(true){
				x=sc.nextInt();
				y=sc.nextInt();
				if(CheckInput(x,y)==1)
					break;
				System.out.print("输入坐标不合法,请重新输入: ");
			}
			board[x][y]=qizi[num];
			if(CheckAns(num,x,y)==1){
				return num+1;
			}
			num=1-num;
		}
	}

	public static void main(String[] args){

		System.out.println("欢迎使用lkl的五子棋!");
		int ans=run();
		System.out.println("恭喜"+ans+"号选手获得最终的胜利");
	}
}
</span>
时间: 2024-12-25 00:49:23

java程序--控制台五子棋的相关文章

java socket控制台版本聊天室程序源码下载

原文:java socket控制台版本聊天室程序源码下载 代码下载地址:http://www.zuidaima.com/share/1550463257578496.htm java socket控制台版本聊天室程序源码下载,学习的时候写的,适合学习java基础 java网络编程基础用 标签: java socket 控制台 聊天室 源码话题: 网络编程 java socket控制台版本聊天室程序源码下载,布布扣,bubuko.com

第一个JAVA程序解析

上一篇博客中,我们编写了第一个JAVA程序并使用最原始的方式对其进行编译运行,很多文章或书籍中对该种编译运行方式不做介绍,但是我认为这有助于我们更好的了解.学习JAVA,是不可忽略的一部分,在我身边有很多人,学完一段时间JAVA后,只知道如何在IDE中进行开发,却不知脱离IDE后该如何运行,不得不说这也是一种悲哀. 言归正传,我们来看一下上一篇博客中的例子"Hello World",这也是几乎所有的编程语言都会编写的一个例子,非常的经典. 下面我们就来分析一下: /**  *  我的第

Java程序之Hello World

学习兴趣群437469371 这是一个学习java的群人 欢迎各位一起学习的加入欢迎可以讨论问题谢绝广告 作为一个程序员,第一个碰到的程序一般都是Hello World,我这第一次学习也是学习hello world,hello world 是一个显示,没有什么逻辑,就一个简单的显示. 程序代码: package 第一阶段练习.day01; public class HelloWorld { public static void main(String []args){ System.out.pr

编写JAVA程序

一.编写JAVA程序 编写JAVA程序,输出一行文本信息:“Hello world”,选择编辑器eclipse,打开之后编写程序 1 public class Hello{ 2 3 public static void main(String[] args){ 4 System.out.println("Hello world"); 5 } 6 } 行1:开始声明一个类,类名为hello,class是JAVA的关键字,用来定义类,public为访问说明 行3:是JAVA应用程序必须包含

一个简单的Java程序

一个.NET技术还是很菜的水平的猿人现在要去学习Java不知道是坏是好,无从得知啊! 不过在网上看了好多Java方面的简单例子,感觉Java还是蛮不错的么!不管以后怎么样啦,先开始自己的Java菜鸟之旅吧! 建立一个Java项目,建立一个属于自己的包,然后就开始自己的Java之旅... 创建的时候勾上这个生成main方法的选项,这个好像类似与我们.Net程序里控制台程序有木有.... 创建完成后就是这么一个样子,可以看到我们的包,还有给我们创建好自己的类,并且带了一个静态的main方法咋看就像.

java 程序执行输出有两种简单方式

java 程序执行输出有两种简单方式: 1. System.out.println("需要输出的内容"): 该方法可参看运行一个简单的Java程序 结果图: 2. System.out.print("需要输出的内容"): 1 public class HelloWorld 2 { 3 //Java程序的入口方法,程序将从这里开始运行 4 public static void main(String[] args) 5 { 6 //向控制台打印一条语句 7 Syste

用exe4j将java程序转换为exe可执行程序

一.在任意目录下新建一个文件夹,以java程序名称命名并复制java程序正在使用的JRE放入刚才新建的文件夹. 二.从myeclipse导出jar包. 1.项目上右键Export: 2.导出类型选择Runnable JAR file,点击Next: 3.选择程序的入口,一般选main函数所在的类: 4.点浏览选择刚才新建的文件夹: 5.文件名一般填java程序的名称,也可以用其它名称,填好后点击保存,最后点击Finish,完成jar包的导出: 6.打开cmd窗口,测试jar包能否运行成功,注意j

Java程序员的Golang入门指南(下)

Java程序员的Golang入门指南(下) 4.高级特性 上面介绍的只是Golang的基本语法和特性,尽管像控制语句的条件不用圆括号.函数多返回值.switch-case默认break.函数闭包.集合切片等特性相比Java的确提高了开发效率,但这些在其他语言中也都有,并不是Golang能真正吸引人的地方.不仅是Golang,我们学习任何语言当然都是从基本语法特性着手,但学习时要不断地问自己:使这门语言区别于其他语言的"独到之处"在哪?这种独到之处往往反映了语言的设计思想.出发点.要解决

Java程序性能优化技巧

多线程.集合.网络编程.内存优化.缓冲..spring.设计模式.软件工程.编程思想 1.生成对象时,合理分配空间和大小new ArrayList(100); 2.优化for循环Vector vect = new Vector(1000);for( inti=0; i<vect.size(); i++){ ...}for循环部分改写成:int size = vect.size();for( int i=0; i>size; i++){ ...} 如果size=1000,就可以减少1000次si