本文实例为大家分享了java实现连连看游戏的具体代码,供大家参考,具体内容如下
代码会实现共享的,这个是截图
代码:
包com.lr.bean; 进口java.util.Scanner; 进口java.util.Random; 进口com.lr.bean.Point; 公共类链接{ 公共静态void main (String [] args) { 扫描仪sc=new扫描仪(系统); System.out.println (“=========================="); System.out.println (“\ \ t连连看小游戏”); System.out.println (“\ \ t版权:lr”); System.out.println (“=========================="); system . out。println(“请先输入图片数量(难度系数1 ~ 9):”); int picnum=sc.nextInt (); System.out.println(“请输入棋盘的行数:"); int行=sc.nextInt (); 整数关口=0;//列数 int数=0;//计数器 {做 如果(count> 0) { System.out.println(“输入有误,列数必须大于0 !”); } System.out.println(“请输入棋盘列数:"); 关口=sc.nextInt (); 数+ +; },(cols<1 | |关口% 2 !=0);//创建二维数组,生成棋盘,列数+ 2的原因:做出边框的效果数组刚刚生成时,每个元素都是0 int[][]棋盘=new int[行+ 2][关口+ 2];//随机生成的图片数值存入这个二维数组中,注意:边框不存值,任为0 initBoard(棋盘,picnum); System.out.println(“初始化后的棋盘为:"); showBoard2(棋盘);//打乱棋盘 洗牌(棋盘);//输出 System.out.println(“打乱后的棋盘为:"); showBoard2(棋盘);//实现消除业务//1 .定义两个角度对象 点p1=new点(); 点p2=new点();//2。游戏状态isGameOver 布尔isGameOver=false; {做//3。循环输入两个点做…… System.out.println(“请输入两个点的坐标”); p1.x=sc.nextInt (); p1.y=sc.nextInt (); p2.x=sc.nextInt (); p2.y=sc.nextInt ();//4 .判断这两个数是否可以消除 如果(isErazeOk(棋盘,p1, p2)) {//如果可以消除,将这两个点在棋盘中的值都设为0 棋盘[p1.x] [p1.y]=0; 棋盘[p2.x] [p2.y]=0; 如果(checkGameOver(棋盘)){ isGameOver=true; } }//显示消除后的棋盘 showBoard2(棋盘); },(! isGameOver); System.out.println(“游戏结束!”); }//判断是否能消除的业务 公共静态布尔isErazeOk (int[][]棋盘,p1, p2) {//1 .两个点不是同一个 如果(p1。=(p2)) { System.out.println(“输入的两个点位置不能相同!”); }//2 .两个点的值是否相等 如果(棋盘[p1.x] [p1。y] !=棋盘[p2.x] [p2.y]) { System.out.println(“输入的两个点值不相同。请重新输入”); 返回错误; }//3 .判断两个点的连线情况 如果(doOneLine(棋盘,p1, p2) | | doTwoLine(棋盘,p1, p2) | | doThreeLine(棋盘,p1, p2)) { 返回true; } 返回错误; }//1连线 公共静态布尔doOneLine (int[][]棋盘,p1, p2) {//定义最大值和最小值 int max=0; int min=0;//判断是循环行还是循环列 如果(p1.x==p2.x) {//找y的最大值,找y的最小值,循环从最小值+ 1至max-1,判断是否为0,如果中间有一个不为0,则返回错误的 max=p1.y> p2.y& # 63; p1.y: p2.y; min=p1.yp2.x& # 63; p1.x: p2.x; min=p1.x java实现连连看游戏