Tutoriel: créer un monde 2d #
Créer le monde et les objets #
-
En Eclipse, créer le paquet
pong.commun.monde2d
-
Dans le paquet
monde2d
, créer les classes suivantesMondePong2d
ObjetPong2d
Balle2d
-
En Eclipse, s’assurer d’avoir l’arborescence suivante
-
Ouvrir
MondePong2d
et ajuster la signaturepublic class MondePong2d extends World2dFx {
-
Ouvrir
Objet2d
et ajuster la signaturepublic abstract class ObjetPong2d extends Object2dFx<MondePong2d> {
- ATTENTION: c’est une classe abstraite
-
Ouvrir
Balle2d
et ajuster la signaturepublic class Balle2d extends ObjetPong2d {
-
Utiliser Ctrl+.Eclipse: Ctrl+1 pour ajouter les
import
et les méthodes obligatoires -
Ajouter le code suivant dans
MondePong2d
public class MondePong2d extends World2dFx { public static final double LARGEUR_MONDE = 640; public static final double HAUTEUR_MONDE = 360; private Balle2d balle; @Override protected void initialize() { setWidth(LARGEUR_MONDE); setHeight(HAUTEUR_MONDE); balle = new Balle2d(); addObject2d(balle); } @Override public void drawOn(ResizableWorld2dCanvasFx canvas) { canvas.drawOnWorld(gc -> { dessinerTerrain(gc); }); super.drawOn(canvas); } private void dessinerTerrain(GraphicsContext gc) { gc.save(); gc.setStroke(Color.LIGHTGREY); gc.setLineWidth(1); gc.strokeRect(0, 0, getWidth(), getHeight()); gc.restore(); } }
-
Ajouter le code suivant dans
Balle2d
public class Balle2d extends ObjetPong2d { public Balle2d() { super(); } @Override public void initialize() { setWidth(10); setHeight(10); setTopLeftX(100); setTopLeftY(100); } @Override public void drawOnWorld(GraphicsContext gc) { gc.fillArc(getTopLeftX(), getTopLeftY(), getWidth(), getHeight(), 0, 360, ArcType.CHORD); } @Override protected boolean onMouseEvent(World2dMouseEventFx mouseEvent) { return false; } @Override public String id() { return "balle"; } }
Initialiser le CanvasPartie
#
-
Ouvrir
CanvasPartie
et ajouter le code suivantpublic class CanvasPartie extends ResizableWorld2dCanvasFx { @Override protected void initialize() { // ajouter setInitialWorldSize(MondePong2d.LARGEUR_MONDE, MondePong2d.HAUTEUR_MONDE); }
Initialiser la VuePartie
#
-
Ouvrir
VuePartie
et ajouter le code suivantpublic class VuePartie extends ViewFx { // ... // ajouter @FXML private CanvasPartie canvasPartie; @Override public void initialize() { // ... // ajouter Ntro.assertNotNull(canvasPartie); } // ...
-
Utiliser Ctrl+.Eclipse: Ctrl+1 pour corriger les erreurs de compliation
-
S’assurer que l’application s’exécute sans erreur
$ sh gradlew pong
- NOTES:
- c’est normal si le canvas n’affiche rien
- on a pas encore appelé la méthode
drawOn
pour que le monde2d se dessine sur le canvas
- NOTES: