当前位置:天才代写 > tutorial > JAVA 教程 > java:记事本生存游戏舆图

java:记事本生存游戏舆图

2017-11-02 08:00 星期四 所属: JAVA 教程 浏览:39

java:记事本保留游戏地图

起初看到这个,你的想法是什么,这小子想干嘛呢???

这个要领是在一个多月前做多线程游戏的时候想到的,最初是中南的一位伴侣提出来的。最近的博客总是在“炒剩饭”,一些新学的对象也老是来不及作总结,不外以为这个想法确实不错,所以也才拿出来再与各人探讨一下,说不定尚有更好的要领。

我们所玩的一些场景不动2D的游戏,往往需要构建一些舆图,如泡泡堂,坦克大战等等。

java:记事本保留游戏地图

而在舆图构建的时候,我们往往回收的是用一个数组将所需的舆图生存起来,可是做到厥后,需要的舆图多了,生存的效率往往也就偏低了,并且还会淹灭大多的代码去填数组。

在一个记事本中把你想要做的舆图生存起来,看上去也越发直观,简捷。利用IO流举办字节读取是堕落率相对较低的,所以我们的舆图中理论上可以存在256种元素(一个byte占8位)。虽然,我们或者不需要这么多,a-z加上1到9就完全可以满意我们的日常需求了。

最开始的时候,有人问到,既然是OOP,为什么不消工具来生存我们的舆图元素?原因很简朴,我们操纵byte数据的效率要高于操纵工具自己。

好的,闲话不多说,要领如下:

首先,我们需要一个ArrayList来生存数据,有什么用呢?继承看你就知道了

//建设舆图数组来生存数据

ArrayList<Byte> MapList=new ArrayList<Byte>();

查察本栏目

Java代码

/** 
 * 将记事本中的数据读入到数组傍边 
 * @param mapName 记事本的文件名 
 * @return 获得的字节数组 
*/
public int[][] createMap(String mapName){  
    File file=new File(mapName);  
    //建设舆图数组  
    int map[][]=null;  
    if(file.exists()){  
        try{  
        InputStream in=new FileInputStream(file);  
        //建设与文件沟通巨细的字节数组  
        byte content[]=new byte[in.available()];  
        //读取字节数组  
        in.read(content);  
        //将内容添加到行列傍边  
        for(int i=0;i<content.length;i++){  
            MapList.add(content[i]);  
        }  
        //移除回车符  
        for(int i=0;i<MapList.size();i++){  
            if(MapList.get(i)==10){  
                       MapList.remove(i);  
            }  
        }  
        //移除换行符  
        for(int i=0;i<MapList.size();i++){  
            if(MapList.get(i)==13){  
                       MapList.remove(i);  
            }  
        }  
        //封装字节内容  
        String string=new String(content);  
        String arr[]=string.split("\r\n");  
        //存入数组傍边  
        int index=0;  
        map=new int[arr.length][arr[0].length()];  
        for(int i=0;i<map.length;i++){  
            for(int j=0;j<map[i].length;j++{  
                    map[i][j]=MapList.get(index)-48;  
                    index++;  
            }  
        }  
                 in.close();  
        }catch(Exception e){  
                e.printStackTrace();  
        }  
    }else{  
                    System.out.println("文件不存在");  
    }  
    return map;  
}

较量要害的步调是移除回车换行字符,这两个字符是我们看不到的,只有在打印的时候才会发明他们,

莫名其妙的多出个10跟13,起初我也是以为烦闷,任何要领虽然都要测试一下,本身做个记事当舆图试一下吧。

 

    关键字:


天才代写-代写联系方式