J'essaie de créer plusieurs caractères (carrés) sur l'écran qui se déplacent de manière aléatoire. J'ai déjà créé une classe CharMove qui crée un carré et le déplace au hasard sur l'écran. Cependant, j'ai essayé de créer plusieurs instances de cette classe dans un fichier java séparé et une seule instance a été créée. Qu'est-ce qui ne va pas?Impossible de créer plusieurs instances d'une classe en Java
CharMove Classe:
public class CharMove extends JPanel {
public static int x = 250;
public static int y = 250;
public void paint(Graphics g) {
Graphics pane = (Graphics2D) g;
pane.setColor(Color.blue);
pane.fillRect(x, y, 10, 10);
}
public static void movement(int x, int y, JFrame frame) {
CharMove.x = x;
CharMove.y = y;
while (true) {
try {
TimeUnit.SECONDS.sleep(1);
CharMove.x = Getx(CharMove.x,frame);
CharMove.y = Gety(CharMove.y,frame);
frame.repaint();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static int Getx(int a, JFrame frame) {
Random rn = new Random();
int xnum = rn.nextInt(10)-5;
a += xnum;
System.out.println("x:" + a);
return a;
}
public static int Gety(int b, JFrame frame){
Random rn = new Random();
int ynum = rn.nextInt(10)-5;
b += ynum;
System.out.println("y:" + b);
return b;
}
}
World Class
public static void main(String[] args) {
JFrame game = new JFrame();
game.setTitle("Matrix");
game.setSize(500, 500);;
game.getContentPane().setBackground(Color.white);
game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
game.setVisible(true);
CharMove char1 = new CharMove();
CharMove char2 = new CharMove();
game.add(char1);
game.add(char2);
char1.movement(100,100,game);
char2.movement(250,250,game);
}
Où est l'erreur? Quelle est l'attente de production? Qu'est-ce que "ne fonctionne pas"? –
Je suppose que le problème est que vous ne vouliez pas réellement rendre x et y statiques. Supprimer "statique" et il fonctionnera comme vous l'attendez. – Arsen
Le problème est qu'un seul carré s'affiche, donc une seule instance est en cours de création ou deux instances identiques sont en cours de création. La sortie attendue est deux carrés qui se déplacent de manière aléatoire autour de l'écran. – Ninjaman494