Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // crappy blackjack v2
- // i can't get anywhere with more complicated projects
- // so i went all the way back to teenager-level shit
- // and made something as simple as possible
- // use this simple example and make it better
- // this is a simple blackjack game
- // added in v2:
- // - card faces
- // - ace rules
- // - dealer must stop at 17 or higher
- // - ties
- // - ugly back and forth, just show whoever's cards updating
- // rules:
- // https://bicyclecards.com/how-to-play/blackjack/
- // missing:
- // - an actual deck
- // - splitting pairs
- // - double down
- // - insurance
- // - high score
- // crappy blackjack v1 https://pastebin.com/aX1RmFCM
- // crappy blackjack v2 https://pastebin.com/LJb2URb5
- using System;
- using System.Collections.Generic;
- class Program
- {
- static Random random = new Random();
- static List<string> dealer_cards, player_cards;
- static int dealer, player;
- static bool hide_dealer_card;
- static void Main(string[] args)
- {
- Console.WriteLine("welcome to blackjack for toddlers");
- int money = 100;
- while (money > 0)
- {
- Console.WriteLine();
- // get bet before cards are dealt
- Console.WriteLine("moneys: " + money);
- int bet = 0;
- while (!(bet > 0 && bet <= money))
- {
- Console.Write("bet (1.." + money + ")? ");
- string input = Console.ReadLine();
- int.TryParse(input, out bet);
- }
- money -= bet;
- // deal cards
- hide_dealer_card = true;
- dealer_cards = new List<string>();
- dealer_cards.Add(deal_card());
- dealer_cards.Add(deal_card());
- dealer = cards_value(dealer_cards);
- player_cards = new List<string>();
- player_cards.Add(deal_card());
- player_cards.Add(deal_card());
- player = cards_value(player_cards);
- show_dealer_cards();
- show_player_cards();
- // player hit/stand input
- while (true)
- {
- // finish if he busts or gets natural 21
- if (player >= 21) break;
- Console.Write("another card [y/n]? ");
- ConsoleKeyInfo key = Console.ReadKey();
- Console.WriteLine();
- if (key.Key == ConsoleKey.Y)
- {
- player_cards.Add(deal_card());
- player = cards_value(player_cards);
- show_player_cards();
- }
- // finish if he's done
- if (key.Key == ConsoleKey.N) break;
- }
- // let player know if he got natural 21
- if (player == 21)
- Console.WriteLine("natural 21!");
- hide_dealer_card = false;
- show_dealer_cards();
- // let player know if he busted
- if (player > 21)
- Console.WriteLine("YOU BUSTED");
- // do dealer's turn if he didn't bust
- if (player < 21)
- {
- // deal until 17 or higher
- while (dealer < 17)
- {
- dealer_cards.Add(deal_card());
- dealer = cards_value(dealer_cards);
- show_dealer_cards();
- }
- // let player know if dealer busted
- if (dealer > 21)
- Console.WriteLine("DEALER BUSTED");
- }
- // dealer busted, or player won
- if (dealer > 21 || (player <= 21 && player > dealer))
- {
- Console.WriteLine("you win " + (bet * 2) + " moneys!");
- money += bet * 2;
- }
- // player busted, or dealer won
- if (player > 21 || (dealer <= 21 && player < dealer))
- {
- Console.WriteLine("dealer wins.");
- }
- // tie
- if (player <= 21 && dealer <= 21 && player == dealer)
- {
- Console.WriteLine("you tied the dealer. you get your bet back.");
- money += bet;
- }
- }
- Console.WriteLine("you're all out of moneys. see ya next payday, sucker!");
- Console.ReadKey(true);
- }
- static void show_dealer_cards()
- {
- Console.Write("dealer: ");
- if (hide_dealer_card) Console.Write("[?] ");
- else Console.Write(("[" + dealer_cards[0] + "]").PadRight(4));
- for (int c = 1; c < dealer_cards.Count; c++)
- Console.Write(("[" + dealer_cards[c] + "]").PadRight(4));
- if (hide_dealer_card) Console.WriteLine("?");
- else Console.WriteLine("= " + dealer);
- }
- static void show_player_cards()
- {
- Console.Write("you: ");
- for (int c = 0; c < player_cards.Count; c++)
- Console.Write(("[" + player_cards[c] + "]").PadRight(4));
- Console.WriteLine("= " + player);
- }
- // have to use strings because there's no single char for 10
- static string deal_card()
- {
- string card = "\0";
- int value = random.Next(1, 14);
- card = value.ToString();
- if (value == 1) card = "A";
- if (value == 11) card = "J";
- if (value == 12) card = "Q";
- if (value == 13) card = "K";
- return card;
- }
- static int cards_value(List<string> cards)
- {
- int total = 0;
- int aces = 0;
- for (int c = 0; c < cards.Count; c++)
- {
- int value = 0;
- int.TryParse(cards[c], out value);
- if (cards[c] == "A")
- {
- // only add 1s for now, we'll deal with 11s at the end
- value = 1;
- aces++;
- }
- if (cards[c] == "J" ||
- cards[c] == "Q" ||
- cards[c] == "K")
- value = 10;
- total += value;
- }
- // if there are any aces and our total is under 21 - 10, add 10
- // we already added 1 for each ace, so we shouldnt add 11
- for (int a = 0; a < aces; a++)
- if (total <= 21 - 10) total += 10;
- return total;
- }
- }
Add Comment
Please, Sign In to add comment