Partage
  • Partager sur Facebook
  • Partager sur Twitter

vérification de collision

    19 novembre 2020 à 19:39:29

    Hello tout le monde...je tente de faire un pong et j'ai un problème avec la gestion des collisions de mon paddle et les coins de la fenêtre.

    Lorsque j'appui sur Event.VK_UP...mon paddle se déplace normal en ajoutant la vélocité à la dernière position et lorqu'il arrive à y=0, la position "paddle.y" est remise à 0 donc il ne dépasse pas. mais pour Event.VK_DOWN en appuyant une seule fois il va directement se mettre à 

    "y=Largeur_de_la fenetre - largeur_du_paddle" apparament...je vois la position avec un Sysout...mais le rendu visuel montre même que

    "paddle.y + paddle.height > largeur_de_la_fenetre".

    public class Paddle {
    	
    	private int x;
    	private int y;
    	private Color color;
    
            //constantes dimension d'un paddle  
    	public final static int WIDTH= 5;
    	public final static int HEIGHT = 50;
    	
    	public Paddle(int x , int y,Color c)
    	{
    		this.x = x;
    		this.y = y;
    		color = c ;
    	}
    	
    	public void draw(Graphics g)
    	{
    		g.setColor(color);
    		g.fillRect(x, y, Paddle.WIDTH, Paddle.HEIGHT);
    	}
    	
    	public int getX() {
    		return x;
    	}
    
    	public void setX(int x) {
    		this.x = x;
    	}
    
    	public int getY() {
    		return y;
    	}
    
    	public void setY(int y) {
    		this.y = y;
    	}
    	
    	public void keyPressed(KeyEvent k)
    	{
    		
    		//les collision sont directement traitées en fonction de la touche appuyée
    		switch(k.getKeyCode())
    		{
                    
    		case KeyEvent.VK_UP :
    			if(this.getY() >0)
    // GraphicContent.yVelocity est une variable static de Mon Panel 
    this.setY(this.getY() - GraphicContent.yVelocity);
    //si on touche l'axe y=0 le paddle n'avance plus
    			this.setY(0);
    			break;
    			
    		case KeyEvent.VK_DOWN :
    //Game.Height est la taille de ma frame
    			if(this.getY()> Game.HEIGHT - Paddle.HEIGHT)
    //Normalement avec this.setY(taille de la frame - longueur_du_paddle c'est censé ne pas dépasser (je pense)
    				this.setY(Game.HEiGHT - Paddle.HEIGHT);
    //j'affiche la position du paddle que j'ai créer dans mon Panel pour évaluer la coordonnée en y de mon paddle
     
    			System.out.print(GraphicContent.pad.getY())	;
    			this.setY(this.getY() + GraphicContent.yVelocity);
    			break;
    		}
    	
    	}
    	
    	
    }
    

    Mon panel

    public class GraphicContent extends JPanel  implements ActionListener,KeyListener{
    
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    	Timer time;
    	public static Paddle pad;
    	
    	
    	static int yVelocity = 2;
    	
    	public GraphicContent() {
    		time = new Timer(10,this);
    		pad= new Paddle(2,(int)((Game.HEiGHT-Paddle.HEIGHT) / 2),new Color(33,0,15));
    		this.addKeyListener(this);
    		this.setFocusable(true);
    		time.start();
    		
    	}
    	
    
    	public void draw(Graphics g) {
    		pad.draw(g);
    	}
    	public void paintComponent(Graphics g)
    	{
    		
    		Graphics2D g2d = (Graphics2D) g;
    		this.draw(g2d);
    		
    	}
    	
    	@Override
    	public void actionPerformed(ActionEvent e) {
    	
    		repaint();
    	}
    	
    	@Override
    	public void keyTyped(KeyEvent e) {
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public void keyPressed(KeyEvent e) {
    		// TODO Auto-generated method stub
    		pad.keyPressed(e);
    	}
    
    	@Override
    	public void keyReleased(KeyEvent e) {
    		// TODO Auto-generated method stub
    		
    	}
    	
    }
    



    • Partager sur Facebook
    • Partager sur Twitter

    vérification de collision

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown