c# - Create deck of card using multiple enums -
this question has answer here:
- best way represent game card class in c# 7 answers
- what best way have score value cards in deck 3 answers
i have made following code create deck of cards using 2 enums , switch statement. not think switch statement elegant solution. question is, therefore: possible avoid switch statement looping through enum?
the variable value31 used stored value cards have in game of "31".
namespace cardgame31 { public enum suitpossiblevalues { clubs, diamonds, hearts, spades }; public enum rankpossiblevalues { two, three, four, five, six, seven, eight, nine, ten, jack, queen, king, ace }; class program { static void main(string[] args) { carddeck mycarddeck = new carddeck(); } } class carddeck { list<card> carddecklist = new list<card>(); public carddeck() { foreach (suitpossiblevalues colourpossiblevalues in enum.getvalues(typeof(suitpossiblevalues))) { foreach (rankpossiblevalues namepossiblevalues in enum.getvalues(typeof(rankpossiblevalues))) { card nextcard = new card(colourpossiblevalues.tostring(), namepossiblevalues.tostring()); carddecklist.add(nextcard); } } } } class card { public string colour { get; } public string name { get; } public int value31 { get; } public card(string colour, string name) { colour = colour; name = name; switch (name) { case ("two"): value31 = 2; break; case ("three"): value31 = 3; break; case ("four"): value31 = 4; break; case ("five"): value31 = 5; break; case ("six"): value31 = 6; break; case ("seven"): value31 = 7; break; case ("eight"): value31 = 8; break; case ("nine"): value31 = 9; break; case ("ten"): value31 = 10; break; case ("jack"): value31 = 10; break; case ("queen"): value31 = 10; break; case ("king"): value31 = 10; break; case ("ace"): value31 = 11; break; default: throw new system.argumentoutofrangeexception("name", "name should have 1 of following values: two, three, four, five, six, seven, eight, nine, ten, jack, queen, king, ace"); } } }
}
you can assign value directly in enum
declaration following:
public enum rankpossiblevalues { 2 =2, three=3, four=4, five=5, six=6, seven=7, eight=8, nine=9, ten=10, jack=11, queen=12, king=13, ace=14 };
then can underlying integer value simple int
cast in example shown below:
int _value31 = (int)rankpossiblevalues.two;
hope help.
Comments
Post a Comment