summaryrefslogtreecommitdiffstats
path: root/Java/BlackJack/Blackjack.java
diff options
context:
space:
mode:
Diffstat (limited to 'Java/BlackJack/Blackjack.java')
-rw-r--r--Java/BlackJack/Blackjack.java185
1 files changed, 185 insertions, 0 deletions
diff --git a/Java/BlackJack/Blackjack.java b/Java/BlackJack/Blackjack.java
new file mode 100644
index 0000000..ff06b78
--- /dev/null
+++ b/Java/BlackJack/Blackjack.java
@@ -0,0 +1,185 @@
+//TODO
+
+import java.util.Random; //for randomness
+//import java.io.BufferedReader;
+//import java.io.InputStreamReader;
+import java.io.*;
+
+class Blackjack {
+ public static void main(String [] args) throws java.io.IOException {
+ System.out.println("Welcome To Blackjack!");
+ System.out.println("Copyright (C) 2021 msglm.");
+ System.out.println("License AGPLv3+: GNU Affero GPL version 3 Only");
+ System.out.println("<http://www.gnu.org/licenses/agpl.html>.");
+ System.out.println("This is free software: you are free to change and redistribute it.");
+ System.out.println("There is NO WARRANTY, to the extent permitted by law. \n");
+
+ //first is for card value, second is for card type
+ int[] dealerFaceValues = new int[21];
+ int[] dealerSuitValues = new int[21];
+ int[] playerFaceValues = new int[21];
+ int[] playerSuitValues = new int[21];
+
+ int dealerDeltCards = 0;
+ int playerDeltCards = 0;
+
+ int dealerScore = 0;
+ int playerScore = 0;
+ int dealerScoreSuit = 0;
+ int playerScoreSuit = 0;
+
+ int roundnum=0;
+
+ boolean stood = false;
+ boolean gameEnd = false;
+ boolean playerHit = true;
+ boolean dealerHit = true;
+ Random random = new Random();
+
+ dealerFaceValues[0] = random.nextInt(9+1)+1;
+ dealerSuitValues[0] = random.nextInt(1+1)+1;
+
+ playerFaceValues[0] = random.nextInt(9+1)+1;
+ playerSuitValues[0] = random.nextInt(1+1)+1;
+
+
+ //TODO: SWITCH STATEMENT THAT ASSIGNES A NAME TO EACH CARD
+
+ System.out.println("Dealer's Hand:");
+ for(int i=0;i<21;i++){
+ int curcar = i + 1;
+ if(dealerFaceValues[i] != 0 || dealerSuitValues[i] != 0){
+ System.out.println("Card " + curcar + " has a Face of " + dealerFaceValues[i] + " and a Suit of " + dealerSuitValues[i]);
+ }
+ }
+
+
+ System.out.println("Player's Hand:");
+ for(int i=0;i<21;i++){
+ int curcar = i + 1;
+ if(playerFaceValues[i] != 0 || playerSuitValues[i] != 0){
+ System.out.println("Card " + curcar + " has a Face of " + playerFaceValues[i] + " and a Suit of " + playerSuitValues[i]);
+ }
+ }
+ while(!gameEnd){
+ roundnum++;
+ System.out.println("Would you like a card? Y/n");
+
+ BufferedReader cardWantInput = new BufferedReader(new InputStreamReader(System.in));
+ String tempString = cardWantInput.readLine();
+ char cardWant = tempString.charAt(0);
+ System.out.println("===ROUND " + roundnum + " ===");
+ if(cardWant == 'y' || cardWant == 'Y'){
+ playerHit = true;
+ playerDeltCards++;
+ playerFaceValues[playerDeltCards] = random.nextInt(9+1)+1;
+ playerSuitValues[playerDeltCards] = random.nextInt(1+1)+1;
+ } else {
+ stood = true;
+ playerHit = false;
+ }
+ System.out.println("");
+ System.out.println("Dealer's Hand:");
+ for(int i=0;i<21;i++){
+ int curcar = i + 1;
+ if(dealerFaceValues[i] != 0 || dealerSuitValues[i] != 0){
+ if(curcar == 1){
+ System.out.println("Card " + curcar + " has a Face of " + dealerFaceValues[i] + " and a Suit of " + dealerSuitValues[i]);
+ } else {
+ System.out.println ("The Dealer has another card...");
+ }
+ }
+ }
+ System.out.println("");
+ System.out.println("Player's Hand:");
+ for(int i=0;i<21;i++){
+ int curcar = i + 1;
+ if(playerFaceValues[i] != 0 || playerSuitValues[i] != 0){
+ System.out.println("Card " + curcar + " has a Face of " + playerFaceValues[i] + " and a Suit of " + playerSuitValues[i]);
+ }
+ }
+ System.out.println("");
+
+
+ //Find each one's score
+ for (int i=0;i<21;i++){
+ playerScore = playerScore + playerFaceValues[i];
+ }
+
+ for (int i=0;i<21;i++){
+ dealerScore = dealerScore + dealerFaceValues[i];
+ }
+
+ for (int i=0;i<21;i++){
+ playerScoreSuit = playerScoreSuit + playerSuitValues[i];
+ }
+
+ for (int i=0;i<21;i++){
+ dealerScoreSuit = dealerScoreSuit + dealerSuitValues[i];
+ }
+
+ if(dealerScore < 17){
+ dealerHit = true;
+ dealerDeltCards++;
+ dealerFaceValues[dealerDeltCards] = random.nextInt(9+1)+1;
+ dealerSuitValues[dealerDeltCards] = random.nextInt(1+1)+1;
+ } else {
+ dealerHit = false;
+ }
+
+
+ System.out.println("Status:");
+ if(playerHit){
+ System.out.println("You took a Hit!");
+ } else {
+ System.out.println("You decided to stand...");
+ }
+
+
+ if(dealerHit){
+ System.out.println("The dealer has taken a hit!");
+ } else {
+ System.out.println("The dealer has decided to stand...");
+ }
+
+ if(dealerScore > 21) {
+ System.out.println("DEALER BUSTED!!! YOU WIN!");
+ gameEnd = true;
+ }
+ if(playerScore > 21){
+ System.out.println("YOU BUSTED!!! YOU LOSE");
+ gameEnd = true;
+
+ }
+
+ //probably should clean this up with swich statments. This looks horrible.
+ if (stood == true && gameEnd == false) {
+ if(dealerScore > playerScore){
+ System.out.println("DEALER HAS THE HIGHER CARDS!!! YOU LOSE!");
+ gameEnd = true;
+ } else if (playerScore > dealerScore){
+ System.out.println("YOU HAVE THE HIGHER CARDS!!! YOU WIN!");
+ gameEnd = true;
+ } else {
+ System.out.println("YOU HAVE THE SAME VALUES. WE MUST LOOK AT THE SUITS TO DETERMINE WHO WON");
+ if(dealerScore + dealerScoreSuit > playerScore + playerScoreSuit){
+ System.out.println("DEALER HAS THE HIGHER CARDS!!! YOU LOSE!");
+ gameEnd = true;
+ } else if (playerScore + playerScoreSuit > dealerScore + dealerScoreSuit){
+ System.out.println("YOU HAVE THE HIGHER CARDS!!! YOU WIN!");
+ gameEnd = true;
+ } else {
+ System.out.println("THE VALUES ARE STILL THE SAME! A COIN FLIP TO DECIDE WHO WON!");
+ if(random.nextInt(1) == 1){
+ System.out.println("YOU HAVE WON BY PURE LUCK!");
+ gameEnd = true;
+ } else {
+ System.out.println("YOU HAVE LOST BY PURE LUCK!");
+ gameEnd = true;
+ }}}}
+ //reset the score counted for next round
+ playerScoreSuit=0;
+ dealerScoreSuit=0;
+ dealerScore=0;
+ playerScore=0;
+ }}}