Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Shufftler_ver01
- {
- class Program
- {
- static void Main(string[] args)
- {
- Random holyRandom = new Random();
- int suitsQuantity = 4;
- int cardsQuantity = 52;
- int cardsLine = cardsQuantity / suitsQuantity;
- string[] pockerDeckRu;
- string[] shuffledDeck;
- string[,] swapRandomlyDeck = new string[suitsQuantity, cardsLine];
- string[,] swapEndToEndDeck;
- Console.WriteLine($"Новая покерная колода на {cardsQuantity} карты.\n");
- string[,] pockerDeck = GetCardDeck(out pockerDeckRu, suitsQuantity, cardsQuantity, cardsLine);
- Console.WriteLine($"\nПеремешивание колоды путем смены мест двух случайных карт. Возврат колоды через ref.\n");
- SwapCardsRandomly(pockerDeck, holyRandom, ref swapRandomlyDeck);
- Console.WriteLine($"\nПеремешивание колоды путем смены места порядковой карты (от 1 до последней) со случайно выбранной картой. Возврат колоды через out.\n");
- SwapCardsEndToEnd(pockerDeck, holyRandom, out swapEndToEndDeck);
- Console.WriteLine($"\nПеремешивание колоды путем заполнения основного массива случайной картой и ее удаление из буферного массива. Возврат колоды через return.\n");
- shuffledDeck = ShuffleReduceArray(pockerDeckRu, holyRandom);
- }
- static string[,] GetCardDeck(out string[] pockerDeckRu, int suitsQuantity, int cardsQuantity, int cardsLine)
- {
- char heart = (char)3;
- char diamond = (char)4;
- char club = (char)5;
- char spade = (char)6;
- string jack = "J";
- string queen = "Q";
- string king = "K";
- string ace = "A";
- string jackRu = "В";
- string queenRu = "Д";
- string kingRu = "К";
- string aceRu = "Т";
- int lineIndex = 0;
- string[,] pockerDeck = new string[suitsQuantity, cardsLine];
- pockerDeckRu = new string[cardsQuantity];
- char[] suitsLine = { spade, club, heart, diamond };
- string[] pockerLineEng = { "2", "3", "4", "5", "6", "7", "8", "9", "10", jack, queen, king, ace };
- string[] pockerLineRu = { "2", "3", "4", "5", "6", "7", "8", "9", "10", jackRu, queenRu, kingRu, aceRu };
- for (int i = 0; i < suitsLine.Length; i++)
- {
- for (int j = 0; j < pockerLineEng.Length; j++)
- {
- pockerDeck[i, j] = pockerLineEng[j] + suitsLine[i];
- pockerDeckRu[lineIndex] = pockerLineRu[j] + suitsLine[i];
- lineIndex++;
- Console.Write($"{pockerDeck[i, j]} ");
- }
- Console.WriteLine($"");
- }
- return pockerDeck;
- }
- static void SwapCardsRandomly(string[,] pockerDeck, Random holyRandom, ref string[,] swapRandomlyDeck)
- {
- int startRow;
- int endRow;
- int startColumn;
- int endColumn;
- string startCard;
- string endCard;
- swapRandomlyDeck = pockerDeck;
- for (int i = 0; i < 100; i++)
- {
- startRow = holyRandom.Next(0, pockerDeck.GetLength(0));
- endRow = holyRandom.Next(0, pockerDeck.GetLength(0));
- startColumn = holyRandom.Next(0, pockerDeck.GetLength(1));
- endColumn = holyRandom.Next(0, pockerDeck.GetLength(1));
- startCard = swapRandomlyDeck[startRow, startColumn];
- endCard = swapRandomlyDeck[endRow, endColumn];
- swapRandomlyDeck[startRow, startColumn] = endCard;
- swapRandomlyDeck[endRow, endColumn] = startCard;
- }
- for (int i = 0; i < swapRandomlyDeck.GetLength(0); i++)
- {
- for (int j = 0; j < swapRandomlyDeck.GetLength(1); j++)
- {
- Console.Write($" {swapRandomlyDeck[i, j]}");
- }
- Console.WriteLine();
- }
- }
- static void SwapCardsEndToEnd(string[,] pockerDeck, Random holyRandom, out string[,] swapEndToEndDeck)
- {
- swapEndToEndDeck = pockerDeck;
- int randomRow;
- int randomColumn;
- string currentCard;
- string randomCard;
- for (int i = 0; i < swapEndToEndDeck.GetLength(0); i++)
- {
- for (int j = 0; j < swapEndToEndDeck.GetLength(1); j++)
- {
- randomRow = holyRandom.Next(0, swapEndToEndDeck.GetLength(0));
- randomColumn = holyRandom.Next(0, swapEndToEndDeck.GetLength(1));
- currentCard = swapEndToEndDeck[i, j];
- randomCard = swapEndToEndDeck[randomRow, randomColumn];
- swapEndToEndDeck[i, j] = randomCard;
- swapEndToEndDeck[randomRow, randomColumn] = currentCard;
- }
- }
- for (int i = 0; i < swapEndToEndDeck.GetLength(0); i++)
- {
- for (int j = 0; j < swapEndToEndDeck.GetLength(1); j++)
- {
- Console.Write($" {swapEndToEndDeck[i, j]}");
- }
- Console.WriteLine();
- }
- }
- static string[] ShuffleReduceArray(string[] pockerDeckRu, Random holyRandom)
- {
- string[] shuffledDeck = new string[pockerDeckRu.Length];
- int randomCard;
- for (int i = 0; i < shuffledDeck.Length; i++)
- {
- randomCard = holyRandom.Next(0, pockerDeckRu.Length);
- shuffledDeck[i] = pockerDeckRu[randomCard];
- string[] tempPockerDeckRu = new string[pockerDeckRu.Length - 1];
- int jj = 0;
- for (int j = 0; j < tempPockerDeckRu.Length; j++)
- {
- if (j == randomCard)
- {
- ++jj;
- }
- tempPockerDeckRu[j] = pockerDeckRu[jj];
- jj++;
- }
- pockerDeckRu = tempPockerDeckRu;
- Console.Write($" {shuffledDeck[i]},");
- }
- return shuffledDeck;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement