diff --git a/Resources/fonts/Chunkfive.otf b/Resources/fonts/Chunkfive.otf new file mode 100644 index 000000000..7711f20f9 Binary files /dev/null and b/Resources/fonts/Chunkfive.otf differ diff --git a/Resources/images/Cards.png b/Resources/images/Cards.png index a2a97b70a..a22a871cf 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 000000000..23f715a57 Binary files /dev/null and b/Resources/images/cardsBoard.png differ diff --git a/Resources/sounds/slap.wav b/Resources/sounds/slap.wav new file mode 100644 index 000000000..c9cd727b1 Binary files /dev/null and b/Resources/sounds/slap.wav differ diff --git a/src/GameLogic/Snap.cs b/src/GameLogic/Snap.cs index 42894a1a7..63ac9521d 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,10 @@ public void FlipNextCard() public void Update() { //TODO: implement update to automatically slip cards! + if (_gameTimer.Ticks > _flipTime) + { + _gameTimer.Reset (); FlipNextCard (); + } } /// @@ -133,16 +139,24 @@ public int Score(int idx) public void PlayerHit (int player) { //TODO: consider deducting score for miss hits??? - if ( player >= 0 && player < _score.Length && // its a valid player - IsStarted && // and the game is started - _topCards [0] != null && _topCards [0].Rank == _topCards [1].Rank) // and its a match + if (player >= 0 && player < _score.Length && // its a valid player + IsStarted && // and the game is started + _topCards[0] != null && _topCards[0].Rank == _topCards[1].Rank) // and its a match { _score[player]++; + SwinGame.LoadSoundEffectNamed("Slap", "slap.wav"); + SwinGame.PlaySoundEffect("Slap"); //TODO: consider playing a sound here... } + else if (player >= 0 && player < _score.Length) + { + _score[player]--; + } + // stop the game... _started = false; + _gameTimer.Stop (); } #region Snap Game Unit Tests diff --git a/src/SnapGame.cs b/src/SnapGame.cs index ec78e9072..2592c9082 100644 --- a/src/SnapGame.cs +++ b/src/SnapGame.cs @@ -10,7 +10,8 @@ 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 + SwinGame.LoadFontNamed("GameFont", "Chunkfive.otf", 24); } /// @@ -24,8 +25,26 @@ private static void HandleUserInput(Snap myGame) if (SwinGame.KeyTyped (KeyCode.vk_SPACE)) { - myGame.FlipNextCard (); + myGame.Start(); } + + if(myGame.IsStarted) + { + if (SwinGame.KeyTyped (KeyCode.vk_LSHIFT) && SwinGame.KeyTyped (KeyCode.vk_RSHIFT)) + { + //TODO: add sound effects; + SwinGame.LoadSoundEffectNamed("SwinGameStrat", "SwinGameStart.wav"); + SwinGame.PlaySoundEffect("SwinGameStart"); + } + else if(SwinGame.KeyTyped (KeyCode.vk_LSHIFT)) + { + myGame.PlayerHit(0); + } + else if(SwinGame.KeyTyped (KeyCode.vk_RSHIFT)) + { + myGame.PlayerHit(0); + } + } } /// @@ -34,7 +53,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,15 +62,15 @@ 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.DrawText ("No card played yet..."+myGame.Score(0),Color.White,"GameFont", 0, 30); } // Draw the back of the cards... to represent the deck - SwinGame.DrawCell (SwinGame.BitmapNamed ("Cards"), 52, 160, 50); + SwinGame.DrawCell (SwinGame.BitmapNamed ("Cards"), 52, 155, 153); //Draw onto the screen SwinGame.RefreshScreen(60); @@ -85,5 +104,6 @@ public static void Main() UpdateGame (myGame); } } + } -} \ No newline at end of file +}