大家好,我正在用Android制作一个简单的Libgdx游戏,涉及触摸屏幕和敲击东西。但是我遇到了一个小问题。我只有少量武器可供选择,但我不知道实际绘制/使用所选武器的最佳方法是什么。它们都是从基本武器类别继承的。现在,我有一个普通的锤子类和一个扩展锤子的快速锤子类。

快速锤有一些特殊方法,摆动速度更快。当我只实例化类时,我想测试一下就可以了。但是,我想检查一下预先选择了哪个锤子,然后进行访问并绘制它。除了大量的if语句,我想不出一种非常优雅的方法来做到这一点。

我最初尝试将检查变量设置为int。然后,如果int 1,则铁锤= new normalhammer();否则,如果int 2则铁锤= new fasthammer();但这显然不起作用,因为我的锤子变量已分配给Normalhammer类别,即Hammer Hammer;做到这一点的最好方法是什么?

Hammer hammer;
FastHammer hammer;//this obviously won't work because duplicate names

if(selected==1){//this was the plan but again won't work because duplication

            hammer = new Hammer();
        }

        else if (selected==2){
            hammer = new FastHammer();

        }

hammerframe = hammer.HammerAnimation.getKeyFrame(hammer.hammerTime+=delta, false);
  //then accessing the class variables won't work because again hammer is a duplicate field.  I basically want to check what the check int is and then set hammer to the right class based on that int and the rest of the code will automatically retrieve what I need.  Is this possible?

最佳答案

好吧,这就是我要怎么做。


使您所有的武器类都实现一些有助于渲染的接口/超类
保留武器对象的“军械库”,每种武器类型各一个
当玩家选择武器时,将代表性的现有对象设置为“当前武器”变量
为了进行渲染,请使用现有的“当前武器”变量


然后,您无需在渲染器中处理不同的类型-它在接口后面被抽象了!

关于java - 检查所选武器并进行绘制而无需字段名称重复的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23352506/

10-10 12:31