我是初学者,正在制作一个打飞机的小游戏- -!。现在遇到一点问题,还请各位大神赐教。
问题描述:
我的敌机类Enemy下有多个属性(如位置坐标x和y、血量hp、姿态degree、速度speed、贴图bmp等),在实例化时可以通过下面的这条语句来实例化并初始化。
new Enemy(x,y,hp,degree,speed,bmp)
由于敌机种类较多,我打算将这些数据静态化放在一个类Params中。Params下有多个子类,这些子类的属性列表完全相同且全为静态属性(也可直接是静态子类),仅数值不同。比如某两种型号的敌机e_plane01以及e_plane02:
public class Params {
static class e_plane01{
public static int x=11;
public static int y=12;
public static int hp=13;
}
static class e_plane02{
public static int x=21;
public static int y=22;
public static int hp=23;
}
}
那么问题就来了,我实例化时的代码就老长老长的:
enemy01= new Enemy(Params.e_plane01.x, Params.e_plane01.y, Params.e_plane01.hp,…);
如果是在C里,那我完全可以把E_plane作为一个结构体模板(保证属性列表相同),并分别创建e_plane01、e_plane02等结构体节点(不同种类的敌机的同一属性不尽相同),再将结构体节点的指针作为参数传给别的函数去操作。但java中没有结构体,我有没有办法写出 enemy01=new Enemy(&Params.e_plane01);这样简练的句子呢?这样的话,我只需修改构造函数成这样就好了:
Enemy(struct E_plane *someStaticClass){
this->x=someStaticClass->x;
this->y=someStaticClass->y;
…
}
所以特此求教各位大神,有没有解决办法,或者是我数据结构存在问题,有没有什么其他方案?谢谢大家