I know nothing about programming for Adobe Flash but, if it helps you with the logic, here's how you could do the same thing in a C# console application:
do { int players = 0; while (true) { Console.Write("\nHow many players (4 to 6) : "); int.TryParse(Console.ReadLine(), out players); if (players < 4 || players > 6) { Console.WriteLine("Invalid number, try again\n"); } else { break; } } int numCards = 2; // two cards per player
// create a 2D array to hold cards for each player int[,] cards = new int[players, numCards];
// shuffle a new deck Card[] deck = Card.ShuffleDeck();
// deal same number of cards to each player int next = 0; for (int i = 0; i < players; i++) { for (int j = 0; j < numCards; j++) { cards[i, j] = next; // number of card in deck next++; } }
// display each player's cards Console.WriteLine("\nThe cards held by each player are as follows"); for (int i = 0; i < players; i++) { Console.Write("\n Player {0} :", i + 1); for (int j = 0; j < numCards; j++) { Console.Write("{0,4}", deck[cards[i, j]].ToString()); } Console.WriteLine(); }
// deal the cards again? string answer; do { Console.Write("\nAnother deal y/n : "); answer = Console.ReadLine().ToLower(); } while (answer != "y" && answer != "n"); anotherDeal = (answer == "y"); } while (anotherDeal);
Console.Clear(); } }
public class Card { static Random rand = new Random(); string suit; int number;
public string Suit { get { return suit; } }
public int Number { get { return number; } } public Card(string s, int n) { suit = s; number = n; } private Card(int cardNum) { switch (cardNum / 13) { case 0: suit = "clubs"; break; case 1: suit = "diamonds"; break; case 2: suit = "hearts"; break; case 3: suit = "spades"; break; } number = cardNum % 13 + 1; } public static Card[] ShuffleDeck() { Card[] deck = new Card[52]; int[] newCards = new int[52]; // all elements set to 0 by default bool[] alreadyDrawn = new bool[52]; // all elements set to false by default int count = 0; int cardNum = 0; while (count < 52) { cardNum = rand.Next(0, 52); // random number between 0 and 51 if (alreadyDrawn[cardNum] == false) { newCards[count++] = cardNum; alreadyDrawn[cardNum] = true; } } for (int i = 0; i < 52; i++) { deck[i] = new Card(newCards[i]); }
return deck; } public override string ToString() { string name; switch (number) { case 1: name = "A"; break; case 11: name = "J"; break; case 12: name = "Q"; break; case 13: name = "K"; break; default: name = number.ToString(); break; } return name + suit.ToUpper()[0]; } public string ToLongString() { string name; switch (number) { case 1: name = "Ace"; break; case 11: name = "Jack"; break; case 12: name = "Queen"; break; case 13: name = "King"; break; default: name = number.ToString(); break; } return name + " of " + suit; } } }
1 answers
I know nothing about programming for Adobe Flash but, if it helps you with the logic, here's how you could do the same thing in a C# console application:
answered one year ago by:
17279