Advertisement
angryatti

BlackJack C# - before the python version v1

Mar 15th, 2023
646
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 10.92 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Drawing;
  4. using System.Linq;
  5. using System.Runtime.ExceptionServices;
  6. using System.Security.Cryptography.X509Certificates;
  7.  
  8. namespace BlackJack_HA
  9. {
  10.     internal static class Program
  11.     {
  12.  
  13.         struct Deck
  14.         {
  15.  
  16.  
  17.             public string DeckAndType;
  18.             //   public string Type;  
  19.  
  20.  
  21.  
  22.         }
  23.         static Random rng = new Random();
  24.         public static void Shuffle<T>(this IList<T> list)
  25.         {
  26.             int n = list.Count;
  27.             while (n > 1)
  28.             {
  29.                 n--;
  30.                 int k = rng.Next(n + 1);
  31.                 T value = list[k];
  32.                 list[k] = list[n];
  33.                 list[n] = value;
  34.             }
  35.  
  36.         }
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.         static void Main(string[] args)
  44.         {
  45.             const string highcards = "JKQA";
  46.             List<Deck> decks = new List<Deck>();
  47.  
  48.             for (int j = 0; j < 4; j++)
  49.             {
  50.                 for (int i = 2; i <= 10; i++)
  51.                 {
  52.                     Deck deck = new Deck();
  53.                     switch (j)
  54.                     {
  55.                         case 0: deck.DeckAndType = Convert.ToString(i) + " h"; break;
  56.                         case 1: deck.DeckAndType = Convert.ToString(i) + " c"; break;
  57.                         case 2: deck.DeckAndType = Convert.ToString(i) + " d"; break;
  58.                         case 3: deck.DeckAndType = Convert.ToString(i) + " s"; break;
  59.                         default: throw new Exception();
  60.                     }
  61.                     decks.Add(deck);
  62.  
  63.  
  64.  
  65.                 }
  66.             }
  67.             for (int i = 0; i < highcards.Length; i++)
  68.             {
  69.                 for (int j = 0; j < highcards.Length; j++)
  70.                 {
  71.  
  72.                     Deck deck = new Deck();
  73.  
  74.                     switch (j)
  75.                     {
  76.                         case 0: deck.DeckAndType = highcards[i] + " h"; break;
  77.                         case 1: deck.DeckAndType = highcards[i] + " c"; break;
  78.                         case 2: deck.DeckAndType = highcards[i] + " d"; break;
  79.                         case 3: deck.DeckAndType = highcards[i] + " s"; break;
  80.                         default: throw new Exception();
  81.                     }
  82.  
  83.                     decks.Add(deck);
  84.  
  85.                 }
  86.  
  87.  
  88.  
  89.  
  90.             }
  91.             Random rnd = new Random();
  92.             decks.Shuffle();
  93.  
  94.             List<Deck> selectedCards = new List<Deck>();
  95.             int index = 0;
  96.             index = rnd.Next(0, decks.Count);
  97.             selectedCards.Add(decks[index]);
  98.             decks.RemoveAt(index);
  99.             index = rnd.Next(0, decks.Count);
  100.  
  101.             selectedCards.Add(decks[index]);
  102.             decks.RemoveAt(index);
  103.             List<Deck> selectedPlayerCards = new List<Deck>();
  104.             int index2 = 0;
  105.             index2 = rnd.Next(0, decks.Count);
  106.             selectedPlayerCards.Add(decks[index2]);
  107.             decks.RemoveAt(index2);
  108.  
  109.             index2 = rnd.Next(0, decks.Count);
  110.  
  111.             selectedPlayerCards.Add(decks[index2]);
  112.             decks.RemoveAt(index2);
  113.  
  114.             int valueP = 0;
  115.             int valueD = 0;
  116.  
  117.             switch (selectedPlayerCards[0].DeckAndType.Split(" ").FirstOrDefault())
  118.             {
  119.  
  120.                 case "A": valueP += 11; break;
  121.                 case "K": valueP += 10; break;
  122.                 case "Q": valueP += 10; break;
  123.                 case "J": valueP += 10; break;
  124.                 default: valueP += Convert.ToInt32(selectedPlayerCards[0].DeckAndType.Split(" ").FirstOrDefault()); break;
  125.  
  126.             }
  127.  
  128.             switch (selectedPlayerCards[1].DeckAndType.Split(" ").FirstOrDefault())
  129.             {
  130.  
  131.                 case "A": valueP += 11; break;
  132.                 case "K": valueP += 10; break;
  133.                 case "Q": valueP += 10; break;
  134.                 case "J": valueP += 10; break;
  135.                 default: valueP += Convert.ToInt32(selectedPlayerCards[1].DeckAndType.Split(" ").FirstOrDefault()); break;
  136.  
  137.             }
  138.  
  139.             switch (selectedCards[0].DeckAndType.Split(" ").FirstOrDefault())
  140.             {
  141.  
  142.                 case "A": valueD += 11; break;
  143.                 case "K": valueD += 10; break;
  144.                 case "Q": valueD += 10; break;
  145.                 case "J": valueD += 10; break;
  146.                 default: valueD += Convert.ToInt32(selectedCards[0].DeckAndType.Split(" ").FirstOrDefault()); break;
  147.  
  148.             }
  149.  
  150.             switch (selectedCards[1].DeckAndType.Split(" ").FirstOrDefault())
  151.             {
  152.  
  153.                 case "A": valueD += 11; break;
  154.                 case "K": valueD += 10; break;
  155.                 case "Q": valueD += 10; break;
  156.                 case "J": valueD += 10; break;
  157.                 default: valueD += Convert.ToInt32(selectedCards[1].DeckAndType.Split(" ").FirstOrDefault()); break;
  158.  
  159.             }
  160.  
  161.  
  162.             /*
  163.             if (selectedPlayerCards[0].DeckAndType.Split(" ").FirstOrDefault()=="A")
  164.             {
  165.                 value += 11;
  166.  
  167.             }
  168.             else
  169.             {
  170.  
  171.  
  172.                 value = Convert.ToInt32(selectedPlayerCards[0].DeckAndType.Split(" ").FirstOrDefault());
  173.  
  174.             }
  175.  
  176.             if (selectedPlayerCards[1].DeckAndType.Split(" ").FirstOrDefault() == "A")
  177.             {
  178.                 value += 11;
  179.  
  180.             }
  181.  
  182.             if (selectedPlayerCards[0].DeckAndType.Split(" ").FirstOrDefault() == "J" || selectedPlayerCards[0].DeckAndType.Split(" ").FirstOrDefault() == "Q" || selectedPlayerCards[0].DeckAndType.Split(" ").FirstOrDefault() == "K")
  183.             {
  184.                 value += 10;
  185.  
  186.             }
  187.             else
  188.             {
  189.  
  190.  
  191.                 value = Convert.ToInt32(selectedPlayerCards[1].DeckAndType.Split(" ").FirstOrDefault());
  192.  
  193.             }
  194.  
  195.             if (selectedPlayerCards[1].DeckAndType.Split(" ").FirstOrDefault() == "A")
  196.             {
  197.                 value += 11;
  198.  
  199.             }
  200.          
  201.  
  202.             if (selectedPlayerCards[1].DeckAndType.Split(" ").FirstOrDefault() == "J" || selectedPlayerCards[1].DeckAndType.Split(" ").FirstOrDefault() == "Q" || selectedPlayerCards[1].DeckAndType.Split(" ").FirstOrDefault() == "K")
  203.             {
  204.                 value += 10;
  205.  
  206.             }
  207.             else
  208.             {
  209.  
  210.                 value = Convert.ToInt32(selectedPlayerCards[1].DeckAndType.Split(" ").FirstOrDefault());
  211.  
  212.             }
  213.  
  214.             */
  215.             Console.ForegroundColor = ConsoleColor.Red;
  216.             Console.WriteLine("You have: " + valueP);
  217.             Console.ForegroundColor = ConsoleColor.Blue;
  218.             foreach (Deck deck in selectedPlayerCards)
  219.             {
  220.  
  221.                 Console.WriteLine(deck.DeckAndType);
  222.  
  223.  
  224.             }
  225.             Console.ForegroundColor = ConsoleColor.Red;
  226.             Console.WriteLine("Dealer has:  " + selectedCards[0].DeckAndType + " ?");
  227.             Console.ForegroundColor = ConsoleColor.Blue;
  228.             Console.WriteLine("Press C(Call), S(Stay)");
  229.             string value2 = Console.ReadLine();
  230.             int x = 2;
  231.             if (value2 == "C" || value2 == "c")
  232.  
  233.             {
  234.  
  235.  
  236.  
  237.                 while (true)
  238.                 {
  239.  
  240.  
  241.  
  242.                     index = rnd.Next(0, decks.Count);
  243.                     selectedPlayerCards.Add(decks[index]);
  244.                     decks.RemoveAt(index);
  245.                     switch (selectedPlayerCards[x].DeckAndType.Split(" ").FirstOrDefault())
  246.                     {
  247.  
  248.                         case "A": valueP += 11; break;
  249.                         case "K": valueP += 10; break;
  250.                         case "Q": valueP += 10; break;
  251.                         case "J": valueP += 10; break;
  252.                         default: valueP += Convert.ToInt32(selectedPlayerCards[x].DeckAndType.Split(" ").FirstOrDefault()); break;
  253.  
  254.                     }
  255.                     if (valueP > 21)
  256.                     {
  257.                         Console.WriteLine("Player draws: " + selectedPlayerCards[x].DeckAndType);
  258.                         Console.ForegroundColor = ConsoleColor.Red;
  259.  
  260.                         Console.WriteLine("Too much! Dealer wins! Player has: " + valueP);
  261.                         Console.ForegroundColor = ConsoleColor.Blue;
  262.                         break;
  263.  
  264.                     }
  265.  
  266.                     if (valueP == 21)
  267.                     {
  268.  
  269.                         Console.WriteLine("Player has 21");
  270.                         value2 = "S";
  271.                         break;
  272.                     }
  273.  
  274.                     Console.WriteLine("Player draws: " + selectedPlayerCards[x].DeckAndType);
  275.                     Console.WriteLine("Player has: " + valueP);
  276.                     x++;
  277.  
  278.                     if (Console.ReadLine() == "S")
  279.                     {
  280.  
  281.                         value2 = "S";
  282.                         break;
  283.                     }
  284.  
  285.  
  286.                 }
  287.  
  288.             }
  289.             if (value2 == "S" || value2 == "S")
  290.             {
  291.                 Console.WriteLine("Dealer has:  " + selectedCards[0].DeckAndType + " " + selectedCards[1].DeckAndType);
  292.                 Console.WriteLine("Dealer Has: " + valueD);
  293.                 int z = 2;
  294.                 while (valueD < 17)
  295.                 {
  296.  
  297.                     index = rnd.Next(0, decks.Count);
  298.                     selectedCards.Add(decks[index]);
  299.                     decks.RemoveAt(index);
  300.                     switch (selectedCards[z].DeckAndType.Split(" ").FirstOrDefault())
  301.                     {
  302.  
  303.                         case "A": valueD += 11; break;
  304.                         case "K": valueD += 10; break;
  305.                         case "Q": valueD += 10; break;
  306.                         case "J": valueD += 10; break;
  307.                         default: valueD += Convert.ToInt32(selectedCards[z].DeckAndType.Split(" ").FirstOrDefault()); break;
  308.  
  309.                     }
  310.                     Console.WriteLine("Dealer draws: " + selectedCards[z].DeckAndType);
  311.                     z++;
  312.  
  313.  
  314.  
  315.  
  316.                 }
  317.                 Console.WriteLine("Dealer has: " + valueD);
  318.  
  319.                 if ((valueD > valueP) && valueD <= 21)
  320.                 {
  321.  
  322.                     Console.WriteLine("Dealer Wins");
  323.  
  324.  
  325.                 }
  326.                 else if ((valueD < valueP) && valueP <= 21)
  327.                 {
  328.  
  329.                     Console.WriteLine("Player Wins");
  330.  
  331.  
  332.                 }
  333.                 else if ((valueD > 21) && valueP <= 21)
  334.                 {
  335.  
  336.                     Console.WriteLine("Player Wins");
  337.  
  338.                 }
  339.                 else
  340.                 {
  341.  
  342.                     Console.WriteLine("Draw!");
  343.  
  344.  
  345.                 }
  346.  
  347.  
  348.             }
  349.  
  350.  
  351.             /*
  352.                  foreach (var item in decks)
  353.                   {
  354.                       Console.WriteLine(item.DeckAndType);
  355.                   }
  356.  
  357.             */
  358.  
  359.             Console.WriteLine("______________");
  360.             Console.WriteLine("Used card number: " + (52 - decks.Count));
  361.  
  362.         }
  363.     }
  364. }
  365.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement