J'essaie de faire un jeu de pong mais ma pong ne bouge pas correctement pour une raison quelconque.Pong Le fond de la palette ne bouge pas lorsque la touche UP est pressée
Quand je frappe la flèche du bas vers le bas, il se déplace très bien. Mais quand j'appuie sur la touche fléchée HAUT, toute la palette devient plus longue vers le haut ... Si je redimensionne la fenêtre, la palette retourne à sa longueur normale à cette position. Si j'appuie sur la touche UP, elle continue à s'étendre vers le haut.
Je ne pense pas que sa ma logique de code, mais quelque chose effacer la palette déjà dessiné ... voici mon code,
Code pour Paddle:
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.geom.Rectangle2D;
import javax.swing.JPanel;
public class Paddle extends JPanel {
int x;
int y;
int width;
int height;
Paddle(){
this.x = 0;
this.y = 0;
this.height = 40;
this.width = 10;
}
Paddle(int x, int y, int width, int height){
this.x = x;
this.y = y;
this.height = height;
this.width = width;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLACK);
g.fillRect(x, y, width, height);
}
public void moveDown(){
this.y += 3;
repaint();
System.out.println("h: " + height + " x: " + x + " y: " + y + " getW: " + getWidth() + " getH: " + getHeight());
}
public void moveUp(){
this.y -= 3;
repaint();
System.out.println("h: " + height + " x: " + x + " y: " + y + " getW: " + getWidth() + " getH: " + getHeight());
}
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 int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
}
Code pour jeu entier:
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Pong extends JFrame {
Pong() {
final Paddle p1Paddle = new Paddle();
Paddle p2Paddle = new Paddle();
p1Paddle.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
//super.keyPressed(arg0);
switch (e.getKeyCode()) {
case KeyEvent.VK_DOWN:
p1Paddle.moveDown();
break;
case KeyEvent.VK_UP:
p1Paddle.moveUp();
break;
default:
System.out.println("please press up or down");
}
}
});
setLayout(new BorderLayout());
add(p1Paddle, BorderLayout.CENTER);
//only focused components can recieve key events...
p1Paddle.setFocusable(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame frame = new Pong();
frame.setTitle("Pong");
frame.setSize(650, 300);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
Toute aide à ce sujet ou des conseils de code général serait apprécié.
Pourquoi avez-vous clearRect (0,0,650,300) codé en dur? –
Je veux effacer toute la fenêtre et m'assurer que je n'ai manqué aucune partie de la pagaie ... mais la pagaie n'est pas affectée pour une raison quelconque. – user772401
Pourquoi changez-vous la hauteur à chaque fois que vous bougez et que vous vous déplacez vers le bas? –