-
Notifications
You must be signed in to change notification settings - Fork 3
/
Cell.java
142 lines (126 loc) · 3.12 KB
/
Cell.java
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/**
* Cette classe <code>Cell</code> s'occupe de la gestion d'une cellule
*
* @version 0.1
*/
import java.awt.Color;
public class Cell extends javax.swing.JLabel
{
/**
* Constante pour la couleur blanche par défaut de l'application.
*/
private static final Color WHITE = new Color(255, 255, 255, 180);
/**
* Composante indiquant la valeur d'une cellule (tout où un tapis a été posé)
* (-1 indique que la cellule est libre).
*/
private static boolean bool;
/**
* La couleur de fond de la cellule.
*/
private Color tmp;
/**
* La grille qui contient les cellules.
*/
private Grid grid;
/**
* La valeur de la <code>Cell</code>.
*/
private int value;
/**
* La position x de la <code>Cell</code>.
*/
private int x;
/**
* La position y de la <code>Cell</code>.
*/
private int y;
/**
* Un listener <code>MouseAdapter</code> pour sensibiliser cette <code>Cell</code> au clic.
*/
private java.awt.event.MouseAdapter carpetListener = new java.awt.event.MouseAdapter()
{
@Override
public void mouseClicked(java.awt.event.MouseEvent e)
{
if (!bool)
grid.clean(x, y);
else
grid.clean2(x, y);
}
};
/**
* Constructeur <code>Cell</code>
*
* @param val la valeur d'une cellule
*/
public Cell(Grid g, int val, int x, int y)
{
super();
this.grid = g;
this.value = val;
this.bool = false;
this.x = x;
this.y = y;
this.tmp = WHITE;
this.setOpaque(true);
this.setBackground(WHITE);
}
/**
* Renvoie la valeur d'une cellule.
*
* @return la valeur d'une cellule (-1 ou plus)
*/
public int getValue()
{
return this.value;
}
/**
* Modifie la valeur d'une cellule.
*
* @param val la valeur de la cellule à modifier
*/
public void setValue(int val)
{
this.value = val;
}
/**
* Applique un effet de surbrillance sur la cellule.
*
* @param b change la varuable bool de cette cellule
*/
public void setHighlight(boolean b)
{
this.bool = b;
if (this.getMouseListeners().length == 0)
{
this.tmp = this.getBackground();
this.addMouseListener(this.carpetListener);
this.setBackground(new Color(this.tmp.getRGB()));
}
}
/**
* Retire l'effet de surbrillance de la cellule.
*/
public void removeHighlight()
{
this.setBackground(this.tmp);
this.grid.repaint(this.grid.getRectangle(this.x, this.y));
this.removeMouseListener(this.carpetListener);
}
/**
* Change la couleur de fond de la cellule.
*
* @param c la nouvelle couleur de fond
*/
public void setColor(Color c)
{
this.tmp = new Color(c.getRed(), c.getGreen(), c.getBlue(), 180);
this.setText(this.value+"");
}
@Override
public String toString()
{
return "[x : "+this.x+"] [y : "+this.y+"] [value : "+this.value+"]";
}
}