Thursday 16 February 2017

Card shuffling program using java

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;
     }
}