Bonjour.
Etudiant, j'ai un projet à faire, un jeu en l'occurrence.
Il y a une grille (comme un damier) de boutons, et ça fonctionne.
Etape suivante: je souhaiterais pouvoir réinitialiser le jeu avec un nombre de cases différentes (choix de difficulté), sans avoir à arrêter et relancer le programme (par clic sur un bouton autre, par ex).
C'est du MVC, et intercepter les clics n'est pas un pb (les écouteurs fonctionnent).
Mais comment redimensionner la grille du jeu? La redessiner avec un autre nombre de cases, une fois qu'elle a déjà été dessinée (VueJeu, et this.pack du test pour redimensionner la fenêtre)? Comment modifier quelque chose créé par un new:
- this.grille = new...
- GridLayout jeu=new...
Le tout dans la seule fenêtre de départ, sans engendrer une seconde fenêtre bien sûr.
Bien sûr aussi cette opération réinitialise complètement le jeu (rien à conserver de la partie précédente).
Merci.
Ci-dessous quelques extraits de ce qui pourrait vous être utile, sur ce qui est fait, et comment c'est fait.
-----------------
Constructeur du test:
Constructeur du Jeu:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 super ("LeJeu"); LeJeu dem=new LeJeu(this); VueJeu vj=new VueJeu(dem); this.add(vj,BorderLayout.CENTER); ... this.pack(); this.setVisible(true);
Constructeur de la VueJeu:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 //déclaration préalable hors du constructeur: private char[][] grille; this.nbx=9; //x=nb cases horizontales this.nby=9; //y=nb cases verticales //(il y a un get et un set pour modifier nbx et nby) this.grille = new char [this.nbx][this.nby]; //tableau en mémoire correspondant au jeu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 super() ; this.dem=d; //d est le jeu passé en paramètre GridLayout jeu=new GridLayout (this.dem.getnby(), this.dem.getnbx()); this.setLayout(jeu); EcouteurCase eCase=new EcouteurCase(this.dem); for (int y=0; y<this.dem.getnby(); y++) { for (int x=0; x<this.dem.getnbx(); x++) { JButton jb= (new JButton (" ")); jb.setMargin( new Insets(3,3,3,3)); jb.setBorder( BorderFactory.createRaisedBevelBorder()); jb.setContentAreaFilled(false); jb.setOpaque(true); //pour pouvoir changer ensuite couleur du bouton, sinon met couleur de bordure seulement jb.setName(x+","+y); //nom du bouton = ses coordonnées, par ex "3,4" this.add (jb); jb.addMouseListener(eCase); } } dem.ajoutVue(this);
Partager