Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Using the code below how would I create scenes in JAVAFX to play the two-game ap

ID: 3919591 • Letter: U

Question

Using the code below how would I create scenes in JAVAFX to play the two-game applications. The user should have the slection to choose to play blackjack game or the snake game. How would I get both of the games below to be in one program and then let the user select which to play and go exit if necessary?

Black jack javafx-first program

package application;

import java.util.Arrays;

import java.util.ArrayList;

import javafx.collections.FXCollections;

import javafx.collections.ObservableList;

import javafx.application.Application;

import javafx.geometry.Pos;

import javafx.geometry.Insets;

import javafx.scene.Scene;

import javafx.scene.layout.HBox;

import javafx.scene.layout.GridPane;

import javafx.scene.control.Label;

import javafx.scene.control.Labeled;

import javafx.scene.control.Button;

import javafx.scene.control.TextField;

import javafx.scene.image.Image;

import javafx.scene.image.ImageView;

import javafx.stage.Stage;

import javafx.event.ActionEvent;

import javafx.event.EventHandler;

public class Main extends Application {

public String btHitY;

public int NumberPlayerCards;

public int NumberDealerCards;

public int NUMBER_OF_CARDS;

public int PlayerCards[];

public int DealerCards[];

public Image imagesP[];

public Image imagesD[];

public int deck[];

public String URLBase;

public GridPane pane;

public Main() {

this.btHitY = " ";

this.btHitY = new String();

}

@Override // Override the start method in the Application class

public void start(Stage primaryStage) {

//Create array deck, suit string, and rank string

deck = new int[52];

String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};

String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};

int NUMBER_OF_CARDS = 4;

//Initialize the cards

for (int i = 0; i < deck.length; i++)

deck[i] = i;

//Shuffle the cards

for (int i = 0; i < deck.length; i++) {

//Generate an index randomly

int index = (int)(Math.random() * deck.length);

int temp = deck[i];

deck[i] = deck[index];

deck[index] = temp;

}

int NumberPlayerCards = 2;

int NumberDealerCards = 2;

int[] PlayerCards = new int[50];

int[] DealerCards = new int[50];

//Display the first cards

for (int i = 0; i < 8; i++) {

String suit = suits[deck[i] / 13];

String rank = ranks[deck[i] % 13];

System.out.println("Card number " + deck[i] + ": " + rank + " of " + suit);

}

for (int i = 0; i < NumberPlayerCards; i++)

PlayerCards[i] = deck[i * 2];

for (int i = 0; i < NumberDealerCards; i++)

DealerCards[i] = deck[i * 2 + 1];

// Create a pane to hold the image views

GridPane pane = new GridPane();

pane.setAlignment(Pos.CENTER);

pane.setPadding(new Insets(5, 5, 5, 5));

pane.setHgap(5);

pane.setVgap(5);

Image[] imagesP = new Image[50];

Image[] imagesD = new Image[50];

for (int i = 0; i < NumberPlayerCards; i++) {

int cardForPrint = PlayerCards[i] + 1;

System.out.println(URLBase + cardForPrint + ".png");

imagesP[i] = new Image(URLBase + cardForPrint + ".png");

}

for (int i = 0; i < NumberDealerCards; i++) {

int cardForPrint = DealerCards[i] + 1;

System.out.println(URLBase + cardForPrint + ".png");

imagesD[i] = new Image(URLBase + cardForPrint + ".png");

}

//rotate flag image to cover dealer card

Image flag = new Image("http://www.cs.armstrong.edu/liang/common/image/us.gif");

ImageView imageFlag = new ImageView(flag);

imageFlag.setRotate(90);

imageFlag.setFitHeight(75);

imageFlag.setFitWidth(95);

pane.add(new Label("Player Cards"), 0, 0);

pane.add(new ImageView(imagesP[0]), 1, 0);

pane.add((imageFlag), 1, 1);

pane.add(new Label("Dealer Cards"), 0, 1);

pane.add(new ImageView(imagesP[1]), 2, 0);

pane.add(new ImageView(imagesD[1]), 2, 1);  

Button btHit = new Button("Hit");

Button btStay = new Button("Stay");

pane.add(btHit, 1, 2);

pane.add(btStay, 2, 2);

// Create a scene and place it in the stage

Scene scene = new Scene(pane, 1200, 700);

primaryStage.setTitle("Black Jack"); // Set the stage title

primaryStage.setScene(scene); // Place the scene in the stage

primaryStage.show(); // Display the stage

HitHandlerClass handlerHit = new HitHandlerClass();

btHitY = " ";

btHit.setOnAction(handlerHit);

/* if (btHitY.equals("Hit")); {

NumberPlayerCards = NumberPlayerCards + 1;

NUMBER_OF_CARDS = NUMBER_OF_CARDS + 1;

PlayerCards[NumberPlayerCards - 1] = deck[NUMBER_OF_CARDS - 1];

for (int j = 0; j < NumberPlayerCards; j++){

System.out.println(PlayerCards[j]);

}

System.out.println(NumberPlayerCards);

int CardForPrint2 = PlayerCards[NumberPlayerCards - 1] + 1;

imagesP[NumberPlayerCards - 1] = new Image(URLBase + CardForPrint2 + ".png");   

pane.add(new ImageView(imagesP[NumberPlayerCards - 1]), NumberPlayerCards, 0);

btHitY = " ";

primaryStage.show();

} */

}

/**

* The main method is only needed for the IDE with limited

* JavaFX support. Not needed for running from the command line.

* @param args

*/

public static void main(String[] args) {

launch(args);

}

class HitHandlerClass implements EventHandler<ActionEvent> {

@Override

public void handle(ActionEvent e) {

NumberPlayerCards = NumberPlayerCards + 1;

NUMBER_OF_CARDS = NUMBER_OF_CARDS + 1;

PlayerCards[NumberPlayerCards - 1] = deck[NUMBER_OF_CARDS - 1];

for (int j = 0; j < NumberPlayerCards; j++){

System.out.println(PlayerCards[j]);

}

System.out.println(NumberPlayerCards);

int CardForPrint2 = PlayerCards[NumberPlayerCards - 1] + 1;

imagesP[NumberPlayerCards - 1] = new Image(URLBase + CardForPrint2 + ".png");   

pane.add(new ImageView(imagesP[NumberPlayerCards - 1]), NumberPlayerCards, 0);

btHitY = " ";

}

}

}

Next game

similar to code above, another game like above that uses JAVA fx and images and such

Explanation / Answer

You can use java.util.TimerTask is an abstract class that implements Runnable interface and we need to extend this class to create our own TimerTask that can be scheduled using java Timer class. Java Timer class is thread safe and multiple threads can share a single Timer object without need for external synchronization. Timer class uses java.util.TaskQueue to add tasks at given regular interval and at any time there can be only one thread running the TimerTask, for example if you are creating a Timer to run every 10 seconds but single thread execution takes 20 seconds, then Timer object will keep adding tasks to the queue and as soon as one thread is finished, it will notify the queue and another thread will start executing.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at drjack9650@gmail.com
Chat Now And Get Quote