Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查选定武器和绘图的最佳方法,无需重复字段名_Java_Android_Libgdx - Fatal编程技术网

Java 检查选定武器和绘图的最佳方法,无需重复字段名

Java 检查选定武器和绘图的最佳方法,无需重复字段名,java,android,libgdx,Java,Android,Libgdx,大家好,我正在Android上制作一个简单的Libgdx游戏,包括触摸屏幕和点击东西。然而,我遇到了一个小问题。我有一小部分武器可供选择,但我不知道实际绘制/访问所选武器的最佳方法是什么。它们都是从一个基本武器类继承的。现在我有一个普通的锤子类和一个扩展锤子的快速锤子类 快锤有一些特殊的方法,摆动得更快。当我只是实例化我想要测试的类时,它工作得很好。然而,我想做一个检查,看看哪个锤子已经事先选定,然后访问它并绘制它。除了大量的if语句之外,我想不出一个非常优雅的方法来实现这一点 我最初尝试给一个

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

快锤有一些特殊的方法,摆动得更快。当我只是实例化我想要测试的类时,它工作得很好。然而,我想做一个检查,看看哪个锤子已经事先选定,然后访问它并绘制它。除了大量的if语句之外,我想不出一个非常优雅的方法来实现这一点

我最初尝试给一个检查变量一个int,如果int为1,那么hammer=new normalhammer();否则,如果int 2,则hammer=新的fasthammer();但这显然不起作用,因为我的hammer变量被分配给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?

好吧,我会这样做的

  • 让你所有的武器类实现一些接口/超类,这将有助于渲染
  • 保留一个武器库,每个武器类型一个
  • 当玩家选择武器时,将代表性的现有对象设置为“当前武器”变量
  • 对于渲染,请使用现有的“当前武器”变量

然后,您就不需要处理渲染器中的不同类型了——它是在接口后面抽象出来的

谢谢。你会用什么做武器库?链表?可能只是一个数组。当用户点击你的武器选择位置时,在选择的武器变量中设置适当的条目。这与问题无关,但停止在游戏的主循环中创建对象,GC是邪恶的!