源码下载:
链接: https://pan.baidu.com/s/1DucpIik596W1pkY09FjUew 提取码: n8mq
其中有个文件“类的功能介绍.txt”,介绍了每个类的作用,大家参考。
可以看出,这是基于学生案例的一个改进。学生做了多窗口的UI和飞机大战,我加了装备合成。
初学者做到这样,不容易。但学生的很多代码,还可以再改进。
最开始学到树状结构,顺序存放、链式存放是数据结构的技术。
一、应用软件
应用软件、毕业设计,都需要数据库。数据库也可以保存树状结构。网游、王者荣耀,必然是数据单独存放,可能是XML,可能是一张表,json等格式。
比如商品分类,父节点和子节点的商品分类。
id,parentid, type, isleaf
1,0,食品类,0
2,1,饮料, 0
3,2,碳酸饮料,1
4,2,啤酒饮料,1
5,2,奶茶饮料,1
可以认为,在商品分类里,[3][4][5]的id,对应叶子节点。
应用软件、毕业设计,有很多分级的设计,比如:论坛版块、一级论坛,二级论坛,主题、分类、帖子。
比较low的毕设,就是两张表:一级分类表,二级分类表。如果要做三级、四级,怎么办?
二、游戏软件
我们把节点重新排一下,变成游戏软件的装备:
id,parentid, type, isleaf
1,4,初级A1,1
2,4,初级A2,1
3,4,初级A3,1
4,5,中级B1,0
5,0,高级C1,0
然后,改变一下字段,比如,合成条件,一个节点由多个子节点合成,还可以表示某节点的需要数量。
id,parentid, extequip, condition
1,4,初级A1,0
2,4,初级A2,0
3,4,初级A3,0
4,5,中级B1,1,2,3 // 表示所需[1][2][3]各一件
5,0,高级C1,2,2,3,3// 表示所需[2]号装备两件,[3]号装备两件。
网游的数据,也必然是外部数据文件、或者网络后台数据库,而且要经常更新。
三、改进
json火了,以下是一种方案:
{ "id": 4, "parentid": 5, "extequip": "高级C1",
"condition": [ { "id": 2, "num": 2 },
{ "id": 3, "num": 2 } ]
}
四、程序存放
比较简单的做法,直接写出二维数组,直接赋值(参考我的程序)。
如果是外部文件,可以读取到一个二维数组。也可以读取到一个java的树状结构。
class Node
{ List<Node> children=new ArrayList<Node>();
}
参考设计模式的组合模式。
五、改进
还有一些辅助的功能,比如递归画出连线,递归计算子节点的数据之和,就是装备的总价值。
也可以增加字段,用递归获得一个低级装备,可以合成哪些高级装备。
这还没有加属性,攻击,防御,控制。这样一个编程的技术,对于学生来说,已经很领先。以500个学生算,了解、学习这个技术的人,不足10个。