Advertisement
OldBeliver

Function_05ver01

Mar 30th, 2021
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.79 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Shufftler_ver01
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Random holyRandom = new Random();
  14.             int suitsQuantity = 4;
  15.             int cardsQuantity = 52;
  16.             int cardsLine = cardsQuantity / suitsQuantity;
  17.  
  18.             string[] pockerDeckRu;
  19.             string[] shuffledDeck;
  20.             string[,] swapRandomlyDeck = new string[suitsQuantity, cardsLine];
  21.             string[,] swapEndToEndDeck;
  22.  
  23.             Console.WriteLine($"Новая покерная колода на {cardsQuantity} карты.\n");
  24.             string[,] pockerDeck = GetCardDeck(out pockerDeckRu, suitsQuantity, cardsQuantity, cardsLine);
  25.  
  26.             Console.WriteLine($"\nПеремешивание колоды путем смены мест двух случайных карт. Возврат колоды через ref.\n");
  27.             SwapCardsRandomly(pockerDeck, holyRandom, ref swapRandomlyDeck);
  28.  
  29.             Console.WriteLine($"\nПеремешивание колоды путем смены места порядковой карты (от 1 до последней) со случайно выбранной картой. Возврат колоды через out.\n");
  30.             SwapCardsEndToEnd(pockerDeck, holyRandom, out swapEndToEndDeck);
  31.  
  32.             Console.WriteLine($"\nПеремешивание колоды путем заполнения основного массива случайной картой и ее удаление из буферного массива. Возврат колоды через return.\n");
  33.             shuffledDeck = ShuffleReduceArray(pockerDeckRu, holyRandom);
  34.         }
  35.  
  36.         static string[,] GetCardDeck(out string[] pockerDeckRu, int suitsQuantity, int cardsQuantity, int cardsLine)
  37.         {
  38.             char heart = (char)3;
  39.             char diamond = (char)4;
  40.             char club = (char)5;
  41.             char spade = (char)6;
  42.             string jack = "J";
  43.             string queen = "Q";
  44.             string king = "K";
  45.             string ace = "A";
  46.             string jackRu = "В";
  47.             string queenRu = "Д";
  48.             string kingRu = "К";
  49.             string aceRu = "Т";
  50.             int lineIndex = 0;
  51.  
  52.             string[,] pockerDeck = new string[suitsQuantity, cardsLine];
  53.             pockerDeckRu = new string[cardsQuantity];
  54.  
  55.             char[] suitsLine = { spade, club, heart, diamond };
  56.             string[] pockerLineEng = { "2", "3", "4", "5", "6", "7", "8", "9", "10", jack, queen, king, ace };
  57.             string[] pockerLineRu = { "2", "3", "4", "5", "6", "7", "8", "9", "10", jackRu, queenRu, kingRu, aceRu };
  58.  
  59.             for (int i = 0; i < suitsLine.Length; i++)
  60.             {
  61.                 for (int j = 0; j < pockerLineEng.Length; j++)
  62.                 {
  63.                     pockerDeck[i, j] = pockerLineEng[j] + suitsLine[i];
  64.                     pockerDeckRu[lineIndex] = pockerLineRu[j] + suitsLine[i];
  65.                     lineIndex++;
  66.                     Console.Write($"{pockerDeck[i, j]} ");
  67.                 }
  68.                 Console.WriteLine($"");
  69.             }
  70.  
  71.             return pockerDeck;
  72.         }
  73.  
  74.         static void SwapCardsRandomly(string[,] pockerDeck, Random holyRandom, ref string[,] swapRandomlyDeck)
  75.         {
  76.             int startRow;
  77.             int endRow;
  78.             int startColumn;
  79.             int endColumn;
  80.             string startCard;
  81.             string endCard;
  82.  
  83.             swapRandomlyDeck = pockerDeck;
  84.  
  85.             for (int i = 0; i < 100; i++)
  86.             {
  87.                 startRow = holyRandom.Next(0, pockerDeck.GetLength(0));
  88.                 endRow = holyRandom.Next(0, pockerDeck.GetLength(0));
  89.                 startColumn = holyRandom.Next(0, pockerDeck.GetLength(1));
  90.                 endColumn = holyRandom.Next(0, pockerDeck.GetLength(1));
  91.  
  92.                 startCard = swapRandomlyDeck[startRow, startColumn];
  93.                 endCard = swapRandomlyDeck[endRow, endColumn];
  94.  
  95.                 swapRandomlyDeck[startRow, startColumn] = endCard;
  96.                 swapRandomlyDeck[endRow, endColumn] = startCard;
  97.             }
  98.  
  99.             for (int i = 0; i < swapRandomlyDeck.GetLength(0); i++)
  100.             {
  101.                 for (int j = 0; j < swapRandomlyDeck.GetLength(1); j++)
  102.                 {
  103.                     Console.Write($" {swapRandomlyDeck[i, j]}");
  104.                 }
  105.                 Console.WriteLine();
  106.             }
  107.         }
  108.  
  109.         static void SwapCardsEndToEnd(string[,] pockerDeck, Random holyRandom, out string[,] swapEndToEndDeck)
  110.         {
  111.             swapEndToEndDeck = pockerDeck;
  112.             int randomRow;
  113.             int randomColumn;
  114.             string currentCard;
  115.             string randomCard;
  116.  
  117.             for (int i = 0; i < swapEndToEndDeck.GetLength(0); i++)
  118.             {
  119.                 for (int j = 0; j < swapEndToEndDeck.GetLength(1); j++)
  120.                 {
  121.                     randomRow = holyRandom.Next(0, swapEndToEndDeck.GetLength(0));
  122.                     randomColumn = holyRandom.Next(0, swapEndToEndDeck.GetLength(1));
  123.  
  124.                     currentCard = swapEndToEndDeck[i, j];
  125.                     randomCard = swapEndToEndDeck[randomRow, randomColumn];
  126.  
  127.                     swapEndToEndDeck[i, j] = randomCard;
  128.                     swapEndToEndDeck[randomRow, randomColumn] = currentCard;
  129.                 }
  130.             }
  131.  
  132.             for (int i = 0; i < swapEndToEndDeck.GetLength(0); i++)
  133.             {
  134.                 for (int j = 0; j < swapEndToEndDeck.GetLength(1); j++)
  135.                 {
  136.                     Console.Write($" {swapEndToEndDeck[i, j]}");
  137.                 }
  138.                 Console.WriteLine();
  139.             }
  140.         }
  141.  
  142.         static string[] ShuffleReduceArray(string[] pockerDeckRu, Random holyRandom)
  143.         {
  144.             string[] shuffledDeck = new string[pockerDeckRu.Length];
  145.             int randomCard;
  146.  
  147.             for (int i = 0; i < shuffledDeck.Length; i++)
  148.             {
  149.                 randomCard = holyRandom.Next(0, pockerDeckRu.Length);
  150.                 shuffledDeck[i] = pockerDeckRu[randomCard];
  151.  
  152.                 string[] tempPockerDeckRu = new string[pockerDeckRu.Length - 1];
  153.                 int jj = 0;
  154.  
  155.                 for (int j = 0; j < tempPockerDeckRu.Length; j++)
  156.                 {
  157.                     if (j == randomCard)
  158.                     {
  159.                         ++jj;
  160.                     }
  161.                     tempPockerDeckRu[j] = pockerDeckRu[jj];
  162.                     jj++;
  163.                 }
  164.                 pockerDeckRu = tempPockerDeckRu;
  165.                 Console.Write($" {shuffledDeck[i]},");
  166.             }
  167.             return shuffledDeck;
  168.         }
  169.     }
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement