阅读本文约 “6分钟”java
你据说过有些程序员上班老是迟到,而下班又很准时吗?由于他们使用了Java API。核心Java函数库是由一堆等着被你当作组件使用的类集合而成的。你能够大量运用这些预先建立好的组件来写出你的程序。程序员
上一章咱们的程序运行起来了,可是还存在一些低级或者严重的bug,即当用户击中一个坐标后能够重复击杀来快速接受游戏。(以下图)【Java猫说】构建战舰类控制台游戏segmentfault
为何呢? 对,这和咱们的检查方法有关系,咱们看看这个遍历方法数组
//循环遍历 for (int cell:locationCells){ if (guess == cell){ result = "hit"; numOfHits++; break; } }
它只是进行判断是否击中,可是并无断定以前是否已经被猜中了。
咱们须要怎么解决呢?函数
若是可以找到一种数组会在删除掉某些元素时自动缩小就行了,这样就没必要检查全部的元素,只要查询它是否带有寻找中的值就好。若它还可以让你取出数据而没必要管理集合的细节就更好!spa
这里咱们就要介绍这个对象,ArrayList,他不是数组,是Java函数库中的另外一个类。code
add(Object) 向list中加入对象参数 remove(int index) 在索引参数中移除对象 remove(Object elem) 移除该对象 contains(Object elem) 若是和对象参数匹配返回“true” isEmpty() 若是list中没有元素返回“true” indexOf(Object elem) 返回对象参数的索引或-1 size() 返回list中元素的个数 get(int index) 返回当前索引参数的对象
这里你还要注意一点,在使用ArrayList时,你只是在运用ArrayList类型的对象,所以就跟运用其余的对象同样,你会使用“.”运算符来调用它的方法。对象
一、通常数组再建立时就必须肯定大小
二、存放对象给通常数组时必须指定位置
三、通常数组使用特殊的语法
四、在Java5.0中ArrayList是参数化的(parameterized)索引
知道了方式,接下来咱们来修复bug吧!游戏
咱们将作以下修改
public class DotCom { private ArrayList<String> locationCells; int numOfHits = 0; //赋值数组 public void setLocationCells(ArrayList<String> locs){ locationCells = locs; } //检查用户输入与随机数组是否存在相同 public String checkYourSelf(String userInput){ String result = "miss"; //检索对象参数 int index = locationCells.indexOf(userInput); if (index >= 0){ //击中移除对象 locationCells.remove(index); //判断是否结束或存在其他战舰 if (locationCells.isEmpty()){ result = "kill"; }else{ result = "hit"; } } return result; } }
下一章让咱们来完成更完美的游戏吧!
本文已转载我的技术公众号:UncleCatMySelf
欢迎留言讨论与点赞
上一篇推荐:【Java猫说】构建战舰类控制台游戏下一篇推荐: