| | |
[C#] Project War(The Card Game)
Please support our C# advertiser: Intel Parallel Studio Home
![]() |
•
•
Join Date: Aug 2008
Posts: 33
Reputation:
Solved Threads: 1
Hello all, and happy fourth.
First off, I've been trying to create this little app for quite some time now and I've gotten pretty far as the code just "came" to me the other day. So I've gotten... I'd say about 80% done with this project but I am having most likely a huge problem with my WarBattle() Method(which is located in the War class).
Problems:
1. It seems that every time I run the game and the same face value card is drawn for both players they enter the WarBattle stage... Now this part isn't the problem(Enter WarBattle) its that every time I try to burn 3 cards of each players hand/deck it doesn't seem to return those cards of which were burned...
2. Now with the above problem stated I run the game in a while() loop so that I can test if the game will end... Eventually. But thus far I have yet to succede. I tried to run the test but I removed the WarBattle Function. So If the cards drawn were the same the cards were returned to the users deck. I ran this test for about 2 hours and still no end result. So I stopped it and I ran a benchmark test to see how many battles occured in certain time span(3 minutes was the testing length) I ran the test using the System.Diagnostics.StopWatch Namespace. The results came back to show that Approximatly(Averaged) 107.68 Million battles were conducted in that time span. The Diagnostics part of the test along with the removed WarBattle Functions has been opted out of my code so it won't be too confusing.
What I'm asking. Can you(anyone) help me solve the WarBattle() Method or the checks that go into the while() loop in the War Class.
Greatly appreciated!
--- Poab9200, Happy 4th!
First off, I've been trying to create this little app for quite some time now and I've gotten pretty far as the code just "came" to me the other day. So I've gotten... I'd say about 80% done with this project but I am having most likely a huge problem with my WarBattle() Method(which is located in the War class).
Problems:
1. It seems that every time I run the game and the same face value card is drawn for both players they enter the WarBattle stage... Now this part isn't the problem(Enter WarBattle) its that every time I try to burn 3 cards of each players hand/deck it doesn't seem to return those cards of which were burned...
2. Now with the above problem stated I run the game in a while() loop so that I can test if the game will end... Eventually. But thus far I have yet to succede. I tried to run the test but I removed the WarBattle Function. So If the cards drawn were the same the cards were returned to the users deck. I ran this test for about 2 hours and still no end result. So I stopped it and I ran a benchmark test to see how many battles occured in certain time span(3 minutes was the testing length) I ran the test using the System.Diagnostics.StopWatch Namespace. The results came back to show that Approximatly(Averaged) 107.68 Million battles were conducted in that time span. The Diagnostics part of the test along with the removed WarBattle Functions has been opted out of my code so it won't be too confusing.
What I'm asking. Can you(anyone) help me solve the WarBattle() Method or the checks that go into the while() loop in the War Class.
Greatly appreciated!
--- Poab9200, Happy 4th!
C# Syntax (Toggle Plain Text)
using System; using System.Collections.Generic; using System.Text; namespace new_theroy { public enum Suit { Diamonds, Spades, Clubs, Hearts } public enum FaceValue { Two = 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 } public class Card { // Members/Fields private readonly Suit suit; private readonly FaceValue faceVal; // Properties public Suit Suit { get { return suit; } } public FaceValue FaceVal { get { return faceVal; } } // Constructor public Card(Suit suit, FaceValue faceVal) { this.suit = suit; this.faceVal = faceVal; } // Override public override string ToString() { return "The " + faceVal.ToString() + " of " + suit.ToString(); } } public class Deck { // Members/Fields private string sDeck; protected List<Card> cards = new List<Card>(); // Properties public Card this[int position] { get { return (Card)cards[position]; } } public int Cards { get { return cards.Count; } } // Constructor public Deck() { foreach (Suit s in Enum.GetValues(typeof(Suit))) { foreach (FaceValue f in Enum.GetValues(typeof(FaceValue))) { cards.Add(new Card(s, f)); } } } // Public Methods public Card Draw() { Card card = cards[0]; cards.RemoveAt(0); return card; } public void Shuffle() { Random random = new Random(); for (int i = 0; i < cards.Count; i++) { int index1 = i; int index2 = random.Next(cards.Count); SwapCard(index1, index2); } } public void Shuffle(int SuffleAmount) { if (SuffleAmount == 0) { throw new ArgumentException("You must shuffle at least once"); } else { Random random = new Random(); for (int n = 0; n != SuffleAmount; n++) { for (int i = 0; i < cards.Count; i++) { int index1 = i; int index2 = random.Next(cards.Count); SwapCard(index1, index2); } } } } // Private Method private void SwapCard(int index1, int index2) { Card card = cards[index1]; cards[index1] = cards[index2]; cards[index2] = card; } // Override public override string ToString() { foreach (Card c in cards) { sDeck += string.Format("{0}\n", c); } return sDeck; } } public class Hand { // Members/Fields protected List<Card> cards = new List<Card>(); // Properties public int NumCards { get { return cards.Count; } } public List<Card> Cards { get { return cards; } } // Public Method public bool ContainsCard(FaceValue item) { foreach (Card c in cards) { if (c.FaceVal == item) { return true; } } return false; } } public class Player { // Members/Fields private string sDeck; private Deck curDeck; private List<Card> cards = new List<Card>(); // Properties public Deck CurrentDeck { get { return curDeck; } set { curDeck = value; } } public int CardCount { get { return cards.Count; } } // Public Methods public void AddCard(Card c) { cards.Add(c); } public Card RemCard() { Card card = cards[0]; cards.RemoveAt(0); return card; } // Override public override string ToString() { foreach (Card c in cards) { sDeck += string.Format("{0}\n", c); } return sDeck; } } public class Deal { // Members/Fields private Deck deck = new Deck(); // Properties public Deck GetDeck { get { return deck; } } // Public Methods public void DealCards(Player p1, Player p2) { deck.Shuffle(10); for (int i = 0; i != 26; i++) { p1.AddCard(deck.Draw()); p2.AddCard(deck.Draw()); } } } public class War { // Members/Fields private Player player1 = new Player(); private Player player2 = new Player(); private Deal dealCards = new Deal(); private int BattleCount = 0; private string sStatus = ""; // Constructors public War() { dealCards.DealCards(player1, player2); // Start The Game } // Public Methods public void PlayGame() { while (player1.CardCount != 0 | player1.CardCount != 52) { Battle(player1, player2); // Battle BattleCount++; // Keep count of the number of battles if (sStatus == "!!! War !!!") { sStatus = WarBattle(player1, player2); // } if (player1.CardCount == 0) Console.WriteLine("Player 2 Wins"); if (player1.CardCount == 52) Console.WriteLine("Player 1 Wins"); } } // Private Methods private string Battle(Player p1, Player p2) { Card p1Card = p1.RemCard(); Card p2Card = p2.RemCard(); //Console.WriteLine(string.Format("\nPlayer 1 Draws : {0}", p1Card)); //Console.WriteLine(string.Format("Player 2 Draws : {0}", p2Card)); if (p1Card.FaceVal > p2Card.FaceVal) { p1.AddCard(p1Card); p1.AddCard(p2Card); return "Player 1 has won!"; } else if (p2Card.FaceVal > p1Card.FaceVal) { p2.AddCard(p2Card); p2.AddCard(p1Card); return "Player 2 has won!"; } else if (p1Card.FaceVal == p2Card.FaceVal) { // Were doing this until I can figure out a way to fix the War Method p1.AddCard(p1Card); p2.AddCard(p2Card); return "!!! War !!!"; } else { return "eRR"; } } private string WarBattle(Player p1, Player p2) { // Burn both player's cards Card p1Burn1 = p1.RemCard(); Card p1Burn2 = p1.RemCard(); Card p1Burn3 = p1.RemCard(); Card p2Burn1 = p2.RemCard(); Card p2Burn2 = p2.RemCard(); Card p2Burn3 = p2.RemCard(); // Draw the 'battle card' Card p1Card = p1.RemCard(); Card p2Card = p2.RemCard(); // Display whats going on Console.WriteLine(string.Format("\nPlayer 1 Burns 3 Cards and Draws : {0}", p1Card)); Console.WriteLine(string.Format("Player 2 Burns 3 Cards and Draws : {0}", p2Card)); if (p1Card.FaceVal > p2Card.FaceVal) { // First add the battle cards p1.AddCard(p1Card); p1.AddCard(p2Card); // Then add the burn cards p1.AddCard(p1Burn1); p1.AddCard(p1Burn2); p1.AddCard(p1Burn3); p1.AddCard(p2Burn1); p1.AddCard(p2Burn2); p1.AddCard(p2Burn3); return "Player 1 has won!"; } else if (p2Card.FaceVal > p1Card.FaceVal) { // First add the battle cards p2.AddCard(p1Card); p2.AddCard(p2Card); // Then add the burn cards p2.AddCard(p2Burn1); p2.AddCard(p2Burn2); p2.AddCard(p2Burn3); p2.AddCard(p1Burn1); p2.AddCard(p1Burn2); p2.AddCard(p1Burn3); return "Player 2 has won!"; } else if (p1Card.FaceVal == p2Card.FaceVal) { return "!!! War !!!"; } else { return "eRR"; } } } class Program { static void Main(string[] args) { War w = new War(); w.PlayGame(); } } }
![]() |
Similar Threads
- Cheat card game python project (Python)
- C++ card game war (C++)
- Making War card game (C)
- War card game (Java)
- card game (Java)
- Card Game (Java)
Other Threads in the C# Forum
- Previous Thread: using radiobutton in messagebox
- Next Thread: Lines per Day
| Thread Tools | Search this Thread |
.net access algorithm angle array barchart bitmap box broadcast c# capturing check checkbox client combobox control conversion convert csharp custom database datagrid datagridview dataset datetime dbconnection degrees delegate design development disappear draganddrop drawing encryption enum event excel file firefox form format forms function gdi+ httpwebrequest image index input install java label leak libraries list listbox mandelbrot math monodevelop mouseclick msword mysql operator path pause photoshop picturebox pixelinversion post programming radians regex remote remoting richtextbox round server sleep socket sql statistics stream string table tcpclientchannel text textbox thread time timer update usercontrol validation virtualization visualbasic visualstudio webbrowser windows winforms wpf xml





