手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏06加载游戏背景
  97wjiurZkMpk 2023年11月02日 75 0

游戏背景

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(1026*256)放大2倍后(2052*512) level1_back.png(513*240)放大2倍后(1026*480) 我们的屏幕大小是:(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);
......
}

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

项目源码

​项目源码​

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

97wjiurZkMpk