diff --git a/Resources/images/Cards.png b/Resources/images/Cards.png index a2a97b70..a22a871c 100644 Binary files a/Resources/images/Cards.png and b/Resources/images/Cards.png differ diff --git a/Resources/images/cardsBoard.png b/Resources/images/cardsBoard.png new file mode 100644 index 00000000..23f715a5 Binary files /dev/null and b/Resources/images/cardsBoard.png differ diff --git a/src/GameLogic/Deck.cs b/src/GameLogic/Deck.cs index 4b30d8f8..9e532f37 100644 --- a/src/GameLogic/Deck.cs +++ b/src/GameLogic/Deck.cs @@ -54,7 +54,21 @@ public int CardsRemaining /// public void Shuffle() { - //TODO: implement shuffle! + for(int i = 0; i < 52; i++) + { + if(_cards[i].FaceUp) _cards[i].TurnOver(); + } + Random rnd = new Random(); + // for each card (no need to shuffle last card) + for(int i = 0; i < 52 - 1; i++) + { + // pick a random index + int rndIdx = rnd.Next(52 - i); + Card temp = _cards[i]; + _cards[i] = _cards[i + rndIdx]; + _cards[i + rndIdx] = temp; + } + _topCard = 0; } /// diff --git a/src/GameLogic/Snap.cs b/src/GameLogic/Snap.cs index 42894a1a..ba8fdf6f 100644 --- a/src/GameLogic/Snap.cs +++ b/src/GameLogic/Snap.cs @@ -37,6 +37,7 @@ public class Snap public Snap () { _deck = new Deck (); + _gameTimer = SwinGame.CreateTimer (); } /// @@ -92,6 +93,7 @@ public void Start() _deck.Shuffle (); // Return the cards and shuffle FlipNextCard (); // Flip the first card... + _gameTimer.Start(); } } @@ -112,6 +114,11 @@ public void FlipNextCard() public void Update() { //TODO: implement update to automatically slip cards! + if (_gameTimer.Ticks > _flipTime) + { + _gameTimer.Reset (); + FlipNextCard (); + } } /// @@ -143,6 +150,7 @@ public void PlayerHit (int player) // stop the game... _started = false; + _gameTimer.Stop (); } #region Snap Game Unit Tests diff --git a/src/SnapGame.cs b/src/SnapGame.cs index ec78e907..441c74f8 100644 --- a/src/SnapGame.cs +++ b/src/SnapGame.cs @@ -10,7 +10,7 @@ public static void LoadResources() { Bitmap cards; cards = SwinGame.LoadBitmapNamed ("Cards", "Cards.png"); - SwinGame.BitmapSetCellDetails (cards, 82, 110, 13, 5, 53); // set the cells in the bitmap to match the cards + SwinGame.BitmapSetCellDetails (cards, 167, 250, 13, 5, 53); // set the cells in the bitmap to match the cards } /// @@ -24,7 +24,7 @@ private static void HandleUserInput(Snap myGame) if (SwinGame.KeyTyped (KeyCode.vk_SPACE)) { - myGame.FlipNextCard (); + myGame.Start (); } } @@ -34,7 +34,7 @@ private static void HandleUserInput(Snap myGame) /// The details of the game -- mostly top card and scores. private static void DrawGame(Snap myGame) { - SwinGame.ClearScreen(Color.White); + SwinGame.DrawBitmap("cardsBoard.png", 0, 0); // Draw the top card Card top = myGame.TopCard; @@ -43,11 +43,12 @@ private static void DrawGame(Snap myGame) SwinGame.DrawText ("Top Card is " + top.ToString (), Color.RoyalBlue, 0, 20); SwinGame.DrawText ("Player 1 score: " + myGame.Score(0), Color.RoyalBlue, 0, 30); SwinGame.DrawText ("Player 2 score: " + myGame.Score(1), Color.RoyalBlue, 0, 40); - SwinGame.DrawCell (SwinGame.BitmapNamed ("Cards"), top.CardIndex, 350, 50); + SwinGame.DrawCell (SwinGame.BitmapNamed ("Cards"), top.CardIndex, 521, 153); + } else { - SwinGame.DrawText ("No card played yet...", Color.RoyalBlue, 0, 20); + SwinGame.DrawCell (SwinGame.BitmapNamed ("Cards"), 52, 155, 153); } // Draw the back of the cards... to represent the deck