import java.util.Scanner;
/*
Hi!
If you lose, you lose the money you bet
If you win, you get it
Gamble away
$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$
$$$$$$$$$$$$$$ $$$$$$$ $$ $ $$$$
$$$$$$$$$$$ $$ $$$ $$ $ $ $$$$
$$$$%$$$ $ $ $$ $$$ $ $ $$ $ $$
$$$$%%$$$ $ $ $$ $$$ $ $$ $ $ $$$
$$$$$%%$$$$ $ $ $ $$ $ $$$ $ $$ $$$$
$$$$$%%%$$$$$ $$$$ $ $ $$ $ $$$$$ $$ $$$$$
$$$$$$%%%$$$$$$$$$$$ $$ $ $$$$ $ $$$$$$$$$$$$$$$$
$$$$$$%%%$$$$$$$$$$$$$$$ $$$$$$ $$$$$$$$$$$$$$$$$$$
$$$$$$%%%$$%%%%%%$$$$$$$$$$$$$$$ $$$$$$$$$ $$$$$$$$
$$$$$$%%$$%%%%%%%%%$$$$$$$$$$$$$ $$$$$$$ $$$$%$$$
$$$$$$%$$%%%%%%%%%%%$$$$$$$$$$$$$$$$$ $$$$%%$$$
$$$$$$$$%%%%%%%%%%%%%$$$$$$$$$$$ $$$$%%$$$
$$$$$$$%%% $$$$$$$$ $$$%%$$$
$$$$$$%%% $$$%%$$
$$$$$$%%% $$$%%$$
$$$$$%%%% % $$$%%$$
$$$$$%%%% % $$%%$$
$$$$$%%%% % $$%%$$
$$$$$%%%% %% $$$%$$
$$$$$%%%% %%% $$$%$$
$$$$$%%%% %% $$$%$$
$$$$$%%%% %% $$$%$$
$$$$$%%%% %% $$$%$$
$$$$%%%% $$$$ %% $$$$%$$
$ $$$%%%% $$$$$$$$$ $$$$$$$$$%% $$$$$$$
$$$ $$%%% $$$$$$$$$$ $$$$$$$$$$$%% $$$$$$
$$$$ %%% $$$ $$$$ $$%% $$$$$$
$$$$$$%%% $$$$$ $$$$ $$$$$$$$$$ $%% $$$$$$
$$$$ %%% $$$ $$$$$ $$$$$$ $$$ %%% $$$$$
$$$$ $$$$$$$$$ $$$$ $$$$$$$$$$$$$$ % $$$$$
$$$$ $$$ $ $$ $$$$ $$$$$$ $ $ $$ $$$$
$$$$ $ $$$ %%%$$$ %% $$$ $$$$
$$$$ %%%% $$ %%%%%% %%% $$$$
$$$$ %%% %%%%% $ %%%%%%% $$$$
$$$$ %%%%% $$ %%% $$ $
$$ $ %% $ $ $$
$ $$ $ $ $
$ $$ $ %$ $$ $
$ $ $ %%$ $$$$
$$$ $$ $ %%% $ $ $$
$$ $$ $ %%%% $ $$$ $$ $
$ $$$ $$ %%%% $$$ $$$ $$$ $
$ $$$ $$ %%%$$$ $$$$ $$$$ $$$$ $
$$$$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$$ $
$$$$$$$ $$$$$$$$$$$$$$ $$$$$$$$ $
$$$$$$ %%$$$$$$$$$$$$$$ $$$$$$$$$$$$$$
$$$ $$ %$$$$$$$$$$ $$$$$$$$$ $$$$
$$ $ $$$$ $$$$$$$$ $$ $$$
$$ $ %$$$$ $$ $$$$
$ $ %%%%$$$ $$$$$$$$$$$$$ $$$
$$ $$ %%%% $$ $$$$
$$ $$ %%$$$$ $$$$$$$$$$ $$$
$ $ $$$$$%%%%%%%%%% $$$$
$$ $$ $$$$$%%% $$$
$ $ $$$$ %%%%%%%%%%%%%% $$$
$$ $$$$ %%%%%%%%%%%%% $$$
$$$ $ $$$$ $%%%% $$$
$$ $$ $$$$$ $$$$ $$$
$ $$ $$ $$$$$$ $$$ $$$
$ $$$$ $$ $$$$$$ $$$$ $$$
$ $$$ $$$ $$$$$$ $$$$$$$ $$$
$ $$$$$$$$$$ $$$$$$ $$$
$ $$ $$$$$$$$ $$$$$$$$$$$$$$$ $$$
$$$$$ $$$$$$$ $$$$$$$$$$$$$$$$$$
$$$$$$ $$$$$ $$$$$$
$$$$$ $$$$
$$$$$$ $$$
$$$$$ $$$
$$$$$$$$
$$$$$$
*/
public class Main {
public static void main(String[] args) {
Scanner myObj = new Scanner(System.in);
double money = 100;
System.out.println("You have $100. Time to play Black Jack");
int[] card = new int[52];
boolean playing = true;
double bet = 0;
int wins = 0;
int losses=0;
while(playing){
System.out.println("How much money would you like to bet? $5 minimum");
bet = myObj.nextDouble();
boolean betGood=false;
while(!betGood){
if(bet<5){
System.out.println("There is a $5 minimum");
bet = myObj.nextDouble();
}if(bet>money){
System.out.println("You don't have enough money for that");
bet = myObj.nextDouble();
}
else{
betGood=true;
}
}
System.out.println("A $"+bet+" bet was made. ");
int[] dealerCard = new int[10];
int[] playerCard = new int[10];
//generate the order of cards
for(int i = 0; i<card.length; i++){
card[i]=(int)(Math.random()*52)+1;
}
for(int i =0; i<card.length; i++){ //for every question
boolean genGood = false; //not proven that it is not the same as something
if(i!=0){ //if it is not the first question
while(!genGood) { //while it is "the same as something"
//strating at one before the i element we are one until we reach the first element
genGood=true;
for (int k = 1; k <= i; k++) {
//if it is the same as a prior question
if (card[i] == card[i - k]) {
card[i] = (int) (Math.random() * 52) + 1;
genGood=false;
}
}
}
}
}
String playerSuit="";
//hearts =1
//diamonds =2
//spades=3
//clubs=4
String playerCardNum = "";
int playerSum=0;
System.out.println("Your cards: ");
int k=0;
for(int i=0; i<2;i++){ //print first two cards
playerCard[i]=card[k];
k++;
dealerCard[i]=card[k];
k++;
playerCardNum = numFind(playerCard, i);
playerSuit = suitFind(playerCard, i);
System.out.println(playerCardNum+" of "+playerSuit);
}
System.out.println();
System.out.println("The dealers card: ");
System.out.println(numFind(dealerCard, 0)+" of "+suitFind(dealerCard, 0));
System.out.println();
boolean playerChoosing = true;
int round = 2;
int playerCardAmt = 2;
while(playerChoosing){ //player picks to hit or pass
System.out.println("Would you like to hit (0) or pass (1) ?");
int choice = myObj.nextInt();
boolean choiceGood = false;
while(!choiceGood){
if(choice!=1&&choice!=0){
System.out.println("Please input valid choice");
System.out.println("Would you like to hit (0) or pass (1) ?");
choice = myObj.nextInt();
}else{
choiceGood=true;
}
}
if (choice == 0) { //hit
playerCard[round]= card[k];
k++;
playerCardAmt++;
System.out.println("Your cards: ");
playerSum=0;
for(int i=0; i<playerCardAmt;i++){ //print player cards
playerCardNum = numFind(playerCard, i);
playerSuit = suitFind(playerCard, i);
System.out.println(playerCardNum+" of "+playerSuit);
playerSum+=valueFind(playerCard, i);
if(numFind(playerCard, i).equalsIgnoreCase("Ace")){
if(playerSum+11>21){
playerSum+=1;
}else{
playerSum+=11;
}
}
}
if(playerSum>21){
System.out.println("Bust!");
break;
}
}
else{
playerChoosing=false;
}
round++;
}
//after player has chose
playerSum=0;
//calc palyer sum
for(int i =0; i<playerCardAmt;i++){
playerSum+=valueFind(playerCard, i);
if(numFind(playerCard, i).equalsIgnoreCase("Ace")){
if(playerSum+11>21){
playerSum+=1;
}else{
playerSum+=11;
}
}
}
int playerDif = Math.abs(21-playerSum);
System.out.println("\nYour total ended up being "+playerSum);
if(playerSum==21){
System.out.println("You got blackjack!");
}else if(playerSum<21){
System.out.println("You were "+playerDif+" away from blackjack. ");
}else{
System.out.println("You were "+playerDif+" over blackjack. ");
}
//dealer playing now
System.out.println("\nIt's the dealer's turn now.");
boolean dealerPlaying=true;
int dealerSum = 0;
int n = 2;
//dealer drawing cards
while(dealerPlaying){
dealerSum=0;
for(int i = 0; i < n; i++){
if(numFind(dealerCard, i).equalsIgnoreCase("Ace")){
if(dealerSum+11>21){
dealerSum+=1;
}else{
dealerSum+=11;
}
}else{
dealerSum += valueFind(dealerCard, i);
}
}
if(dealerSum<=16){
dealerCard[n]=card[k];
k++;
n++;
}else{
dealerPlaying=false;
}
}
System.out.println("The dealer drew their cards. They were:");
String dealerCardNum = "";
String dealerSuit = "";
//print dealer cards
for(int i=0; i<n;i++){
dealerCardNum = numFind(dealerCard, i);
dealerSuit = suitFind(dealerCard, i);
System.out.println(dealerCardNum+" of "+dealerSuit);
}
int dealerDif = Math.abs(21-dealerSum);
System.out.println();
System.out.println("The dealer's cards added up to "+dealerSum);
if(dealerSum==21){
System.out.println("They got blackjack!");
}else if(dealerSum<21){
System.out.println("They were "+dealerDif+" away from blackjack. ");
}else{
System.out.println("They were "+dealerDif+" over blackjack. ");
}
System.out.println();
boolean win = false;
if(dealerSum>21&&playerSum>21){
System.out.println("Draw goes to house.");
win=false;
}else if (dealerSum==playerSum){
System.out.println("Draw goes to house.");
}else if(dealerSum>21){
win=true;
}else if(playerDif<dealerDif){//win
win=true;
}
if(win){
System.out.println("You won!");
System.out.println("You gained $"+bet);
money+=bet;
System.out.println("You now have $"+ money);
wins++;
}else{
System.out.println("You lost");
System.out.println("You lost $"+bet);
money-=bet;
System.out.println("You now have $"+ money);
losses++;
}
if(money<=0){
break;
}
}
System.out.println("You lost!");
System.out.println("You won "+wins+" times and lost "+losses+" times.");
}
public static int valueFind(int arr[], int i){
if(arr[i]==1||arr[i]==14||arr[i]==27||arr[i]==40){
//1
return 0;
}else if(arr[i]==13||arr[i]==26||arr[i]==39||arr[i]==52){
//13
return 10;
}else if(arr[i]==12||arr[i]==25||arr[i]==38||arr[i]==51){
//12
return 10;
}else if(arr[i]==11||arr[i]==24||arr[i]==37||arr[i]==50){
//11
return 10;
}else if(arr[i]==2||arr[i]==13||arr[i]==28||arr[i]==41){
//2
return 2;
}else if(arr[i]==3||arr[i]==14||arr[i]==29||arr[i]==42){
//3
return 3;
}else if(arr[i]==4||arr[i]==15||arr[i]==30||arr[i]==43){
//4
return 4;
}else if(arr[i]==5||arr[i]==16||arr[i]==31||arr[i]==44){
//5
return 5;
}else if(arr[i]==6||arr[i]==17||arr[i]==32||arr[i]==45){
//6
return 6;
}else if(arr[i]==7||arr[i]==18||arr[i]==33||arr[i]==46){
//7
return 7;
}else if(arr[i]==8||arr[i]==19||arr[i]==34||arr[i]==47){
//8
return 8;
}else if(arr[i]==9||arr[i]==20||arr[i]==35||arr[i]==48){
//9
return 9;
}else {
//10
return 10;
}
}
public static String suitFind(int arr[], int i){
if(arr[i]>=1&&arr[i]<=13){
//hearts
return "hearts";
}else if(arr[i]>=14&&arr[i]<=26){
//diamonds
return "diamonds";
}else if(arr[i]>=27&&arr[i]<=39){
//spades
return "spades";
}else{
//clubs
return "clubs";
}
}
public static String numFind(int arr[], int i){
if(arr[i]==1||arr[i]==14||arr[i]==27||arr[i]==40){
//1
return "Ace";
}else if(arr[i]==13||arr[i]==26||arr[i]==39||arr[i]==52){
//13
return "King";
}else if(arr[i]==12||arr[i]==25||arr[i]==38||arr[i]==51){
//12
return "Queen";
}else if(arr[i]==11||arr[i]==24||arr[i]==37||arr[i]==50){
//11
return "Jack";
}else if(arr[i]==2||arr[i]==13||arr[i]==28||arr[i]==41){
//2
return "two";
}else if(arr[i]==3||arr[i]==14||arr[i]==29||arr[i]==42){
//3
return "three";
}else if(arr[i]==4||arr[i]==15||arr[i]==30||arr[i]==43){
//4
return "four";
}else if(arr[i]==5||arr[i]==16||arr[i]==31||arr[i]==44){
//5
return "five";
}else if(arr[i]==6||arr[i]==17||arr[i]==32||arr[i]==45){
//6
return "six";
}else if(arr[i]==7||arr[i]==18||arr[i]==33||arr[i]==46){
//7
return "seven";
}else if(arr[i]==8||arr[i]==19||arr[i]==34||arr[i]==47){
//8
return "eight";
}else if(arr[i]==9||arr[i]==20||arr[i]==35||arr[i]==48){
//9
return "nine";
}else {
//10
return "ten";
}
}
}