forked from HarryDulaney/intro-to-java-programming
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathExercise15_01.java
120 lines (93 loc) · 3.35 KB
/
Exercise15_01.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
package ch_15;
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
/**
* *15.1 (Pick four cards) Write a program that lets the user click the Refresh button to
* display four cards from a deck of 52 cards, as shown in Figure 15.24a. (See the
* hint in Programming Exercise 14.3 on how to obtain four random cards.)
*/
public class Exercise15_01 extends Application {
String[] cards;
int[] picked = new int[4];
int pick = 0;
private void setCards() {
cards = new String[52];
int cardNum = 1;
for (int i = 0; i < cards.length; i++) {
String path = "resources/cards/" + cardNum + ".png";
cards[i] = path;
cardNum++;
}
}
@Override
public void start(Stage primaryStage) throws Exception {
setCards();
VBox vbox = new VBox();
HBox cardBox = new HBox();
HBox buttonBar = new HBox();
vbox.setFillWidth(true);
Image i1 = new Image(cards[randomCard()]);
Image i2 = new Image(cards[randomCard()]);
Image i3 = new Image(cards[randomCard()]);
Image i4 = new Image(cards[randomCard()]);
ImageView card1 = new ImageView(i1);
card1.setPreserveRatio(true);
card1.setFitHeight(300);
ImageView card2 = new ImageView(i2);
card2.setPreserveRatio(true);
card2.setFitHeight(300);
ImageView card3 = new ImageView(i3);
card3.setPreserveRatio(true);
card3.setFitHeight(300);
ImageView card4 = new ImageView(i4);
card4.setPreserveRatio(true);
card4.setFitHeight(300);
Button refreshButton = new Button("Refresh");
refreshButton.setOnAction(e -> {
refreshCards(cardBox);
});
buttonBar.getChildren().add(refreshButton);
buttonBar.setAlignment(Pos.CENTER);
cardBox.getChildren().addAll(card1, card2, card3, card4);
vbox.getChildren().add(cardBox);
vbox.getChildren().add(buttonBar);
Scene scene = new Scene(vbox);
primaryStage.setScene(scene);
primaryStage.show();
}
private void refreshCards(HBox hBox) {
pick = 0;
Image i1 = new Image(cards[randomCard()]);
Image i2 = new Image(cards[randomCard()]);
Image i3 = new Image(cards[randomCard()]);
Image i4 = new Image(cards[randomCard()]);
ImageView card1 = new ImageView(i1);
card1.setPreserveRatio(true);
card1.setFitHeight(300);
ImageView card2 = new ImageView(i2);
card2.setPreserveRatio(true);
card2.setFitHeight(300);
ImageView card3 = new ImageView(i3);
card3.setPreserveRatio(true);
card3.setFitHeight(300);
ImageView card4 = new ImageView(i4);
card4.setPreserveRatio(true);
card4.setFitHeight(300);
hBox.getChildren().setAll(card1, card2, card3, card4);
}
int randomCard() {
int ran = -1;
do {
ran = (int) (Math.random() * 52);
} while (ran == picked[0] || ran == picked[1] || ran == picked[2] || ran == picked[3]);
picked[pick++] = ran;
return ran;
}
}