谁能帮我解释一下java2048小游戏这一段代码?

这是一段2048小游戏的java代码,请加上详细的注释,非常感谢!~

代码??????

你邮箱多少,需要的话,我可以发给你。

//总体来讲,这个左移方法就是一行行的元素进行左移,每一行判断后三个元素能否左移

private boolean moveLeft() { //左移操作

for (int i = 0; i < 4; i++) { //因为2048 一共只有4*4的方阵,所以定义循环4次 i表示行数

for (int j = 1, index = 0; j < 4; j++) { // 定义j为列数 因为是左移算法,所以只需要判断后三列,index是表示要移动到的列,默认是第一列,注意 index的值是永远小于j-1的(从循环的代码处理中可以看出来,index加一的时候,j一定会执行一次j++),也就是index一定是在j的左侧,不一定是紧邻

if (checks[i][j].value > 0) {// 如果当前遍历的第i行第j列的模块的值不是0

if (checks[i][j].value == checks[i][index].value) {//判断j模块的值跟index模块的值是否相同,相同就合并到index模块,并且值*2倍,分数也相应的加上;j模块的值就消掉变成0

score += checks[i][index++].value <<= 1;//先进行分数累加计算 score += checks[i][index++].value; 再进行模块值*2重新赋值 checks[i][index++].value <<= 1;

checks[i][j].value = 0;

isadd = true;

} else if (checks[i][index].value == 0) {//判断index模块的值是否为0,如果是0,j模块左移到index模块位置,j模块值重置为0,只是简单地移动,没有分数变更

checks[i][index].value = checks[i][j].value;//这句就是 当前模块转移到左侧模块,

checks[i][j].value = 0;//当前模块位置值更新成0

isadd = true;

} else if (checks[i][++index].value == 0) {//如果 j模块的值既不等于index模块的值,index模块的值也不等于0;那说明index模块跟j模块不能合并,数值有差异,需要判断index右边的模块是否为0

checks[i][index].value = checks[i][j].value;//如果index模块后边的职位0,j模块就可以移动到该模块,j模块原来位置的值更新成0

checks[i][j].value = 0;

isadd = true;

}

}

}

}

return isadd;//最终返回的的这个isadd是个全局变量,只要有任意一行执行过左移操作,就返回true;如果没有左移操作,返回false,游戏结束

}

求 大神帮忙详细解释下一下 java代码 谢谢
答:是这么一个结构,有抽象类雇员Employee,包含抽象方法薪资earnings,他有三个实现类,分别是YearWorker,MonthWorker,WeekWorker,然后还有一个公司类Company,包含计算所有雇员薪资的方法salariesPay 然后在你的入口类HardWork中,创建了20个长度的数组,其中,如果编号除3余数为0,实例化为WeekWorker对象,...

大家帮忙分析一下这段java代码?为什么y=10,而b=20呢
答:|| 是短路运算符,如果前面的表达式成立,则不执行后面的当你前面((x=0)==0)这句已经成立了后,后面的(y=20)==20 是不会在执行的所以y还是10&& 也是若你要y=20则把|| 改成 | ,这个是非短路的或,即前面表达式不管成立不成立,都执行后面的表达式希望对你有帮助 赞同 ...

JAVA面试试题,我是初学者下面的题都不会,请大家帮我做做,谢谢了感激不...
答:19:1;20:java代码生成生成中间代码,通过java虚拟机来执行;21:没有指针,垃圾回收,异常处理;22:接口里可以定义属性,但必须是常量。修饰符为:interface;23:数组里没有length()这个方法,String中有length()这个方法;24:标识符就是常量、变量、函数自定义的名称。Java标识符由数字、字母、...

帮忙看下java程序 详解 谢啦
答:首先 Value v=new Value();v.i=25 这里v.i=25,便于区分将这个v叫做v1 然后进入second(v,5);second开始:i=0//值传递,形参与外面的i无关 v.i=20 //此时v1的i变为20 然后Value val=new Value() //val.i=15 默认的 注意这一句v=val //v是一个引用名,也就是一个变量的别名 ...

java中单列模式,我要详细点的,麻烦各位给我介绍一下?
答:这个单例实际上维护的是一组单例类的实例,将这些实例存放在一个Map(登记薄)中,对于已经登记过的实例,则从工厂直接返回,对于没有登记的,则先登记,而后返回。/ Created by IntelliJ IDEA.User: leizhimin Date: 2005-9-11 Time: 15:20:16 <<Java与模式>> 单例模式- 登记式单例 / publi...

Java求解答,大神帮忙分析一下每一句啥意思
答:4、Panel p1, p2, p3, p4; IOOperation ioo; Library li;声明了四个Panel类的变量。一个IOOperation 类的变量。一个Library 类的变量。5、Library library[] = new Library[20];声明了一个library的数组,长度为20。6、public LibraryInformation() {} 创建一个名为 LibraryInformation 的...

Java问题,程序解释,能告诉我以下程序的每一句话都是什么意思吗?帮忙写...
答://定义字符串s的内容String s = "java is very useful. I like java";//将s的内容转换为字节数组用于输出byte[] b = s.getBytes();//文件输出流,打开file2即1.txt用于准备写入字节FileOutputStream out = new FileOutputStream(file2);//将指定 byte 数组中从偏移量 0 开始的 b.length ...

求Java高手帮忙梳理一下这段Java代码吗不太能看的懂,最好能详细解释一...
答:这是一个表查找,查找表中与customer相等的数据。这个表有[customer,name,phone,...]等字段

java的面向对象是什么意思,能不能用通俗的话解释一下?
答:面向对象的简单理解就是,你可以把现实中的每一件物品都看作是一个对象,这个物品的信息看作是对象属性,物品功能看作是对象方法 比如,身份证,这是一个对象,身份证上的姓名,籍贯地址,开卡所,有效期等等信息看作是这个对象的属性,身份证可以刷卡,那么刷卡这个动作就是身份证对象的方法/事件 再比如你开的...

JAVA程序的文件后缀名代表着文件是什么意思呢
答:xml和properties一般都是做配置文件。比如配置数据库的链接等。xml用到的地方有很多,想struts,spring,mybatis等的配置都是要用到xml的 .jpx是JBuilder系统产生一种项目描述文件,它记录的内容与.jpr一样,但它使用更为先进的语言格式XML,这为程序开发者的国际化提供了很大的帮助。

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网