Déplacement javaFX personnage.

Aidez-moi svp

a marqué ce sujet comme résolu.

Bonjour, j’essaie de faire bouger un cercle que j’ai crée avant grâce au code qui permet d’ajouter pour chaque cas (exemple pour le cas S D Q Z ), une action qui permet pour Z d’avancer vers le haut, pour la touche D d’aller à droite, Q pour aller à gauche et Z pour reculer donc aller en bas.(C’est pour un futur jeux que je vais crée.Je n’arrive pas à crée le code qui me permet de faire ceci, j’ai essayer mais la console me met des messages d’erreurs, et pour les déplacement à droite, haut, gauche et en bas, je ne sais pas ce qu’il faut rentrer apres par exemple cas Z:

//j’aimerais pouvoir mettre que mon cercle se dirige vers le haut de l’écran.

J’aimerais que vous me fassiez le code du cercle qui ce déplace vers la droite quand je clic D, vers la gauche quand je fais Q, haut pour Z et bas pour S s’il vous plait .Merci de m’aider.

Bonjour,

J’aimerais que vous me fassiez le code du cercle

On ne fera pas le code pour toi.

Par contre, si tu essayes, que tu es bloqué⋅e, tu peux nous montrer le code que tu as fait, les erreurs claires, et on pourra t’aiguiller. :)

À+

+1 -0

Bonjour, merci de m’avoir répondu, j’ai réaliser un code qui permet de faire avancer(faire aller en haut) un cercle appelé c, crée auparavant.

J’ai un dernier problème, quand je met c.setLayoutY(c.getLayoutY(-2)); ,c.getLayoutY est surligné en rouge donc je ne peux point lancer le programme.Pouvez-vous m’aider s’il vous plait, voici le code :

package application;
    
import java.util.HashSet;
 
import javafx.animation.AnimationTimer;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.input.KeyCode;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
 
 
public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            
            Group root = new Group();//Creation groupe
            Scene scene = new Scene(root,800,500);//Creation fenetre de taille 400 sur 400 pixels
            
            
            
            Circle c = new Circle();
            c.setCenterX(400);
            c.setCenterY(250);
            c.setRadius(10);
            c.setFill(Color.BLUE);
            
            
            
            HashSet<KeyCode> tab = new HashSet<KeyCode>();
            
            AnimationTimer aT = new AnimationTimer() {
                public void handle(long l) {
                    for(KeyCode c : tab) {
                        
                        switch(c){
                        
                        case Z:
                            c.setLayoutY(c.getLayoutY(-2));
                            break;
                            
                        case S:
                            
                            break;
                            
                        case D:
                            
                            break;
                            
                        case Q:
                            
                            break;
                    
                            
                        }
                }
                
            };
            
                
            };
            
            
            scene.setOnKeyPressed(e ->{
                boolean wasEmpty = tab.isEmpty();
                if(tab.add(e.getCode()) && wasEmpty)
                        aT.start();
            });
            scene.setOnKeyReleased(e ->{
                if(tab.remove(e.getCode()) && tab.isEmpty())
                        aT.stop();
            });
            
            scene.setFill(Color.WHITE);
            root.getChildren().add(c);
        
    
            primaryStage.setTitle("Ma premiere fenetre");//Ajout d'un titre a la fenetre
            primaryStage.setScene(scene);//Ajout d'une scene dans la fenetre
            primaryStage.show();//Rendre visible la fenetre
        
        
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        launch(args);
    }
}
+0 -0

Salut,

Comme le dit @Fumble, tu as une erreur du compilateur, donc ce que tu essayes de faire n’est pas correct.

Mais, juste en regardant la documentation de javafx.scene.shape.Circle, on peut voir qu’au niveau des getLayoutY et setLayoutY, il existe deux méthodes :

public final double getLayoutY()
public final void setLayoutY(double value)

Or, toi, tu fais un appel à circle.getLayoutY(-2). Ça ne peut pas marcher, il n’existe pas de méthodes getLayoutY prenant en paramètre un entier. Par contre cette méthode te retourne un double, pouvant éventuellement correspondre à la valeur que tu recherches… Je te laisse regarder un peu. ;)

La documentation de getLayoutY, c’est par là : https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#getLayoutY—

Bon courage !

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte