重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本文实例为大家分享了java实现连连看游戏的具体代码,供大家参考,具体内容如下
在蒙阴等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供做网站、成都网站制作 网站设计制作定制网站建设,公司网站建设,企业网站建设,成都品牌网站建设,成都全网营销推广,外贸网站制作,蒙阴网站建设费用合理。
代码会实现共享的,这个是截图
代码:
package com.lr.bean; import java.util.Scanner; import java.util.Random; import com.lr.bean.Point; public class Link{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); System.out.println("=========================="); System.out.println("\t\t连连看小游戏"); System.out.println("\t\t版权:lr"); System.out.println("=========================="); System.out.println("请先输入图片数量(难度系数 1~9):"); int picnum=sc.nextInt(); System.out.println("请输入棋盘的行数:"); int rows=sc.nextInt(); int cols=0; //列数 int count=0; //计数器 do{ if (count>0){ System.out.println("输入有误,列数必须大于0!"); } System.out.println("请输入棋盘列数:"); cols=sc.nextInt(); count++; }while( cols<1 || cols%2!=0); //创建二维数组,生成棋盘,列数+2的原因:做出边框的效果 数组刚刚生成时,每个元素都是0 int[][] chessboard=new int[ rows+2 ][ cols+2]; //随机生成的图片数值存入这个二维数组中,注意:边框不存值,任为0 initBoard( chessboard ,picnum); System.out.println("初始化后的棋盘为:"); showBoard2( chessboard); //打乱棋盘 shuffle( chessboard ); //输出 System.out.println("打乱后的棋盘为:"); showBoard2( chessboard); //实现消除业务 // 1.定义两个Point对象 Point p1=new Point(); Point p2=new Point(); // 2.游戏状态 isGameOver boolean isGameOver=false; do{ // 3.循环输入两个点 do...while System.out.println("请输入两个点的坐标"); p1.x=sc.nextInt(); p1.y=sc.nextInt(); p2.x=sc.nextInt(); p2.y=sc.nextInt(); // 4.判断这两个数是否可以消除 if( isErazeOk( chessboard,p1,p2)){ //如果可以消除,将这两个点在chessboard 中的值都设为0 chessboard[p1.x][p1.y]=0; chessboard[p2.x][p2.y]=0; if( checkGameOver( chessboard )){ isGameOver=true; } } //显示消除后的棋盘 showBoard2( chessboard ); }while( !isGameOver ); System.out.println("游戏结束!"); } //判断是否能消除的业务 public static boolean isErazeOk(int[][] chessboard ,Point p1,Point p2){ // 1.两个点不是同一个 if( p1.equals( p2) ){ System.out.println("输入的两个点位置不能相同!"); } // 2。两个点的值是否相等 if(chessboard[p1.x][p1.y] !=chessboard[p2.x][p2.y]){ System.out.println("输入的两个点值不相同!请重新输入"); return false; } // 3.判断两个点的连线情况 if( doOneLine(chessboard,p1,p2) || doTwoLine(chessboard,p1,p2) || doThreeLine(chessboard,p1,p2)){ return true; } return false; } // 1连线 public static boolean doOneLine(int[][] chessboard,Point p1,Point p2){ //定义最大值和最小值 int max=0; int min=0; //判断是循环行还是循环列 if( p1.x==p2.x){ //找y的最大值、找y的最小值、循环从 min+1 至 max-1、判断是否为0、如果中间有一个不为0,则返回 false max=p1.y>p2.y?p1.y:p2.y; min=p1.yp2.x?p1.x:p2.x; min=p1.x
Point类没有写出来了,比较简单,里面就存了两个数据,表示数字的行和列,就不上图了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。