using System.Collections.Generic;
using System.Text.RegularExpressions;
private static Game game;
public static void Main()
var gameService = new GameService();
gameService.CreateGame();
game.Players = GetPlayers();
foreach (var player in game.Players)
Console.WriteLine($"{player.ID} {player.Name}");
var cardService = new CardService();
var shuffledDeck = cardService.GetShuffledDeck();
foreach (var card in shuffledDeck)
Console.WriteLine($"{card.Value.DisplayText}{card.Suit.DisplayText}");
private IEnumerable<User> GetPlayers()
yield return new User(){ID = 1, Name = "Current User"};
for (var i = 0; i < numberOfPlayers - 1; i++)
yield return new User() { ID = i + 2, Name = "User " + (i + 2)};
public IEnumerable<Card> GetShuffledDeck()
var deck = GetDeck().ToArray();
public IEnumerable<Card> GetDeck()
var numericValues = Enumerable.Range(2, 9).Select(r => new CardValue() { Value = r, DisplayText = r.ToString()});
var alphaNumericValues = new CardValue[] {
new CardValue() { Value = 11, DisplayText = "J" },
new CardValue() { Value = 12, DisplayText = "Q" },
new CardValue() { Value = 13, DisplayText = "K" },
new CardValue() { Value = 14, DisplayText = "A" },
var values = numericValues.Concat(alphaNumericValues);
var suits = new SuitInformation[]
new SuitInformation() { Suit = Suit.Spades, DisplayText = "Spades", Value = 1 },
new SuitInformation() { Suit = Suit.Diamonds, DisplayText = "Diamonds", Value = 0 },
new SuitInformation() { Suit = Suit.Hearts, DisplayText = "Hearts", Value = 0 },
new SuitInformation() { Suit = Suit.Clubs, DisplayText = "Clubs", Value = 0 },
foreach (var suit in suits)
foreach (var card in values)
static Random r = new Random();
public IEnumerable<Card> Shuffle(IEnumerable<Card> deckToShuffle)
var deck = deckToShuffle.ToArray();
for (int n = deck.Length - 1; n > 0; --n)
public IEnumerable<User> Players {get; set;}
public int ID {get; set;}
public string Name {get; set;}
public int ID { get; set; }
public SuitInformation Suit { get; set; }
public CardValue Value { get; set; }
public class SuitInformation
public int Value { get; set;}
public Suit Suit {get; set;}
public string DisplayText { get; set; }
public int Value {get; set;}
public string DisplayText {get; set;}