0

标题不是很清楚,但我不知道如何制定它。因此,请随意建议一个新标题。

我目前正在使用 Slick2D 库用 Java 制作游戏。首先,我在render()主类的函数中处理所有渲染。但即使只有几个对象,我发现这变得非常混乱。

简短的示例,尽管原始代码需要渲染更多内容:

    g.setBackground(Color.darkGray);
    g.setColor(Color.black);
    g.fillRect(0, 0, gc.getScreenWidth(), 128);                             //draw top UI
    g.fillRect(0, 128, gc.getScreenWidth(), 512, sky, 8, 512);              //draw background
    g.fillRect(0, 720 - 128, gc.getScreenWidth(), 128, ground, 128, 128);   //draw ground
    g.drawImage(charSprite, charX, charY);                                  //draw character
    g.drawImage(weaponSprite, weaponX, weaponY);                            //draw weapon

    for (firedArrows arrow : Arrow) {
        g.drawImage(arrowSprite, arrow.getPosX(), arrow.getPosY)            //draw all arrows
    }

所以,我现在切换到让每个对象自己渲染。在主render()函数中,我将调用 的render()方法,该方法level依次渲染关卡并调用关卡render()中对象的函数。

Main.render() => level.render() => 渲染级别

                         => character.render() => render character
                                               => weapon.render() => render weapon
                         => monsters.render()  => render monsters

等等等等。

这两种方法中的哪一种更受欢迎,为什么?或者是否有第三种方法是首选?

4

1 回答 1

0

恕我直言,“正确的”面向对象设计是将域模型对象与渲染器分离。桥和/或访客模式可能适用于此。

于 2013-04-19T10:43:22.383 回答