Bah une List qui contiendra des Objets Rectangle...
Code:
1
2
3 Lis l = new ArrayList(). l.add(new Rectangle(...));
Version imprimable
Bah une List qui contiendra des Objets Rectangle...
Code:
1
2
3 Lis l = new ArrayList(). l.add(new Rectangle(...));
Ouais :P
ben au faite je me suis mal exprimé :
Alors voila le souci :
1) Je crée une liste de pièce de domino :
2) Je distribue des dominos à chaque joueur( ce sera sa main)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 list pièces = new List(); /*je crée mes pièces de domino*/ int j; for (int i = 0; i < 7; i++) { j = i; while (j < 7) { int k=i*10+j; pieces.add(k); j++; } } /*fin de la liste*/
jusque la pas de souci.Code:
1
2
3
4
5
6
7
8
9
10
11
12 public static void bat() { //battage Collections.shuffle(pieces); } /*cette fonction sera dans la class joueur*/ void distribue(Joueur joueur, int nb) { //nb = 7, pour 7 pièces par joueur. for (int i = 0; i < nb; i++) { joueur.main.add(pieces.elementAt(0)); //getPiece(); } }
Maintenant je veux créer une liste de rectangle(dessin de domino)
j'ai crée une class Rectangle5 qui crée les dessin des différentes pièce de domino.Code:HashMap rectangle= new HashMap();
3)affichage
Ais-je la bonne soluce ?Code:
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
26
27
28
29 void paint(Graphics g) { /*ma liste de rectangle*/ int j; for (int i = 0; i < 7; i++) { j = i; while (j < 7) { int id=i*10+j; Rectangle5 rect=new Rectangle5(0,0,25,50,i,j) rectangle.put((int)id, rect); j++; } } /*localisation des pièces de domino*/ posx=30; posy=30; /*afficahge*/ for(i=0;i<main.size();i++) { int k=main.get(i); // la pièce "i" de la main du joueur Rectangle5 rec= rectangle.get(k); rec.setPosition(posx,posy); rect.dessiner(g); posx=posx+25; } }
Euh sinon tu mets une méthode draw(Graphics g) dans ta classe Domino qui permet de dessiner le domino sur des graphics et basta...
Hum, mais ne voulait-il pas que ce soit le tapis qui dessine l'ensemble plutot que les domino au depart precedement ?
Quelques part ca peut etre effectivement interessant de deleguer le rendu des domino a une/plusieurs autre(s) classe(s) si tu comptes, entre autre, laisser a l'utilisateur le choix de faire varier l'apparence des dominos mais pour ce genre de choses mieux aurait-il peut-etre fallu reflechir a/planifier l'architecture du programme avant de commencer a coder.
Note : a priori, ca devrait compiler juste en enlevant les annotation comme le dit Sinok.
bien suivi :) je voudrais que ce soit la class tapis qui fasse le rendu graph
Voila encore une fois mon problème du départ reste entier. Mon souci est de pourvoir des drag sur une collection. Quand je crée un domino un par un j'arrive à faire un drag. Mais quand ce crée une collection de domino oups ça marche plus
Et pourtant ça semble être bon et simple mais ça marche pasCode:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 public class Prog extends Applet implements WindowListener,MouseMotionListener,MouseListener { Rectangle5 rect1,rect; Domino jeu= new Domino(); ArrayList l = new ArrayList(); boolean clicRect1; private static int x1,y1,n1; Piece p; Joueur joueur[]=new Joueur[4]; public void init() { joueur[0]= new Joueur(); jeu.ini(); //crée une liste de domino jeu.bat(); //**************************************** //distribue 7 dominos à chacun des joueurs //**************************************** n1=0; while (n1<4) { jeu.distribue(joueur[n1], 7); n1++; } /**************FIN DISTRIBUTION*************/ addMouseListener(this); addMouseMotionListener(this); clicRect1 = false; } public void paint(Graphics g) { int posx = 15; int posy = 30; int nb = (int)joueur[0].numPieces(); for (int v = 0; v < nb; v++) { Piece ledomino =(Piece)joueur[0].main.elementAt(v); int a=ledomino.geta(); int b=ledomino.getb(); rect1=new Rectangle5(posx,posy,25,50,a,b); l.add(rect1); rect1.dessiner(g); posx = posx+28; } } public void mouseClicked(MouseEvent e){ x1 = e.getX(); y1 = e.getY(); System.out.println(x1+" et "+y1); } public void mousePressed(MouseEvent e){ int x,y; x = e.getX(); y = e.getY(); for(int i=0;i<l.size();i++) rect= (Rectangle5)l.get(i); if (rect.estDans(x,y)) (clicRect1=true); } public void mouseDragged(MouseEvent e){ int x,y; x = e.getX(); y = e.getY(); if (clicRect1==true) { rect.setPosition(x,y); repaint(); } } public void mouseReleased(MouseEvent e){ if (clicRect1) clicRect1=false; } //Listener //WindowsAdapter public static void main(String[] args) { Prog applet = new Prog(); Frame frame = new Frame("Applet"); frame.addWindowListener(applet); frame.add("Center", applet); frame.setSize(350, 250); frame.show(); applet.init(); applet.start(); } }
J'ai fais que ma class Rectangle extends de JComponent puis j'ai modifié mon code :
Code:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 { //**************************************** //distribue 7 dominos à chacun des joueurs //**************************************** n1=0; while (n1<4) { jeu.distribue(joueur[n1], 7); //joueur[n1].recoit(); n1++; } // rect.dessiner(g); int posx = 15; int posy = 30; int nb = (int)joueur[0].numPieces(); for (int v = 0; v < nb; v++) { Piece ledomino =(Piece)joueur[0].main.elementAt(v); int a=ledomino.geta(); int b=ledomino.getb(); rect1=new Rectangle5(posx,posy,25,50,a,b); l.add(rect1); add(rect1); posx = posx+28; } addMouseListener(this); addMouseMotionListener(this); clicRect1 = false; clicRect2 = false; } public void paint(Graphics g) { // rect.dessiner(g); for (int v = 0; v < l.size(); v++) { rect1=(Rectangle5)l.get(v); rect1.dessiner(g); } } }
ça marche mais je trouve pas le code propre
Pas de critque constructive sur ce bout de code ?:roll:
Bon! sinon quelqu'un aurait une idée sur la manière dont pourrait faire pour que mes dominos lors d'un déplacement avec un drag puissent aller quand dans une zone précise.
c.a.d lorsque le premier joueur pose son domino le second pourra déposer son domino au dessus ou dessous du domino précedent, ansi de suite