Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add sound effect #100

Open
wants to merge 14 commits into
base: master
Choose a base branch
from
25 changes: 25 additions & 0 deletions .github/workflows/dotnet-core.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: .NET Core

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.1.301
- name: Install dependencies
run: dotnet restore
- name: Build
run: dotnet build --configuration Release --no-restore
- name: Test
run: dotnet test --no-restore --verbosity normal
Binary file added Resources/fonts/ChunkFive.otf
Binary file not shown.
Binary file added Resources/images/cardsBoard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
17 changes: 16 additions & 1 deletion src/GameLogic/Deck.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,22 @@ public int CardsRemaining
/// </summary>
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;
}

/// <summary>
Expand Down
9 changes: 8 additions & 1 deletion src/GameLogic/Snap.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ public class Snap
public Snap ()
{
_deck = new Deck ();
_gameTimer = SwinGame.CreateTimer ();
}

/// <summary>
Expand Down Expand Up @@ -92,6 +93,7 @@ public void Start()
_deck.Shuffle (); // Return the cards and shuffle

FlipNextCard (); // Flip the first card...
_gameTimer.Start();
}
}

Expand All @@ -111,7 +113,11 @@ public void FlipNextCard()
/// </summary>
public void Update()
{
//TODO: implement update to automatically slip cards!
if (_gameTimer.Ticks > _flipTime)
{
_gameTimer.Reset ();
FlipNextCard ();
}//automatically slip cards!
}

/// <summary>
Expand Down Expand Up @@ -143,6 +149,7 @@ public void PlayerHit (int player)

// stop the game...
_started = false;
_gameTimer.Stop ();
}

#region Snap Game Unit Tests
Expand Down
18 changes: 10 additions & 8 deletions src/SnapGame.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,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.LoadFontNamed ("GameFont", "Chunkfive.otf", 24);
}

/// <summary>
/// Respond to the user input -- with requests affecting myGame
Expand All @@ -25,6 +26,7 @@ private static void HandleUserInput(Snap myGame)
if (SwinGame.KeyTyped (KeyCode.vk_SPACE))
{
myGame.FlipNextCard ();
myGame.Start ();
}
}

Expand All @@ -34,24 +36,24 @@ private static void HandleUserInput(Snap myGame)
/// <param name="myGame">The details of the game -- mostly top card and scores.</param>
private static void DrawGame(Snap myGame)
{
SwinGame.ClearScreen(Color.White);
SwinGame.DrawBitmap("cardsBoard.png", 0, 0);

// Draw the top card
Card top = myGame.TopCard;
if (top != null)
{
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.DrawText ("Top Card is " + top.ToString (), Color.White,"GameFont", 0, 30);
SwinGame.DrawText ("Player 1 score: " + myGame.Score(0), Color.White,"GameFont", 0, 30);
SwinGame.DrawText ("Player 2 score: " + myGame.Score(1), Color.White,"GameFont", 0, 30);
SwinGame.DrawCell (SwinGame.BitmapNamed ("Cards"), top.CardIndex, 521, 153);
}
else
{
SwinGame.DrawText ("No card played yet...", Color.RoyalBlue, 0, 20);
}

// 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);
Expand Down Expand Up @@ -86,4 +88,4 @@ public static void Main()
}
}
}
}
}