Tuesday 28 February 2012

Card shuffling and dealing program


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


public class DeckOfCards extends JFrame 
     {
     private Card deck[];
     private int currentCard;
     private JButton dealButton, shuffleButton;
     private JTextField displayCard;
     private JLabel status;
    
     public DeckOfCards()
         {
         super( "Card Dealing Program" );
        
             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 ];
         currentCard = -1;
        
         for ( int i = 0; i < deck.length; i++ )
         deck[ i ] = new Card( faces[ i % 13 ], suits[ i / 13 ] );
        
         Container c = getContentPane();
         c.setLayout( new FlowLayout() );
        
         dealButton = new JButton( "Deal card" );
         dealButton.addActionListener( new ActionListener() 
             { 
             public void actionPerformed( ActionEvent e )
                 {
                 Card dealt = dealCard();
                
                 if ( dealt != null ) 
                     {
                     displayCard.setText( dealt.toString() );
                     status.setText( "Card #: " + currentCard );
                 }
                 else 
                     {
                     displayCard.setText( "NO MORE CARDS TO DEAL" );
                     status.setText( "Shuffle cards to continue" );
                 }
             }
         } );
         c.add( dealButton );
        
         shuffleButton = new JButton( "Shuffle cards" );
         shuffleButton.addActionListener( new ActionListener() 
             {
             public void actionPerformed( ActionEvent e )
                 {
                 displayCard.setText( "SHUFFLING ..." );
                 shuffle();
                 displayCard.setText( "DECK IS SHUFFLED" );
             }
         });
         c.add( shuffleButton );
        
         displayCard = new JTextField( 20 );
         displayCard.setEditable( false );
         c.add( displayCard );
        
         status = new JLabel();
         c.add( status );
        
         setSize( 275, 120 ); // set the window size
         show(); // show the window
     }
    
     public void shuffle()
         {
         currentCard = -1;
        
         for ( int i = 0; i < deck.length; i++ ) 
             {
             int j = ( int ) ( Math.random() * 52 );
             Card temp = deck[ i ]; // swap
             deck[ i ] = deck[ j ]; // the
             deck[ j ] = temp; // cards
         }
        
         dealButton.setEnabled( true );
     }
    
     public Card dealCard()
         {
         if ( ++currentCard < deck.length )
         return deck[ currentCard ];
         else 
             {
             dealButton.setEnabled( false );
             return null;
         }
     }
    
     public static void main( String args[] )
         {
         DeckOfCards app = new DeckOfCards();
        
         app.addWindowListener( new WindowAdapter() 
             {
             public void windowClosing( WindowEvent e )
                 {
                 System.exit( 0 );
             }
         } );
     }
}


class Card 
     {
     private String face;
     private String suit;
    
     public Card( String f, String s )
         {
         face = f;
         suit = s;
     }
    
     public String toString() 
         { 
         return face + " of " + suit; 
     }
}

No comments:

Post a Comment