public class MainGUI extends Application {
public void start(Stage primaryStage) {
class deck {
public ArrayList <Integer> Deck;
public ArrayList<Integer> shuffleDeck(ArrayList<Integer> Deck) {
int x = 52;
for (int i = 1; i <= x; ++i ) {
Deck.add(i);
}
Collections.shuffle(Deck);
return Deck;
}
public ArrayList<Integer> randomCardsSelector(int x, ArrayList<Integer> Deck){
ArrayList<Integer> selectedCards = new ArrayList<Integer>();
Random rand = new Random();
for(int i = 1; i <= x; ++i) {
int newElement = rand.nextInt(Deck.size());
selectedCards.add(Deck.get(newElement));
Deck.remove(newElement);
}
return selectedCards;
}
}
//Horizontal box containing Label, TextField, Button, Cards drawn
HBox topContainer = new HBox();
topContainer.setSpacing(10);
topContainer.setPadding(new Insets(25,50,25,50));
//This is the label
Label insertNbr = new Label();
insertNbr.setText("Number of cards:");
insertNbr.setPadding(new Insets(5,5,5,5));
//This the TextField
TextField cardNbr = new TextField();
cardNbr.setPadding(new Insets(5,5,5,5));
cardNbr.setPrefWidth(30);
//This is the submit button
Button submitBtn = new Button();
submitBtn.setPadding(new Insets(5,5,5,5));
submitBtn.setText("Submit");
HBox newBox = new HBox();
//This is the fetch button
Button fetchBtn = new Button();
fetchBtn.setPadding(new Insets(5,5,5,5));
fetchBtn.setText("Fetch");
fetchBtn.setDisable(true);
//This is the button to draw a card from the array
Button drawCardBtn = new Button("Get Card");
drawCardBtn.setPadding(new Insets(5,5,5,5));
Button higherBtn = new Button();
higherBtn.setPadding(new Insets(5,5,5,5));
higherBtn.setText("Higher");
Button lowerBtn = new Button();
lowerBtn.setPadding(new Insets(5,5,5,5));
lowerBtn.setText("Lower");
newBox.getChildren().addAll(fetchBtn,drawCardBtn,higherBtn,lowerBtn);
ImageView drawnCard = new ImageView();
//Spacer between left nodes and right nodes
final Pane spacer = new Pane();
HBox.setHgrow(spacer, Priority.ALWAYS);
spacer.setMinSize(10, 1);
//FlowPane to add drawn cards
FlowPane drawnCards = new FlowPane();
drawnCards.setPadding(new Insets(5,5,5,5));
drawnCards.setMaxSize(360, 100);
drawnCards.setStyle("-fx-background-color: #008080");
topContainer.getChildren().addAll(insertNbr,cardNbr,submitBtn,spacer,drawnCards);
/*This is the main pane that will
* hold all of the other panes
* and components
*/
BorderPane mainPane = new BorderPane();
mainPane.setTop(topContainer);
mainPane.setLeft(newBox);
mainPane.setCenter(drawnCard);
Scene scene = new Scene(mainPane, 1000, 700);
primaryStage.setTitle("Card Game");
primaryStage.setResizable(false);
primaryStage.setScene(scene);
primaryStage.show();
deck firstDeck = new deck();
deck secondDeck = new deck();
firstDeck.Deck = firstDeck.shuffleDeck(firstDeck.Deck);
submitBtn.setOnAction(e->{
int number = Integer.parseInt(cardNbr.getText());
secondDeck.Deck = secondDeck.randomCardsSelector(number, firstDeck.Deck);
fetchBtn.setDisable(false);
submitBtn.setDisable(true);
for(int i = 0; i<number; i++) {
int x = secondDeck.Deck.get(i);
String url = new String("bin/"+ x +".png");
File file1 = new File(url);
Image image1 = new Image(file1.toURI().toString());
ImageView imageView = new ImageView(image1);
imageView.setFitHeight(90);
imageView.setFitWidth(90);
drawnCards.getChildren().add(imageView);
}
});
fetchBtn.setOnAction(e->{
fetchBtn.setDisable(true);
ArrayList<Integer> selectedNewCard= new ArrayList<Integer>();
selectedNewCard = firstDeck.randomCardsSelector(1, firstDeck.Deck);
int s = selectedNewCard.get(0);
String url = new String("bin/" + s + ".png");
File file2 = new File(url);
Image img = new Image(file2.toURI().toString());
drawnCard.setImage(img);
drawnCard.setFitHeight(150);
drawnCard.setFitWidth(150);
});
drawCardBtn.setOnAction(e->{
drawCardBtn.setDisable(false);
ArrayList<Integer> oneCard = new ArrayList<Integer>();
oneCard = secondDeck.randomCardsSelector(1,secondDeck.Deck);
int number = oneCard.get(0);
String url = new String("bin/" + number + ".png");
File file3 = new File(url);
Image image = new Image(file3.toURI().toString());
drawnCard.setImage(image);
drawnCards.getChildren().get(0).setStyle("-fx-opacity: 0.5");
});
//drawnCards.getChildren().get(3).setStyle("-fx-opacity: 0.5");
}
public static void main(String[] args) {
launch(args);
}
}
0 Answer(s)