⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blackjack.cs

📁 this is a good book for the visual c#
💻 CS
📖 第 1 页 / 共 3 页
字号:
      {
         stayButton.Enabled = false;
         hitButton.Enabled = false;
         dealButton.Enabled = true;
         DealerPlay();
      }

      // process dealers turn
      private void DealerPlay()
      {
         // while value of dealer's hand is below 17,
         // dealer must take cards
         while ( dealer.CountCards( dealersCards ) < 17 )
         {
            dealersCards += "\t" + dealer.DealCard();
            DisplayCard( dealerCard, "" );
            dealerCard++;
            MessageBox.Show( "Dealer takes a card" );
         }      

         int dealersTotal = dealer.CountCards( dealersCards );
         int playersTotal = dealer.CountCards( playersCards );

         // if dealer busted, player wins
         if ( dealersTotal > 21 )
         {         
            GameOver( GameStatus.WIN );
            return;
         }

         // if dealer and player have not exceeded 21,
         // higher score wins; equal scores is a push.
         if ( dealersTotal > playersTotal )
            GameOver( GameStatus.LOSE );
         else if ( playersTotal > dealersTotal )
            GameOver( GameStatus.WIN );
         else
            GameOver( GameStatus.PUSH );

      } // end method DealerPlay

      // deal another card to player
      protected void hitButton_Click( 
         object sender, System.EventArgs e )
      {
         // get player another card
         string card = dealer.DealCard();
         playersCards += "\t" + card;
         DisplayCard( playerCard, card );
         playerCard++;

         int total = dealer.CountCards( playersCards );

         // if player exceeds 21, house wins
         if ( total > 21 )
            GameOver( GameStatus.LOSE );

         // if player has 21, they cannot take more cards
         // the dealer plays
         if ( total == 21 ) 
         {
            hitButton.Enabled = false;
            DealerPlay();
         }

      } // end method hitButton_Click

      // deal two cards each to dealer and player
      protected void dealButton_Click( 
         object sender, System.EventArgs e )
      {
         string card;

         // clear card images
         foreach ( PictureBox cardImage in cardBoxes )
            cardImage.Image = null;

         // clear status from previous game
         statusLabel.Text = "";

         // shuffle cards
         dealer.Shuffle();

         // deal two cards to player
         playersCards = dealer.DealCard();
         DisplayCard( 11, playersCards );
         card = dealer.DealCard();
         DisplayCard( 12, card );      
         playersCards += "\t" + card;

         // deal two cards to dealer, only display face
         // of first card
         dealersCards = dealer.DealCard() ;
         DisplayCard( 0, dealersCards );
         card = dealer.DealCard();
         DisplayCard( 1, "" );
         dealersCards += "\t" + card;

         stayButton.Enabled = true;
         hitButton.Enabled = true;
         dealButton.Enabled = false;

         int dealersTotal = dealer.CountCards( dealersCards );
         int playersTotal = dealer.CountCards( playersCards );

         // if hands equal 21, it is a push
         if ( dealersTotal == playersTotal && 
            dealersTotal == 21 )
            GameOver( GameStatus.PUSH );

         // if player has 21 player wins with blackjack
         else if ( playersTotal == 21 )
            GameOver( GameStatus.BLACKJACK );

         // if dealer has 21, dealer wins
         else if ( dealersTotal == 21 )
            GameOver( GameStatus.LOSE );

         dealerCard = 2;
         playerCard = 13; 

      } // end method dealButton_Click

      // displays card represented by cardValue in
      // PictureBox with number card
      public void DisplayCard( int card, string cardValue )
      {
         // retrieve appropriate PictureBox from ArrayList
         PictureBox displayBox = ( PictureBox ) cardBoxes[ card ];

         // if string representing card is empty,
         // set displayBox to display back of card
         if ( cardValue == "" )
         {         
            displayBox.Image = 
               Image.FromFile( "blackjack_images\\cardback.png" );
            return;
         }

         // retrieve face value of card from cardValue
         int faceNumber = Int32.Parse( cardValue.Substring( 0,
            cardValue.IndexOf( " " ) ) );

         string face = faceNumber.ToString();

         // retrieve the suit of the card from cardValue
         string suit = cardValue.Substring( 
            cardValue.IndexOf( " " ) + 1 );      

         char suitLetter;

         // determine if suit is other than clubs
         switch ( Convert.ToInt32( suit ) )
         {
            // suit is clubs
            case 0:
               suitLetter = 'c';
               break;
        
            // suit is diamonds
            case 1: 
               suitLetter = 'd';
               break;

            // suit is hearts
            case 2: 
               suitLetter = 'h';
               break;

            // else suit is spades
            default: 
               suitLetter = 's';
               break;
         }

         // set displayBox to display appropriate image
         displayBox.Image = Image.FromFile( 
            "blackjack_images\\" + face + suitLetter + ".png"  );

      } // end method DisplayCard

      // displays all player cards and shows 
      // appropriate game status message
      public void GameOver( GameStatus winner )
      {
         char[] tab = { '\t' };      
         string[] cards = dealersCards.Split( tab );

         for ( int i = 0; i < cards.Length; i++ )
            DisplayCard(  i, cards[ i ] );

         // push
         if ( winner == GameStatus.PUSH )
            statusLabel.Text = "It's a tie!";

         // player loses
         else if ( winner == GameStatus.LOSE )
            statusLabel.Text = "You Lose Try Again!";

         // player wins
         else if ( winner == GameStatus.WIN )
            statusLabel.Text = "You Win!";

         // player has won with blackjack
         else
            statusLabel.Text = "BlackJack!";

         stayButton.Enabled = false;
         hitButton.Enabled = false;
         dealButton.Enabled = true;

      } // end method GameOver

   } // end class Blackjack
}


   /*
    **************************************************************************
    * (C) Copyright 2002 by Deitel & Associates, Inc. and Prentice Hall.     *
    * All Rights Reserved.                                                   *
    *                                                                        *
    * DISCLAIMER: The authors and publisher of this book have used their     *
    * best efforts in preparing the book. These efforts include the          *
    * development, research, and testing of the theories and programs        *
    * to determine their effectiveness. The authors and publisher make       *
    * no warranty of any kind, expressed or implied, with regard to these    *
    * programs or to the documentation contained in these books. The authors *
    * and publisher shall not be liable in any event for incidental or       *
    * consequential damages in connection with, or arising out of, the       *
    * furnishing, performance, or use of these programs.                     *
    **************************************************************************
   */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -