回答編集履歴
1
コードを少し小さく
answer
CHANGED
@@ -125,10 +125,10 @@
|
|
125
125
|
cardList.add(new Trump(i/2+1));
|
126
126
|
}
|
127
127
|
|
128
|
-
|
128
|
+
setCards();
|
129
129
|
}
|
130
130
|
|
131
|
-
void
|
131
|
+
void setCards() {
|
132
132
|
//シャッフル
|
133
133
|
Collections.shuffle(cardList);
|
134
134
|
|
@@ -184,6 +184,7 @@
|
|
184
184
|
return;
|
185
185
|
}
|
186
186
|
|
187
|
+
removeMouseListener();
|
187
188
|
Trump cardOne = (Trump)labelOne.getClientProperty(TRUMP_PROPERTY);
|
188
189
|
if (cardTwo.getNumber() == cardOne.getNumber()) { //2枚目と1枚目が同じカード
|
189
190
|
if (allOpen()) { //ゲームクリア?
|
@@ -198,23 +199,30 @@
|
|
198
199
|
}
|
199
200
|
}
|
200
201
|
|
201
|
-
//1秒後に One,Two それぞれを非表示状態にし再表示する
|
202
|
-
class
|
202
|
+
abstract class DelayWorker extends SwingWorker<Object,Object> {
|
203
|
-
private
|
203
|
+
private long delay;
|
204
|
-
|
204
|
+
DelayWorker(long delay) {
|
205
|
-
this.
|
205
|
+
this.delay = delay;
|
206
|
-
this.labelTwo = labelTwo;
|
207
206
|
}
|
208
207
|
@Override
|
209
208
|
public Object doInBackground() {
|
210
|
-
removeMouseListener();
|
211
209
|
try {
|
212
|
-
Thread.sleep(
|
210
|
+
Thread.sleep(delay);
|
213
211
|
} catch (InterruptedException e) {
|
214
212
|
e.printStackTrace();
|
215
213
|
}
|
216
214
|
return null;
|
217
215
|
}
|
216
|
+
}
|
217
|
+
|
218
|
+
//1秒後に One,Two それぞれを非表示状態にし再表示する
|
219
|
+
class InvisibleWorker extends DelayWorker {
|
220
|
+
private JLabel labelOne, labelTwo;
|
221
|
+
InvisibleWorker(JLabel labelOne, JLabel labelTwo) {
|
222
|
+
super(1000);
|
223
|
+
this.labelOne = labelOne;
|
224
|
+
this.labelTwo = labelTwo;
|
225
|
+
}
|
218
226
|
@Override
|
219
227
|
protected void done() {
|
220
228
|
labelOne.setVisible(false);
|
@@ -223,48 +231,31 @@
|
|
223
231
|
setMouseListener();
|
224
232
|
}
|
225
233
|
}
|
226
|
-
|
227
234
|
//1秒後にリスタート状態にする
|
228
|
-
class RestartWorker extends
|
235
|
+
class RestartWorker extends DelayWorker {
|
229
|
-
@Override
|
230
|
-
public Object doInBackground() {
|
231
|
-
|
236
|
+
RestartWorker() {
|
232
|
-
try {
|
233
|
-
|
237
|
+
super(1000);
|
234
|
-
} catch (InterruptedException e) {
|
235
|
-
e.printStackTrace();
|
236
|
-
}
|
237
|
-
return null;
|
238
238
|
}
|
239
239
|
@Override
|
240
240
|
protected void done() {
|
241
|
-
|
241
|
+
setCards();
|
242
242
|
repaint();
|
243
243
|
setMouseListener();
|
244
244
|
}
|
245
245
|
}
|
246
246
|
|
247
247
|
//1秒後に One,Two それぞれを close 状態にし再表示する
|
248
|
-
class RedoWorker extends
|
248
|
+
class RedoWorker extends DelayWorker {
|
249
249
|
private JLabel labelOne, labelTwo;
|
250
250
|
private Trump cardOne, cardTwo;
|
251
251
|
RedoWorker(JLabel labelOne, Trump cardOne, JLabel labelTwo, Trump cardTwo) {
|
252
|
+
super(1000);
|
252
253
|
this.labelOne = labelOne;
|
253
254
|
this.cardOne = cardOne;
|
254
255
|
this.labelTwo = labelTwo;
|
255
256
|
this.cardTwo = cardTwo;
|
256
257
|
}
|
257
258
|
@Override
|
258
|
-
public Object doInBackground() {
|
259
|
-
removeMouseListener();
|
260
|
-
try {
|
261
|
-
Thread.sleep(1000);
|
262
|
-
} catch (InterruptedException e) {
|
263
|
-
e.printStackTrace();
|
264
|
-
}
|
265
|
-
return null;
|
266
|
-
}
|
267
|
-
@Override
|
268
259
|
protected void done() {
|
269
260
|
cardOne.close();
|
270
261
|
labelOne.setIcon(cardOne.getIcon());
|