JAVA FX BASED POKER TASK
Please show the output also
See apps.game.Cards for starter code representing a deck of playing cards.
5 Card Draw Poker has many rules, but to make it simple to implement we will only use some of these rules. Any student who wants to implement more is welcome, but remember that the following rules must be implemented.
Values for the Cards
The cards with two to nine showing are taken at face value
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseButton;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import java.util.Random;
public class Main extends Application {
public static final Random RANDOM = new Random();
public static Label dealerLabel;
public static Label playerLabel;
public static ImageView[] dealerCards;
public static ImageView[] playerCards;
public static int[] dealerPoints;
public static int[] playerPoints;
public static int[] cards;
public static void dealCards() {
cards = new int[52];
for (int i = 0; i < dealerCards.length; i++) {
int card = dealCard();
playerCards[i].setImage(new Image(card + ".png"));
playerCards[i].setVisible(true);
int faceValue = card % 13;
playerPoints[i] = faceValue == 0 ? 11 : faceValue < 9 ? faceValue : 10;
card = dealCard();
faceValue = card % 13;
dealerPoints[i] = faceValue == 0 ? 11 : faceValue < 9 ? faceValue : 10;
if (i < dealerCards.length - 1) {
dealerCards[i].setImage(new Image(card + ".png"));
}
dealerCards[i].setVisible(true);
}
}
public static int dealCard() {
while (true) {
int card = RANDOM.nextInt(52);
if (cards[card] == 0) {
cards[card]++;
return card;
}
}
}
public static void setDefault() {
playerPoints = new int[2];
dealerPoints = new int[2];
playerLabel.setText("Player hand");
dealerLabel.setText("Dealer hand");
for (int i = 0; i < playerCards.length; i++) {
playerCards[i].setVisible(false);
dealerCards[i].setVisible(false);
}
}
public static int total(int[] values) {
int total = 0;
for (int value : values) {
total += value;
}
return total;
}
@Override
public void start(Stage primaryStage) throws Exception {
dealerLabel = new Label("Dealer hand");
playerLabel = new Label("Player hand");
playerCards = new ImageView[2];
dealerCards = new ImageView[2];
for (int i = 0; i < playerCards.length; i++) {
playerCards[i] = new ImageView(new Image("card.png"));
playerCards[i].setVisible(false);
dealerCards[i] = new ImageView(new Image("card.png"));
dealerCards[i].setVisible(false);
}
TextField bet = new TextField();
bet.setPromptText("Enter your bet");
bet.setMaxWidth(100);
Button playButton = new Button("Play");
playButton.setOnMouseReleased((MouseEvent mouseEvent) -> {
if (mouseEvent.getButton() == MouseButton.PRIMARY) {
int betValue = -1;
try {
betValue = Integer.parseInt(bet.getText());
if (betValue > 0) {
setDefault();
dealCards();
}
} catch (Exception e) {
e.printStackTrace();
}
if (betValue == -1) {
primaryStage.setTitle("Player lose");
} else {
int playerTotal = total(playerPoints);
int dealerTotal = total(dealerPoints);
playerLabel.setText("Player hand(" + playerTotal + ")");
dealerLabel.setText("Dealer hand(" + dealerTotal + ")");
if (playerTotal == 21) {
primaryStage.setTitle("Player win");
} else {
primaryStage.setTitle("Player lose");
}
}
}
});
HBox dealerHBox = new HBox(10, dealerCards);
dealerHBox.setAlignment(Pos.CENTER);
HBox playerHBox = new HBox(10, playerCards);
playerHBox.setAlignment(Pos.CENTER);
VBox vBox = new VBox(10, dealerLabel, dealerHBox, playerLabel, playerHBox, bet, playButton);
vBox.setAlignment(Pos.CENTER);
primaryStage.setScene(new Scene(new StackPane(vBox), 800, 600));
primaryStage.sizeToScene();
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Comments
Leave a comment