public int[][] getMap(){ return map; } public int[][] getResetMap(){//获取再次打乱后的地图信息 ArrayList<Integer> list = new ArrayList<Integer>();//list用来存储原先的地图信息 for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ list.add(map[i][j]); map[i][j]=-1; } } //将原先地图上剩余的图片打乱 while(!list.isEmpty()){ int index = (int) (Math.random()*list.size());///从list中随机取一个图片ID,并将其添加到数组中,再从list中删除掉它 boolean flag = false; while(!flag){ int i = (int) (Math.random()*n);//获取随机的地图行列 int j = (int) (Math.random()*n); if(map[i][j]==-1){//如果该位置无图片 map[i][j] = list.get(index); list.remove(index); flag = true; } } } 详细解释一下这段代码
时间: 2024-01-27 21:06:14 浏览: 71
查询返回Map
这段代码是MapUtil类中的两个方法之一,用于获取再次打乱后的地图信息。具体实现的步骤如下:
1. 创建一个ArrayList对象list,用来存储原先的地图信息。
2. 通过两个for循环遍历二维数组map中的每个元素,将其添加到list中,并将map中的元素重置为-1,表示该位置没有图片。
3. 使用while循环,从list中随机取出一个图片ID,将其添加到map中。如果该位置已经有图片,则需要重新随机选择一个位置,直到找到一个空位置为止。每次将一个图片ID添加到map中后,都需要将其从list中删除。
4. 循环执行步骤3,直到list中的所有图片ID都被添加到map中。
5. 返回打乱后的地图信息,即二维数组map。
通过这个方法,可以实现对地图布局的再次打乱,增加游戏的难度和趣味性。需要注意的是,在实际开发中,还需要实现其他功能,如点击消除、判断是否可以消除等等。
阅读全文