手把手一步一步教你使用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);
        ......
}

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

项目源码

项目源码

posted @ 2022-01-11 15:45  [豆约翰]  阅读(128)  评论(0编辑  收藏  举报