1

我已经在一个非常基本的java游戏上工作了大约一个月,我遇到了一个巨大的问题。它可以在任何显示器上正常工作,只要该显示器的分辨率高于 1280 x 720,这是我设置游戏运行时的分辨率。直到我在我朋友的电脑上运行它并且它并不完全适合他的屏幕时,我才意识到这是一个问题。这里真正的问题是,我正在制作一种 2D 自上而下的射击游戏,每个关卡中的墙壁和道具都有硬编码的坐标。我无法将所有内容都与屏幕尺寸相关,因为这不仅会非常困难,而且还会使游戏的难度甚至可能随着屏幕分辨率而变化。我想一种解决方案是让它在 800 x 600 中运行,只是让所有的关卡更小,但那不是

我想知道是否有办法让我扩展我的程序以适应显示器。例如,如果我在 4:3 显示器上运行,例如我朋友的 1024x768,我希望程序按比例适合屏幕,(因此它的顶部和底部会有黑条,就像宽屏视频一样4:3 显示器),但我也希望我的所有墙壁和电源都放置在相对于新缩放屏幕的位置。

是否有某种方法可以在程序中“拉伸”或“缩小”像素,以便所有内容都显示在窗口中并缩放?即使不是字面意思。我很感激任何帮助。

4

2 回答 2

1

假设您使用标准 Graphics/Graphics2D,您可以缩放绘画:

private static final double SCALE = 0.75;
private static final double INV_SCALE = 1.0 / SCALE;

@Override
public void paintComponent(Graphics g) {
    Graphics2D g2 = (Graphics2D)g;
    g2.scale(SCALE, SCALE);
    ...
    g2.scale(INV_SCALE, INV_SCALE);

}

比例因子(这里是 SCALE)当然更难设置。

鼠标坐标必须自己缩放。

于 2013-01-03T21:41:16.090 回答
0

在代码中使用逻辑分辨率并在输出时对其进行缩放。

于 2013-01-03T21:34:27.630 回答