手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏06加载游戏背景

游戏背景

Background.java

package world;


import sprite.Sprite;

import java.awt.*;

public class Background {
    private Sprite _background;
    private Sprite _cloud;

    public Background(){
        _background = new Sprite("res/background/level1.png");
        _cloud = new Sprite("res/background/level1_back.png");
        _background.translate(-900, 120);
        _cloud.translate(0, 120);
        _background.scale(2, 2);
        _cloud.scale(2, 2);
    }
    
    public void update(Graphics2D g){
        _cloud.show(g);
        _background.show(g);
    }

}

level1.png(1026256)放大2倍后(2052512)
level1_back.png(513240)放大2倍后(1026480)
我们的屏幕大小是:(640*480)

DisplayMode(640, 480, 32, 0)

我们先来看一下水平方向(x轴方向)

_background.translate(-900, 120);

level1.png被向左平移了900个像素,还剩下2052-900=1150个像素,大约是640的2倍。

_cloud.translate(0, 120);

level1_back.png被直接放到了x=0的点,还剩下1026像素,大约是640的2倍。

level1.png和level1_back.png覆盖在了一起,构成了最终的背景效果。
将来随着player的向右移动,背景会向左平移,造成一种player向前走的效果。
将来,我们会另外准备2张背景图片,交替反复的贴到屏幕上。

再来看一下垂直方向(y轴方向)

_background.translate(-900, 120);
_cloud.translate(0, 120);

屏幕高度是480,背景图片高度240,我们先移动到偏移120的位置,然后放大2倍,垂直方向上正好填满整个屏幕。

主窗体加载背景

public GameApp(){
        try{

            background = new Background();
        ......
}
    private void _gameLoop(){
        background.update(g);
        ......
}

如果您迷路了,请参考完整源码:

项目源码

项目源码

你可能感兴趣的:(手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏06加载游戏背景)