Créez tout d'abord une nouvelle classe qui étend la classe WorldView
classe. J'ai appelé ma nouvelle classe Background
. Dans cette nouvelle classe, importez donc tous les paquets Java dont vous aurez besoin pour remplacer la fonction paintBackground
méthode. Ce devrait être :
import city.soi.platform.*;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.ImageObserver;
import javax.swing.ImageIcon;
import java.awt.geom.AffineTransform;
Ensuite, après le nom de la classe, assurez-vous qu'il y a bien la mention "extends". WorldView
. Voici ce qu'il en est :
public class Background extends WorldView
Déclarez ensuite les variables jeu de type Game
et une variable image de type Image
quelque chose comme ça :
private Game game;
private Image image;
Ensuite, dans le constructeur de cette classe, assurez-vous que le jeu de type Game
est dans la signature du constructeur et que dans l'appel à super
vous devrez initialiser le WorldView
initialiser le jeu et initialiser les variables de l'image, quelque chose comme ceci :
super(game.getCurrentLevel().getWorld(), game.getWidth(), game.getHeight());
this.game = game;
bg = (new ImageIcon("lol.png")).getImage();
Dans ce cas, il suffit de remplacer l'option paintBackground
exactement de la même manière que vous l'avez fait lors de la surcharge de la méthode paint
dans la méthode Player
classe. Voici ce qu'il en est :
public void paintBackground(Graphics2D g)
{
float x = getX();
float y = getY();
AffineTransform transform = AffineTransform.getTranslateInstance(x,y);
g.drawImage(bg, transform, game.getView());
}
Enfin, vous devez déclarer une référence au niveau de la classe à la nouvelle classe que vous venez de créer dans le fichier Game
et l'initialiser dans la classe Game
quelque chose comme ceci :
private Background image;
And in the Game constructor:
image = new Background(this);
Enfin, il ne reste plus qu'à ajouter le fond au cadre ! C'est ce qui nous manquait à tous, j'en suis sûr. Pour ce faire, vous devez faire quelque chose comme ceci après la variable frame
a été déclarée :
frame.add(image);
Veillez à ajouter ce code juste avant frame.pack();
. Veillez également à utiliser une image de fond qui ne soit pas trop grande !
Voilà, c'est fait ! J'ai remarqué que les moteurs de jeu peuvent gérer les formats d'image JPEG et PNG, mais qu'ils pourraient aussi en supporter d'autres. Même si cela permet d'inclure une image de fond dans votre jeu, ce n'est pas parfait ! En effet, lorsque vous passez au niveau suivant, toutes vos plateformes et tous vos sprites sont invisibles et tout ce que vous pouvez voir, c'est votre image de fond et tous les JLabels/Jbuttons que vous avez inclus dans le jeu.