📄 blackjack.cs
字号:
{
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 + -