From d9e27910cfc13c156961caf52658b2e189729482 Mon Sep 17 00:00:00 2001 From: NikolajDanger Date: Tue, 2 Nov 2021 00:05:00 +0100 Subject: [PATCH] :sparkles: --- .gitignore | 3 + Content/Content.mgcb | 24 +++ Content/playing cards.png | Bin 0 -> 16149 bytes Entities/Card.cs | 308 ++++++++++++++++++++++++++++++++++++++ Entities/CardPosition.cs | 30 ++++ Entities/EmptyDeck.cs | 43 ++++++ Entities/IGameEntity.cs | 15 ++ Game1.cs | 52 ------- Graphics/Sprite.cs | 35 +++++ Logic/GameLogic.cs | 117 +++++++++++++++ Program.cs | 2 +- Solitaire.cs | 166 ++++++++++++++++++++ 12 files changed, 742 insertions(+), 53 deletions(-) create mode 100644 .gitignore create mode 100644 Content/playing cards.png create mode 100644 Entities/Card.cs create mode 100644 Entities/CardPosition.cs create mode 100644 Entities/EmptyDeck.cs create mode 100644 Entities/IGameEntity.cs delete mode 100644 Game1.cs create mode 100644 Graphics/Sprite.cs create mode 100644 Logic/GameLogic.cs create mode 100644 Solitaire.cs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3afdc66 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +bin/ +obj/ +.vscode/ \ No newline at end of file diff --git a/Content/Content.mgcb b/Content/Content.mgcb index ddc4c36..641f3ac 100644 --- a/Content/Content.mgcb +++ b/Content/Content.mgcb @@ -13,3 +13,27 @@ #---------------------------------- Content ---------------------------------# +#begin playing cards.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:playing cards.png + +#begin playing cards.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:playing cards.png + diff --git a/Content/playing cards.png b/Content/playing cards.png new file mode 100644 index 0000000000000000000000000000000000000000..92b966a8244ff7a437029f8dd12dedbe5a51624c GIT binary patch literal 16149 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