【问题标题】:Resource loading into ArrayList for tile-based game. (Java)将资源加载到 ArrayList 以进行基于图块的游戏。 (爪哇)
【发布时间】:2014-07-04 00:32:37
【问题描述】:

所以我正在尝试使用 Eclipse 开发基于图块的游戏,但我遇到了如何将资源文件夹中的资源加载到 ArrayList 的问题。我有一个文件阅读器,可以加载所有需要的文件 到一个列表中,但我不能为每种瓷砖类型(草、石头等)使用类文件夹,因为 ArrayList 只能存储一种类类型。有没有办法将 tile 超类的所有子类加载到单个 ArrayList 中。

【问题讨论】:

    标签: java arraylist resources tile


    【解决方案1】:

    如果您有一个父类(或接口),所有其他类都从该父类(或接口)扩展而来,那么您可以简单地使用该父类的 ArrayList。只需创建一个 Tiles 的 ArrayList。

    List<Tile> tiles = new ArrayList<Tile>();
    
    Tile a = new GrassTile(); //GrassTile extends Tile
    Tile b = new StoneTile(); //StoneTile extends Tile
    
    tiles.add(a);
    tiles.add(b);
    
    for(Tile t : tiles){
       t.doTileStuff();
    }
    

    编辑:您也可以重新考虑您的设计并尝试支持composition over inheritance。与其拥有一堆扩展 Tile 的类,不如拥有一个包含决定其行为和外观的属性的单个 Tile 类。

    【讨论】:

      【解决方案2】:

      如果您尝试放入单个 arraylist 的图块是超类的子类,那么您可以将 arraylist 设置为接受超类类型,同时将子类伪装成超类。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-28
        • 1970-01-01
        • 2018-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多