Changes

Jump to navigation Jump to search

Blackjack Assignment Solution

94 bytes removed, 17:27, 20 September 2017
m
no edit summary
==Code==
package edu.nyu.cs.fb1258; import java.util.Random; import java.util.Scanner; public class BlackjackSimple { public static void main(String[] args) { //a string that keeps track of which cards we've dealt to the player String playerCards <syntaxhighlight lang= "java"; //starts off blank //two sentinel variables that keep track of whether to ask each player if they want a new card boolean askDealerToHit = true; boolean askPlayerToHit = true; //two sentinel variables that keep track of whether either player has gone "bust". boolean dealerIsBust = false; boolean playerIsBust = false; //two integers to keep a running total of the points int playerTotal = 0; int dealerTotal = 0; //create a Random "object" to use to generate random numbers //the default "seed" used by this built-in Random object is the current time in milliseconds. //two separate pseudo-random number generators based on the same seed will produce the same pseudo-random numbers... beware! Random randomGenerator = new Random(); //deal first "hand" to player int playerCard1 = randomGenerator.nextInt(10) + 1; //generate a pseudo-random number between 1-10 int playerCard2 = randomGenerator.nextInt(10) + 1; //generate a pseudo-random number between 1-10 playerCards = playerCard1 + ", " + playerCard2; //store these cards as a string we use to tell the user what they have been dealt so far //deal first "hand" to dealer int dealerCard1 = randomGenerator.nextInt(10) + 1; //generate a pseudo-random number between 1-10 int dealerCard2 = randomGenerator.nextInt(10) + 1; //generate a pseudo-random number between 1-10 //calculate totals playerTotal += playerCard1 + playerCard2; //add these two cards to the total dealerTotal += dealerCard1 + dealerCard2; //tell the user what they have System.out.println("Your hand: " + playerCards); //as long as neither player is bust and either player wants a new card, keep iterating the loop while ( (!dealerIsBust && !playerIsBust) && (askDealerToHit || askPlayerToHit)) { //ask the user whether they would like to hit System.out.println("Would you like to 'hit' or 'stand'?"); Scanner scnr = new Scanner(System.in); String playerResponse = scnr.nextLine(); //get the response //handle the player's response switch (playerResponse.toLowerCase()) { case "hit": //if they asked for a hit, give them a card. int newCard = randomGenerator.nextInt(10) + 1; //generate a pseudo-random number between 1-10 playerTotal += newCard; //add this card to the numeric total we are keeping playerCards+= ", " + newCard; //add this card to the list of cards we show the user //tell the user what they have System.out.println("Sure... You now have: " + playerCards); //check whether player went "bust" if (playerTotal > 21) { playerIsBust = true; //flip the flag } break; //break out of the switch statement case "stand": //if they stand, we don't ask them if they want a hit again askPlayerToHit = false; //change the flag break; //break out of the switch statement default: //we only get here if the user entered something other than 'hit' or 'stand' System.out.println("Sorry, I can't understand you... I guess you want to stand."); askPlayerToHit = false; //change the flag break; //break out of the switch statement } //switch //if the player went "bust", quit right now if (playerIsBust) break; //break out of the while loop //determine whether dealer whether they would like to hit boolean dealerWantsCard = randomGenerator.nextBoolean(); //generate a pseudo-random boolean value //pretend as if the dealer answered 'hit' or 'stand', like a real player String dealerResponse = ""; //this will store the dealer's response that we generate if (dealerWantsCard) { dealerResponse = "hit"; //simulate a "hit" response } else { dealerResponse = "stand"; //simulate a "stand" response } //handle the dealer's response switch(dealerResponse.toLowerCase()) { case "hit": //if they asked for a hit, give them a card. int newCard = randomGenerator.nextInt(10) + 1; //generate a pseudo-random number between 1-10 dealerTotal += newCard; //add this card to the numeric total we are keeping //check whether dealer went "bust" if (dealerTotal > 21) { dealerIsBust = true; //flip the flag } break; //break out of the switch statement case "stand": //if they stand, we don't ask them if they want a hit again askDealerToHit = false; //change the flag break; //break out of the switch statement } //switch scnr.close(); //close Scanner to conserve resourcres } //while //players are both done hitting... now check for any busts and tell them who won if (playerIsBust) { //the player busted System.out.println("You went bust with " + playerTotal + ".\nThe dealer wins with " + dealerTotal + "!"); } else if (dealerIsBust) { //the dealer busted System.out.println("The dealer went bust with " + dealerTotal + ".\nYou win with " + playerTotal + "!"); } else if (playerTotal > dealerTotal) { System.out.println("The dealer has " + dealerTotal + ".\nYou win with " + playerTotal + "!"); } else if (playerTotal < dealerTotal) { System.out.println("The dealer has " + dealerTotal + " and you have " + playerTotal + ".\nDealer wins!"); } else { System.out.println("It's a tie! You and the dealer both have " + playerTotal + "."); } } //main method } //class
package edu.nyu.cs.fb1258;
 
import java.util.Random;
import java.util.Scanner;
 
 
public class BlackjackSimple {
 
public static void main(String[] args) {
//a string that keeps track of which cards we've dealt to the player
String playerCards = ""; //starts off blank
//two sentinel variables that keep track of whether to ask each player if they want a new card
boolean askDealerToHit = true;
boolean askPlayerToHit = true;
//two sentinel variables that keep track of whether either player has gone "bust".
boolean dealerIsBust = false;
boolean playerIsBust = false;
//two integers to keep a running total of the points
int playerTotal = 0;
int dealerTotal = 0;
 
//create a Random "object" to use to generate random numbers
//the default "seed" used by this built-in Random object is the current time in milliseconds.
//two separate pseudo-random number generators based on the same seed will produce the same pseudo-random numbers... beware!
Random randomGenerator = new Random();
 
//deal first "hand" to player
int playerCard1 = randomGenerator.nextInt(10) + 1; //generate a pseudo-random number between 1-10
int playerCard2 = randomGenerator.nextInt(10) + 1; //generate a pseudo-random number between 1-10
playerCards = playerCard1 + ", " + playerCard2; //store these cards as a string we use to tell the user what they have been dealt so far
//deal first "hand" to dealer
int dealerCard1 = randomGenerator.nextInt(10) + 1; //generate a pseudo-random number between 1-10
int dealerCard2 = randomGenerator.nextInt(10) + 1; //generate a pseudo-random number between 1-10
 
//calculate totals
playerTotal += playerCard1 + playerCard2; //add these two cards to the total
dealerTotal += dealerCard1 + dealerCard2;
//tell the user what they have
System.out.println("Your hand: " + playerCards);
//as long as neither player is bust and either player wants a new card, keep iterating the loop
while ( (!dealerIsBust && !playerIsBust) && (askDealerToHit || askPlayerToHit)) {
//ask the user whether they would like to hit
System.out.println("Would you like to 'hit' or 'stand'?");
Scanner scnr = new Scanner(System.in);
String playerResponse = scnr.nextLine(); //get the response
//handle the player's response
switch (playerResponse.toLowerCase()) {
case "hit":
//if they asked for a hit, give them a card.
int newCard = randomGenerator.nextInt(10) + 1; //generate a pseudo-random number between 1-10
playerTotal += newCard; //add this card to the numeric total we are keeping
playerCards+= ", " + newCard; //add this card to the list of cards we show the user
//tell the user what they have
System.out.println("Sure... You now have: " + playerCards);
 
//check whether player went "bust"
if (playerTotal > 21) {
playerIsBust = true; //flip the flag
}
break; //break out of the switch statement
case "stand":
//if they stand, we don't ask them if they want a hit again
askPlayerToHit = false; //change the flag
break; //break out of the switch statement
default:
//we only get here if the user entered something other than 'hit' or 'stand'
System.out.println("Sorry, I can't understand you... I guess you want to stand.");
askPlayerToHit = false; //change the flag
break; //break out of the switch statement
} //switch
 
//if the player went "bust", quit right now
if (playerIsBust) break; //break out of the while loop
 
//determine whether dealer whether they would like to hit
boolean dealerWantsCard = randomGenerator.nextBoolean(); //generate a pseudo-random boolean value
 
//pretend as if the dealer answered 'hit' or 'stand', like a real player
String dealerResponse = ""; //this will store the dealer's response that we generate
if (dealerWantsCard) {
dealerResponse = "hit"; //simulate a "hit" response
}
else {
dealerResponse = "stand"; //simulate a "stand" response
}
//handle the dealer's response
switch(dealerResponse.toLowerCase()) {
case "hit":
//if they asked for a hit, give them a card.
int newCard = randomGenerator.nextInt(10) + 1; //generate a pseudo-random number between 1-10
dealerTotal += newCard; //add this card to the numeric total we are keeping
//check whether dealer went "bust"
if (dealerTotal > 21) {
dealerIsBust = true; //flip the flag
}
break; //break out of the switch statement
case "stand":
//if they stand, we don't ask them if they want a hit again
askDealerToHit = false; //change the flag
break; //break out of the switch statement
} //switch
scnr.close(); //close Scanner to conserve resourcres
} //while
//players are both done hitting... now check for any busts and tell them who won
if (playerIsBust) {
//the player busted
System.out.println("You went bust with " + playerTotal + ".\nThe dealer wins with " + dealerTotal + "!");
}
else if (dealerIsBust) {
//the dealer busted
System.out.println("The dealer went bust with " + dealerTotal + ".\nYou win with " + playerTotal + "!");
}
else if (playerTotal > dealerTotal) {
System.out.println("The dealer has " + dealerTotal + ".\nYou win with " + playerTotal + "!");
}
else if (playerTotal < dealerTotal) {
System.out.println("The dealer has " + dealerTotal + " and you have " + playerTotal + ".\nDealer wins!");
}
else {
System.out.println("It's a tie! You and the dealer both have " + playerTotal + ".");
}
} //main method
 
} //class
<syntaxhighlight>
{{Template:Inbound links|page={{PAGENAMEE}}}}

Navigation menu