3

我一直在尝试使用 ninjacave 的教程和许多其他教程来显示文本,但我无法让它工作。有人可以给我一个有效教程的链接吗?谢谢。

代码如下:

主类:

package oregon.client;

import oregon.src.*;

import org.lwjgl.*;
import org.lwjgl.opengl.*;

import static org.lwjgl.opengl.GL11.*;

public class Oregon {
    public static Settings settings = new Settings();

    public GameController controls = new GameController();

    public FPSCounter fps = new FPSCounter();

    public void init() {
        try {
            if (settings.fullscreen) {
                Display.setDisplayModeAndFullscreen(Display
                        .getDesktopDisplayMode());
            } else if (!settings.fullscreen) {
                Display.setDisplayModeAndFullscreen(new DisplayMode(
                        settings.defaultWidth, settings.defaultHeight));
            }

            Display.setVSyncEnabled(true);
            Display.create();
        } catch (LWJGLException e) {
            stop(e);
        }

        initOpenGL();
        start();
    }

    public void initOpenGL() {
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0, settings.defaultWidth, settings.defaultHeight, 0, 1, -1);
        glMatrixMode(GL_MODELVIEW);
    }

    public void debug() {     

    }

    public void openGL() {

    }

    public void start() {
        while (!Display.isCloseRequested()) {
            controls.keyboard();
            fps.tick();

            debug();
            openGL();

            Display.update();
            Display.sync(100);
        }

        Display.destroy();
    }

    public static void stop() {
        System.exit(0);
        Display.destroy();
    }

    public static void stop(Exception e) {
        e.printStackTrace();
        System.exit(0);
        Display.destroy();
    }

    public static void setFullscreen() {
        try {
            Display.setDisplayModeAndFullscreen(Display.getDesktopDisplayMode());
        } catch (LWJGLException e) {
            stop(e);
        }
    }

    public static void removeFullscreen() {
        try {
            Display.setDisplayModeAndFullscreen(new DisplayMode(
                    settings.defaultWidth, settings.defaultHeight));
        } catch (LWJGLException e) {
            stop(e);
        }
    }

    public static void main(String args[]) {
        Oregon oregon = new Oregon();
        oregon.init();
    }
}

那是主类的代码。

编辑:-这是我用 Jesse B 的代码得到的图片。 在此处输入图像描述

4

3 回答 3

3

DavidB 在他的回答中提到使用graphics实例 to drawString()。这将使用您当前的字体。这意味着您应该graphics.setFont()先调用,否则它将使用默认的系统字体。这也使得很难记住(在游戏的各种方法中)哪个是“当前”字体。

或者,您可以初始化一个字体实例并将其直接用于drawString. 来自Slick2D 维基...

// initialise the font
Font font = new Font("Verdana", Font.BOLD, 20);
TrueTypeFont trueTypeFont = new TrueTypeFont(font, true);

// render some text to the screen
trueTypeFont.drawString(20.0f, 20.0f, "Slick displaying True Type Fonts", Color.green);

这要求所有支持的平台都可以解析字体名称。更好的选择是将字体嵌入到您的 JAR 中,方法是将其放置在您的资源目录中。

编辑
看到您发布的图片后,我的猜测是您没有正确加载字体。试试这个...

graphics.drawString("Test drawing string.",20.0f,20.0f);

如果这工作,它确认字体不工作。如果要使用自定义字体,则必须将字体文件添加到 JAR 中并将其作为资源引用。

于 2012-06-21T19:13:48.817 回答
3

下载 Slick2D 库并导入 jar。

在您的班级内涵盖整个班级的范围:

Font font;
TrueTypeFont ttf;

你的初始化方法

public void init(GameContainer gc){

    font = new Font("Verdana", Font.BOLD, 20);
    ttf = new TrueTypeFont(font, true);

}

你的渲染方法:

public void render(GameContainer gc, Graphics g){

    //render code here
    ttf.drawString("Hello, World!")

}
于 2012-09-02T00:40:41.473 回答
2

根据本教程,您可以drawString在方法中从您的图形对象调用render

g.drawString("Hello World!",200,200);

于 2012-06-21T19:02:29.870 回答