我正在开发一款游戏.我有一个类的武器,不同的子类,如Shotgun,Mg...现在我希望能有具体的武器,像AK47有30发子弹的弹药伤害等.同样的事情,是中高级车的10分.例如兰博基尼的固定最高速度为300公里/小时,而座椅利昂的固定最高速度为200但仍然是汽车(或子类?).我该怎么做?兰博基尼是构造函数中具有固定值的汽车的子类吗?我是否应该为汽车类或文件中的每辆汽车的值保持常量?希望我很清楚.谢谢
编辑:我认为我不够清楚.我需要"保存"汽车的默认值(兰博基尼:max peed 300 ...),这样在游戏中玩家可以拥有兰博基尼并且它总是最大速度300.由于兰博基尼,子类的选项现在消失了只是一个汽车的实例.所以现在我的问题:在文件中或作为类车中的静态常量?例如:
public class car {
public static final int SPEED_LAMBORGHINI = 300
// rest of class car
}
Run Code Online (Sandbox Code Playgroud)
我认为文件设计会更好但是不需要Long从文件加载所需的武器吗?
一般一个兰博基尼将是Car一个name类型的字段String值为"兰博基尼"等maxSpeed类型的字段int和值300.
我猜其余的事情变得很明显.
基本上 - 为不同Form的对象使用不同的类.你很少需要每个具有不同类的对象.
一个德罗宁将是一个Car而是时间旅行德罗宁可能是不同的类.
但是 - 由于enum现在可以使用,您可以考虑:
enum Car {
Lamborghini(300),
Seat(200);
final int topSpeed;
private Car(int topSpeed) {
this.topSpeed = topSpeed;
}
}
Run Code Online (Sandbox Code Playgroud)
添加
至于你在哪里存储详细信息的查询 - 我会在代码中放置默认值,但允许每个对象从一个属性文件中修改该值.在enum这里帮了不少忙,你可以把这样的:
TopSpeed.Lamborghini=286
Run Code Online (Sandbox Code Playgroud)
在您的属性文件中,并enum自动调整它.
添加
请记住,enums应尽可能接近常量.不要试图扩展它们或改变它们的属性(可能在开始时除外).
要使用此表单,您需要以下内容:
class Player {
Car vehicle = Lamborghini;
...
Run Code Online (Sandbox Code Playgroud)