For this problem you are to begin to create a Blackjack program. (Be sure to use
ID: 3657613 • Letter: F
Question
For this problem you are to begin to create a Blackjack program. (Be sure to use java.util.Scanner not swing when necessary). You will need to successfully create and run these 5 classes and each do the following:
1. game:
a. Asks user how many decks of cards you want to use
b. Create player and dealer stacks
2. stack:
a. Creates an array of cards
b. Shuffles the number of decks provided
c. Adds and removes cards to and from a stack
3. player_Hand: (use inheritance from class stack)
a. display cards
4. dealer_Hand:(use inheritance from class stack)
a. display cards
5. shoe:(use inheritance from class stack)
a. display cards
Use the following card class to complete the above classes. (You may alter this class)
public class Card
{
int pip_value;
String suit;
public void set_pip(int _pip_value)
{
pip_value = _pip_value;
}
public void set_suit(String _suit)
{
suit = _suit;
}
public int get_pip()
{
return pip_value;
}
public String get_suit()
{
return suit;
}
public void display()
{
System.out.println(pip_value + suit);
}
}
Explanation / Answer
import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.image.BufferedImage; import java.io.*; import java.util.*; public class BlackJack extends JFrame implements ActionListener{ Random randomCard = new Random(); JFrame frame; //create buttons for hitting, staying and dealing JButton hitMe = new JButton("Hit"); JButton stayMe = new JButton("Stay"); JButton newGame = new JButton("Deal"); //create labels for the sting "Player Hand Value" and the actual hand value JLabel playerHandValueString = new JLabel("Hand Value"); JLabel playerHandValue = new JLabel(); //create a panel for the game and a panel for the buttons JPanel buttonPanel = new JPanel(); JPanel dealerPanel = new JPanel(new GridLayout(1,5)); JPanel playerPanel = new JPanel(new GridLayout(1,5)); //Create a menu to exit the game and see the About info MenuBar menu = new MenuBar(); Menu file = new Menu(); MenuItem exit = new MenuItem(); MenuItem about = new MenuItem(); //create JLabels to attach image of cards to JLabel dealerCard1 = new JLabel(); JLabel dealerCard2 = new JLabel(); JLabel dealerCard3 = new JLabel(); JLabel dealerCard4 = new JLabel(); JLabel dealerCard5 = new JLabel(); JLabel playerCard1 = new JLabel(); JLabel playerCard2 = new JLabel(); JLabel playerCard3 = new JLabel(); JLabel playerCard4 = new JLabel(); JLabel playerCard5 = new JLabel(); private int dealerSum = 0; private int playerSum = 0; private int playerAceFlag = 0; private int dealerAceFlag = 0; private int randomIndex = 0; private int hitMeCount = 0; private boolean keepOnGaming = true; int[] cardValue = new int[52]; private BufferedImage myPicture; private Image[] cards = new Image[53]; void initialDeal(){ setDealerSum(0); setPlayerSum(0); System.out.println("DealerSum is " + getDealerSum()); System.out.println("Playersum is " + getPlayerSum()); System.out.println("HitMe Counter: " + hitMeCount); randomIndex= randomCard.nextInt(52); Icon dealerFirstCard = new ImageIcon(cards[randomIndex]); dealerCard1.setIcon(dealerFirstCard); int dealerCard1Value = cardValue[randomIndex]; System.out.println("Card 1: " + dealerCard1Value); setDealerSum(dealerCard1Value); System.out.println("DealerSum: " + getDealerSum()); if(dealerCard1Value == 11){ dealerAceFlag++; } randomIndex = randomCard.nextInt(52); Icon dealerSecondCard = new ImageIcon(cards[randomIndex]); dealerCard2.setIcon(dealerSecondCard); dealerCard2.setVisible(false); int dealerCard2Value = cardValue[randomIndex]; System.out.println("Card 2: " + dealerCard2Value); setDealerSum(dealerCard2Value); System.out.println("DealerSum: " + getDealerSum()); if(dealerCard2Value == 11){ dealerAceFlag++; } if(dealerAceFlag == 2){ setDealerSum(-10); dealerAceFlag--; } cardIndex++; randomIndex= randomCard.nextInt(52); Icon playerFirstCard = new ImageIcon(cards[randomIndex]); playerCard1.setIcon(playerFirstCard); int playerCard1Value = cardValue[randomIndex]; setPlayerSum(playerCard1Value); if(playerCard1Value == 11){ playerAceFlag++; } cardIndex++; randomIndex= randomCard.nextInt(52); Icon playerSecondCard = new ImageIcon(cards[randomIndex]); playerCard2.setIcon(playerSecondCard); int playerCard2Value = cardValue[randomIndex]; setPlayerSum(playerCard2Value); if(playerCard2Value == 11){ playerAceFlag++; } if(playerAceFlag == 2){ setPlayerSum(-10); playerAceFlag--; } if(getPlayerSum() == 21 && getDealerSum() == 21){ playerHandValue.setText("PUSH"); endGame(); } else if(getPlayerSum() == 21 && getDealerSum() != 21){ playerHandValue.setText("Blackjack"); endGame(); } else if(getDealerSum() == 21 && getPlayerSum() != 21){ playerHandValue.setText("Dealer Blackjack"); dealerCard2.setVisible(true); endGame(); } else { playerHandValue.setText(Integer.toString(getPlayerSum())); } hitMe.addActionListener(this); stayMe.addActionListener(this); newGame.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSource() == hitMe){ hitMeCount++; if(hitMeCount == 1){ dealPlayerCard3(); }else if(hitMeCount == 2){ dealPlayerCard4(); }else if(hitMeCount == 3){ dealPlayerCard5(); } } if(e.getSource() == stayMe){ stayMe(); } if(e.getSource() == newGame){ dealMe(); } } public void setDealerSum(int n){ if(n == 0){ dealerSum = n; }else{ dealerSum = dealerSum + n; } } public int getDealerSum(){ return dealerSum; } public void setPlayerSum(int n){ if(n == 0){ playerSum = n; }else{ playerSum = playerSum + n; } } public int getPlayerSum(){ return playerSum; } public void stayMe(){ if(keepOnGaming == false){ playerHandValue.setText("Hit New Game"); endGame(); } dealerCard2.setVisible(true); System.out.println("DealerSum: " + getDealerSum()); if(getDealerSum() > 21 && dealerAceFlag > 0){ setDealerSum(-10); dealerAceFlag--; } if(getDealerSum() > 21){ playerHandValue.setText("Winner! Dealer Bust!"); endGame(); } else if(getDealerSum() == 21){ playerHandValue.setText("Loser! Dealer 21!"); endGame(); }else if(getDealerSum() < 21){ if(getDealerSum() >= 17){ if(getDealerSum() > getPlayerSum()){ playerHandValue.setText("Loser!"); endGame(); }else if(getPlayerSum() > getDealerSum()){ playerHandValue.setText("Winner!"); endGame(); }else if(getPlayerSum() == getDealerSum()){ playerHandValue.setText("Push!"); endGame(); } }else if(getDealerSum() < 17){ randomIndex= randomCard.nextInt(52); Icon dealerThirdCard = new ImageIcon(cards[randomIndex]); dealerCard3.setIcon(dealerThirdCard); dealerCard3.setVisible(true); int dealerCard3Value = cardValue[randomIndex]; setDealerSum(dealerCard3Value); System.out.println("DealerSum: " + getDealerSum()); if(dealerCard3Value == 11){ dealerAceFlag++; } if(getDealerSum() > 21 && dealerAceFlag > 0){ setDealerSum(-10); dealerAceFlag--; } if(getDealerSum() > 21){ playerHandValue.setText("Winner! Dealer Bust!"); endGame(); }else if(getDealerSum() == 21){ if(getPlayerSum() != 21){ playerHandValue.setText("Loser!"); endGame(); }else if(getPlayerSum() == 21){ playerHandValue.setText("Push!"); endGame(); } }else if(getDealerSum() < 21){ if(getDealerSum() >= 17){ if(getDealerSum() > getPlayerSum()){ playerHandValue.setText("Loser!"); endGame(); }else if(getPlayerSum() > getDealerSum()){ playerHandValue.setText("Winner!"); endGame(); }else if(getPlayerSum() == getDealerSum()){ playerHandValue.setText("Push!"); endGame(); } }else if(getDealerSum() < 17){ randomIndex= randomCard.nextInt(52); Icon dealerFourthCard = new ImageIcon(cards[randomIndex]); dealerCard4.setIcon(dealerFourthCard); int dealerCard4Value = cardValue[randomIndex]; setDealerSum(dealerCard4Value); dealerCard4.setVisible(true); System.out.println("DealerSum: " + getDealerSum()); if(dealerCard4Value == 11){ dealerAceFlag++; } if(getDealerSum() > 21 && dealerAceFlag > 0){ setDealerSum(-10); dealerAceFlag--; } if(getDealerSum() > 21){ playerHandValue.setText("Winner! Dealer Bust!"); endGame(); }else if(getDealerSum() == 21){ if(getPlayerSum() != 21){ playerHandValue.setText("Loser!"); endGame(); }else if(getPlayerSum() == 21){ playerHandValue.setText("Push!"); endGame(); } }else if(getDealerSum() < 21){ if(getDealerSum() >= 17){ if(getDealerSum() > getPlayerSum()){ playerHandValue.setText("Loser!"); endGame(); }else if(getPlayerSum() > getDealerSum()){ playerHandValue.setText("Winner!"); endGame(); }else if(getPlayerSum() == getDealerSum()){ playerHandValue.setText("Push!"); endGame(); } }else if(getDealerSum() < 17){ randomIndex= randomCard.nextInt(52); Icon dealerFifthCard = new ImageIcon(cards[randomIndex]); dealerCard5.setIcon(dealerFifthCard); int dealerCard5Value = cardValue[randomIndex]; setDealerSum(dealerCard5Value); dealerCard5.setVisible(true); System.out.println("DealerSum: " + getDealerSum()); if(dealerCard5Value == 11){ dealerAceFlag++; } if(getDealerSum() > 21 && dealerAceFlag > 0){ setDealerSum(-10); dealerAceFlag--; } if(getDealerSum() > 21){ playerHandValue.setText("Winner! Dealer Bust!"); endGame(); }else if(getDealerSum() 0 && getPlayerSum() > 21){ setPlayerSum(-10); playerAceFlag--; } if(getPlayerSum() > 21){ System.out.println("PlayerScore: " + getPlayerSum()); playerHandValue.setText("BUSTED"); dealerCard2.setVisible(true); endGame(); } else if(getPlayerSum() == 21){ stayMe(); } else if(getPlayerSum() < 21){ playerHandValue.setText(Integer.toString(getPlayerSum())); } } public void dealPlayerCard4(){ int randomIndex= randomCard.nextInt(52); Icon playerFourthCard = new ImageIcon(cards[randomIndex]); playerCard4.setIcon(playerFourthCard); playerCard4.setVisible(true); int playerCard4Value = cardValue[randomIndex]; setPlayerSum(playerCard4Value); if (playerCard4Value == 11){ playerAceFlag++; } if(playerAceFlag > 0 && getPlayerSum() > 21){ setPlayerSum(-10); playerAceFlag--; } if(getPlayerSum() > 21){ playerHandValue.setText("BUSTED"); dealerCard2.setVisible(true); endGame(); } else if(getPlayerSum() == 21){ playerHandValue.setText(Integer.toString(getPlayerSum())); stayMe(); }else if(getPlayerSum() < 21){ playerHandValue.setText(Integer.toString(getPlayerSum())); } } public void dealPlayerCard5(){ int randomIndex= randomCard.nextInt(52); Icon playerFifthCard = new ImageIcon(cards[randomIndex]); playerCard5.setIcon(playerFifthCard); playerCard5.setVisible(true); int playerCard5Value = cardValue[randomIndex]; setPlayerSum(playerCard5Value); if(getPlayerSum() > 21){ playerHandValue.setText("BUSTED"); dealerCard2.setVisible(true); endGame(); } else if(getPlayerSum()Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.