起初看到这个,你的想法是什么,这小子想干嘛呢???
这个方法是在一个多月前做多线程游戏的时候想到的,最初是中南的一位朋友提出来的。最近的博客老是在“炒剩饭”,一些新学的东西也总是来不及作总结,不过觉得这个想法确实不错,所以也才拿出来再与大家探讨一下,说不定还有更好的方法。
我们所玩的一些场景不动2D的游戏,往往需要构建一些地图,如泡泡堂,坦克大战等等。
而在地图构建的时候,我们往往采用的是用一个数组将所需的地图保存起来,但是做到后来,需要的地图多了,保存的效率往往也就偏低了,而且还会耗费大多的代码去填数组。
在一个记事本中把你想要做的地图保存起来,看上去也更加直观,简洁。使用IO流进行字节读取是出错率相对较低的,所以我们的地图中理论上可以存在256种元素(一个byte占8位)。当然,我们或许不需要这么多,a-z加上1到9就完全可以满足我们的日常需求了。
最开始的时候,有人问到,既然是OOP,为什么不用对象来保存我们的地图元素?原因很简单,我们操作byte数据的效率要高于操作对象本身。
好的,闲话不多说,方法如下:
首先,我们需要一个ArrayList来保存数据,有什么用呢?继续看你就知道了
//创建地图数组来保存数据
ArrayList<Byte> MapList=new ArrayList<Byte>();
/** * 将记事本中的数据读入到数组当中 * @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,起初我也是觉得纳闷,任何方法当然都要测试一下,自己做个记事本地图试一下吧。
相关推荐
至于`迷宫墙体.map`和`迷宫地形.map`,它们是游戏地图的关键组成部分。`.map`文件通常包含地图的布局信息,比如墙体的位置、可通行区域、奖励物品等。这些数据被读入游戏后,通过批处理脚本进行解析,生成玩家可以...
4. 输入文件名“H3BLADE.EXE”,确保包括扩展名,然后保存到游戏主目录下。 步骤二:创建Data子文件夹中的空文件 1. 在游戏主目录中找到并进入“Data”子文件夹。 2. 使用与步骤一相同的方法,分别创建以下四个空...
打开记事本,无需输入任何内容,然后选择 "文件" -> "另存为",在 "文件类型" 选择 "所有文件",输入文件名 `H3BLADE.EXE`,然后点击 "保存"。 3. 接下来,我们需要在 `Data` 子文件夹中创建另外四个空文件。这些...
- 地图:选择一个合适的地图(例如de_cbble) - 网络:选择“局域网” - RCON密码:设置一个密码(例如123456789) - 其他设置可保持默认 - 完成设置后点击“开始服务器”按钮,启动CS 1.6服务端。 ### 三、...
在这个名为"android学习小项目"的压缩包中,包含了10几个实用的Android应用示例,如备忘录、贪吃蛇游戏、记事本以及骨骼地图等。下面我们将详细探讨这些项目中的关键知识点。 1. **备忘录**: 备忘录应用通常涉及...
然后,打开记事本,编辑`C:\Program Files\CS_Server_1.6\开启 HLTV-开启前请编辑.bat`文件,将代码修改为: ``` start HLTV /MIN/HIGH hltv.exe +connect 192.168.173.1:27015 +serverpassword 123456789 -port ...
6. **记事本和笔记功能**:帮助玩家和主持人记录游戏过程,保存重要的故事线索和事件。 7. **互动式场景元素**:例如开关、陷阱、机关等,增强游戏的互动性和沉浸感。 8. **聊天和语音功能**:集成的通信工具,让...
- 保存文件并重新启动游戏。 2. **取消开场视频**: - 在`UserSettings.ini`文件中,将`SkipIntroVideo = 0`改为`SkipIntroVideo = 1`。 - 这样做可以跳过每次启动游戏时的开场动画,节省时间。 #### 三、进入...
- **外挂模板文件 (`WMDOFUS2.ini`)** - 可以使用记事本打开并进行设置。建议先完成此文件的设置,之后新增的每个账号都会读取这些设置。 - 详细设置说明可参考相关说明文件中的`WMDOFUS2.ini`账号配置说明。 **2. ...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
2. 题目2中提到的CF游戏运用的技术是虚拟现实,它能模拟真实环境,提供沉浸式的游戏体验。 3. 题目3涉及人工智能技术的应用,如在线翻译、人脸识别和车牌识别,这些都是AI技术的实例。 4. 题目4考察了能用于编辑或...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、...
Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、...
HTML5的Geolocation API允许网站获取用户的地理位置信息,这在地图应用、社交网络或本地服务中极为有用,为用户提供更个性化和精准的服务。 以上这些案例展示了HTML5在图片处理、编辑、数据管理、游戏、表单、可视...
g003.zip 代表和平的娱乐游戏,自带EXE(12KB) 596,g002.zip 一个迷宫游戏,还有地图编辑器呢,完全源码(230KB) 597,g001.zip 模仿windows中的扫雷,自带EXE(38KB) 598,p012_prtDB.zip 打印...
Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、...
g003.zip 代表和平的娱乐游戏,自带EXE(12KB) 596,g002.zip 一个迷宫游戏,还有地图编辑器呢,完全源码(230KB) 597,g001.zip 模仿windows中的扫雷,自带EXE(38KB) 598,p012_prtDB.zip 打印...