Hi all. I'm Looking for some assistance on a 5 card stud poker program. So far I can shuffle and deal, now I am trying to evaluate the hands each player gets. I was shown how to do this, but forgot. I'm a total beginner at programming. First, I am not sure if I am filling the arrays hand1 and hand2 correctly, can someone help me confirm that they are filled. Second, I've been trying to get one of the text fields to simply show the face and suit of the card in position tthree of hand one, I can't get it to show the
string. Last, I am pretty sure i can figure out the algorithms for my method handEval, yet once again need to check and make sure the array is filled.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class poker2 extends JFrame {
private Card deck[]; //this is an array of objects of Card type. See the Card class at the end
private int currentCard; //this keeps track of the number of
cards dealt
private JButton dealButton, shuffleButton, testButtton; //GUI stuff, the two buttons
private JTextField displayField; //GUI stuff, the textfield that displays the card dealt
private JLabel statusLabel; //GUI stuff, Displays the number of
cards dealt
private JLabel cardback, card1, card2,card3,card4,card5,card6,card7,card8,card9,card10;//GUI stuff The labels that displays the cards
private JTextField hand1TF, hand2TF;
Card dealt; //this is an object of Card type for a dealt card
Icon card = new ImageIcon(".\\cards\\back2.GIF"); //this is the cardback graphics file
Card hand1[];
Card hand2[];
int handNums[];
int
test;
// set up deck of cards and GUI
public poker2()
{
super( "5-Card Stud" ); //Title
String faces[] = { "Ace", "Deuce", "Three", "Four", "Five", "Six",
"Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King" };
String suits[] = { "Hearts", "Diamonds", "Clubs", "Spades" };
deck = new Card[ 52 ];
hand1 = new Card[5];
hand2 = new Card[5];
handNums = new int[13]; //creates array to hold 52 cards
currentCard = -1;
test = 4;
// populate deck with Card objects
for ( int count = 0; count < deck.length; count++ )
deck[ count ] = new Card( faces[ count % 13 ],suits[ count / 13 ] );
// set up GUI and event handling
Container container = getContentPane();
container.setLayout( new FlowLayout() );
//Diplay the cardbacks
card1 = new JLabel();
card1.setIcon(card);
container.add( card1 );
card3 = new JLabel();
card3.setIcon(card);
container.add( card3 );
card5 = new JLabel();
card5.setIcon(card);
container.add( card5 );
card7 = new JLabel();
card7.setIcon(card);
container.add( card7 );
card9 = new JLabel();
card9.setIcon(card);
container.add( card9 );
hand1TF = new JTextField(32);
hand1TF.setEditable( false );
hand1TF.setText( "Here it Is" );
container.add( hand1TF );
card2 = new JLabel();
card2.setIcon(card);
container.add( card2 );
card4 = new JLabel();
card4.setIcon(card);
container.add( card4 );
card6 = new JLabel();
card6.setIcon(card);
container.add( card6 );
card8 = new JLabel();
card8.setIcon(card);
container.add( card8 );
card10 = new JLabel();
card10.setIcon(card);
container.add( card10 );
hand2TF = new JTextField(32);
hand2TF.setEditable( false );
hand2TF.setText( "Here Theirs Are" );
container.add( hand2TF );
// Initialize the "Deal Button"
dealButton = new JButton( "DEAL 'EM" );
dealButton.addActionListener(
new ActionListener() { // anonymous inner class
// deal a card. This listens for the "Deal CArd" button to be clicked
public void actionPerformed( ActionEvent actionEvent )
{
dealt = dealCard();
if ( dealt != null ) {
displayField.setText( dealt.viewcard() );
showcard(currentCard);
statusLabel.setText( "Card #: " + (currentCard + 1) );
}
else {
displayField.setText( "NO MORE CARDS TO DEAL" );
statusLabel.setText( "Shuffle cards to continue" );
}
//This is the right spot1 ???
int i;
i = 0;
if(currentCard % 2 == 0)
{hand2 = dealt;
i++;}
else
hand1[currentCard / 2] = dealt;
}
} // end anonymous inner class
); // end call to addActionListener
container.add( dealButton ); //this adds the button to the GUI
dealButton.setEnabled(false); //this disables the button. Don't deal a card until the deck is shuffled
//initialize the "Shuffle Deck" button
shuffleButton = new JButton( "Shuffle cards" );
shuffleButton.addActionListener(
new ActionListener() { // anonymous inner class
// shuffle deck. This listens for the "Shuffle cards" button to be clicked
public void actionPerformed( ActionEvent actionEvent )
{
displayField.setText( "SHUFFLING ..." );
shuffle();
displayField.setText( "DECK IS SHUFFLED" );
//reset the card graphics to the back every shuffle
card = new ImageIcon(".\\cards\\back2.GIF");
card1.setIcon(card);
card2.setIcon(card);
card3.setIcon(card);
card4.setIcon(card);
card5.setIcon(card);
card6.setIcon(card);
card7.setIcon(card);
card8.setIcon(card);
card9.setIcon(card);
card10.setIcon(card);
dealButton.setEnabled(true); //enable the dealbutton after every shuffle
}
private void evalHand()
{
int i;
for(i = 0; i < hand1.length;i++)
{
if(hand1.face.equals("Ace"))
handNums[0]++;
}
}
} // end anonymous inner class
); // end call to addActionListener
container.add( shuffleButton );
displayField = new JTextField( 20 );
displayField.setEditable( false );
container.add( displayField );
statusLabel = new JLabel();
container.add( statusLabel );
setSize( 400, 400 ); // set window size
setVisible( true ); // show window
setResizable(false);
}
// shuffle deck of cards with one-pass algorithm
private void shuffle()
{
currentCard = -1;
// for each card, pick another random card and swap them
for ( int first = 0; first < deck.length; first++ ) {
int second = ( int ) ( Math.random() * 52 );
Card temp = deck[ first ];
deck[ first ] = deck[ second ];
deck[ second ] = temp;
}
//dealButton.setEnabled( true );
}
// deal one card
private Card dealCard()
{
if ( ++currentCard < deck.length )
return deck[ currentCard ];
else {
dealButton.setEnabled( false );
return null;
}
}
// c is the currentcard, just check for the card value and suit and display the appropriate graphics file
private void showcard(int c)
{
// CASES 0,2,4,6,8 Are your Cards
// CASES 1,3,5,7,9 are your opponents cards
card = new ImageIcon(getCard(dealt));
switch (c)
{
case 0: card1.setIcon(card); break;
case 1: card2.setIcon(card); break;
case 2: card3.setIcon(card); break;
case 3: card4.setIcon(card); break;
case 4: card5.setIcon(card); break;
case 5: card6.setIcon(card); break;
case 6: card7.setIcon(card); break;
case 7: card8.setIcon(card); break;
case 8: card9.setIcon(card); break;
case 9: card10.setIcon(card);
dealButton.setEnabled(false);
break;
}//end card switch
}//end showcard
private String getCard(Card myCard)
{
String str_return = ".\\cards\\";
// Suits Thingy
if (myCard.suit.equals("Hearts")) str_return += "H";
if (myCard.suit.equals("Diamonds")) str_return += "D";
if (myCard.suit.equals("Clubs")) str_return += "C";
if (myCard.suit.equals("Spades")) str_return += "S";
// Face Thingy
if (myCard.face.equals("Ace")) str_return += "14";
if (myCard.face.equals("Deuce")) str_return += "2";
if (myCard.face.equals("Three")) str_return += "3";
if (myCard.face.equals("Four")) str_return += "4";
if (myCard.face.equals("Five")) str_return += "5";
if (myCard.face.equals("Six")) str_return += "6";
if (myCard.face.equals("Seven")) str_return += "7";
if (myCard.face.equals("Eight")) str_return += "8";
if (myCard.face.equals("Nine")) str_return += "9";
if (myCard.face.equals("Ten")) str_return += "10";
if (myCard.face.equals("Jack")) str_return += "11";
if (myCard.face.equals("Queen")) str_return += "12";
if (myCard.face.equals("King")) str_return += "13";
return (str_return += ".gif");
}//end getCard
// execute application
public static void main( String args[] )
{
poker application = new poker();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // end class poker
// class to represent a card
class Card {
public String face;
public String suit;
// constructor to initialize a card
public Card( String cardFace, String cardSuit )
{
face = cardFace;
suit = cardSuit;
}
// return String represenation of Card
public String viewcard()
{
return face + " of " + suit;
}//end viewcard
} // end class Card