栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java实现连连看游戏

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java实现连连看游戏

本文实例为大家分享了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("tt连连看小游戏");
 System.out.println("tt版权: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类没有写出来了,比较简单,里面就存了两个数据,表示数字的行和列,就不上图了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/139285.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号