上次搞定了角色的行走以及角色与地图元素的碰撞检测问题,这次就在这个地图中加入第一个NPC吧..
首先,前面做地图的时候用的是三层的数组,第一层用来存放角色脚下的素材,第二层是和角色同一层次的素材,而第三层本来是准备用来存放角色上方的素材想云朵之类的,但是想了一下,还是算了,没必要做得那么的麻烦,那么第三层就用来存放NPC吧...
在游戏中加入一个NPC,可以用JAVA面向对象的思想,创建一个NPC类,游戏中的每一个npc都是这个类的一个对象,我们游戏对npc的操作便可以转化成为对这个类的操作了.但是如果是在游戏的代码中去实例化这个类的话,一旦npc对象多了代码就会变得特别的长,不方便我们进行后续的调试,所以最好是用一种文件格式将一个个的npc属性事先存放好,在游戏进行的过程中一旦遇到一个npc再从这个事先保存好的npc文件中读取其中的属性,这样我们要修改npc的属性也比较方便...
用什么格式好呢,一开始我想过直接用txt文件,不过txt好像有点难控制的样子,正好前段时间学过XML的解析,这里我选择了用XML来保存npc的信息,而java中解析xml的方法采用dom解析的方式,因为这样既可以读又可以写...
思路就这么多,下面开始做准备工作..
1.找到一个npc的图片,我开始找了很久纠结不知道用什么,后面偶然发现一个网站,这里面可以让你自己拼接一个像素的npc图像出来,这简直不能再棒(链接放上:http://www.icongenerators.net/pixelavatar.html)
我拼了一个这样的出来,不过这网站保存的图片背景是白色的,需要自己用PS把背景换成透明的
2.接着就是写npc属性的xml文件了,这里先暂时想到这么几个属性,后面用到其他的再加吧..
<?xml version="1.0" encoding="utf-8"?> <npc201> <name>逗逼</name> <hp>20</hp> <level>2</level> <exp>10</exp> <money>10</money> <islive>1</islive> <talk>我是大傻逼,哈哈哈哈</talk> </npc201>
3.再接下来就是在游戏中通过dom解析xml文件,得到这个npc对象了,得到这个对象之后,游戏程序怎么找到这个对象呢,这里因为一个npc是和第三层地图数组map3里面的值是一一对应的,所有在得到这个对象之后,可以将它与它对应的数组中的值,放入hashmap,这样就建立起了一一对应的关系.
首先写一个npc类:
package yy1020;
public class NPC {
//NPC的名字
String name;
//血量
int hp;
//等级
int level;
//经验
int exp;
//金钱
int money;
//是否活着 1活着 0死了
int islive;
//对话
String talk = "我是大傻逼!";
public NPC(String name,int hp,int level,int exp,int money,int islive,String talk) {
this.name = name;
this.hp = hp;
this.level = level;
this.exp = exp;
this.money = money;
this.islive = islive;
this.talk = talk;
}
}
写一个从xml文件中获取npc对象的类
package yy1020;
import java.util.HashMap;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.Docum