From 76688b6f20d19b8de48919937739871c4672dbd7 Mon Sep 17 00:00:00 2001 From: ADato88 Date: Tue, 8 Feb 2022 10:31:54 +0100 Subject: [PATCH] initiale Kartenverteilung Test --- .../MiniGames/Client/ViewModel/Uno.cs | 409 +++++++++--------- BlazorSolution/MiniGamesTests/UnoTest.cs | 34 ++ 2 files changed, 245 insertions(+), 198 deletions(-) diff --git a/BlazorSolution/MiniGames/Client/ViewModel/Uno.cs b/BlazorSolution/MiniGames/Client/ViewModel/Uno.cs index 9c477ec..e28619d 100644 --- a/BlazorSolution/MiniGames/Client/ViewModel/Uno.cs +++ b/BlazorSolution/MiniGames/Client/ViewModel/Uno.cs @@ -5,206 +5,219 @@ using System.Collections.Generic; using System.Linq; namespace MiniGames.Client.ViewModel -{ - public class Uno : IUno - { - public StapelModel KartenAblageStapel { get; set; } = new(); - public StapelModel ZiehKartenStapel { get; set; } = new(); - public List Spieler { get; set; } = new(); - public int NaechsterSpielerId { get; set; } - - public bool IstAblageStapelFarbeGleichZuLegendeKarte(string neueKarteFarbe) - { - bool ergebnis; - - _ = KartenAblageStapel.KartenModels.LastOrDefault().Farbe.Equals(neueKarteFarbe) ? ergebnis = true : ergebnis = false; - - return ergebnis; - } - - public bool IstAblageStapelZahlGleichZuLegendeKarte(string handStapelKarteBezeichnung) - { - bool ergebnis; +{ + public class Uno : IUno + { + public StapelModel KartenAblageStapel { get; set; } = new(); + public StapelModel ZiehKartenStapel { get; set; } = new(); + public List Spieler { get; set; } = new(); + public int NaechsterSpielerId { get; set; } - _ = KartenAblageStapel.KartenModels.LastOrDefault().Name.Equals(handStapelKarteBezeichnung) ? ergebnis = true : ergebnis = false; + public bool IstAblageStapelFarbeGleichZuLegendeKarte(string neueKarteFarbe) + { + bool ergebnis; - return ergebnis; - } - - public void ZiehEineKarte(int id) - { - int _id = id; - int index = Spieler.FindIndex(x => x.SpielerModel.Id == _id); - - Spieler[index].KartenModels.Add(ZiehKartenStapel.KartenModels.FirstOrDefault()); - ZiehKartenStapel.KartenModels.RemoveAt(0); - } - - public void KarteAufStapelLegen(int id, KartenModel zuLegendeKarte) - { - int _id = id; - StapelModel _stapelModel = new(); - _stapelModel.KartenModels = new(); - const string _plusZweiKarte = "PlusZweiKarte"; - const string _retoureKarte = "RetoureKarte"; - const string _aussetzenKarte = "AussetzenKarte"; - - if (KartenAblageStapel.KartenModels is null) - { - KartenAblageStapel.KartenModels = new(); - } - - switch (zuLegendeKarte.Name) - { - case _plusZweiKarte: - for (int i = 0; i < 2; i++) - { - ZiehEineKarte(_id); - } - break; - case _retoureKarte: - break; - case _aussetzenKarte: - break; - default: - break; - - } - - } - - public void SpielerErstellen(string spielerName) - { - string _spielerName = spielerName; - Spieler.Add( - new HandKartenModel - { - SpielerModel = new() - { - Id = Spieler.Count() + 1, - SpielerName = _spielerName, - }, - KartenModels = new() - }); - } - - public void SpielerWahl(int aktuellerSpielerId, bool uhrZeigerSinn) - { - var aktuellerSpielerIndex = Spieler.FindIndex(x => x.SpielerModel.Id == aktuellerSpielerId); - if (uhrZeigerSinn) - { - if (aktuellerSpielerIndex == Spieler.Count() - 1) - { - NaechsterSpielerId = 1; - } - else - { - NaechsterSpielerId = Spieler[aktuellerSpielerIndex + 1].SpielerModel.Id; - } - } - else - { - if (aktuellerSpielerIndex != 0) - { - NaechsterSpielerId = Spieler[aktuellerSpielerIndex - 1].SpielerModel.Id; - } - else - { - NaechsterSpielerId = Spieler.LastOrDefault().SpielerModel.Id; - } - } - } - - #region Stapel Erstellen - public static StapelModel ErstelleStandardKarten() - { - StapelModel stapelModel = new(); - stapelModel.KartenModels = new(); - for (int f = 1; f <= 4; f++) - { - for (int k = 1; k <= 19; k++) - { - var kartenbezeichnung = (Kartenbezeichnung)k; - var kartenfarbe = (Farbe)f; - stapelModel.KartenModels.Add( - new KartenModel - { - Name = kartenbezeichnung.ToString(), - Farbe = kartenfarbe.ToString(), - Spezial = false - } - ); - } - } - - return stapelModel; - } - - public static StapelModel ErstelleFarbigeSpezialKarten() - { - StapelModel stapelModel = new(); - stapelModel.KartenModels = new(); - for (int k = 10; k <= 12; k++) - { - for (int f = 1; f <= 4; f++) - { - for (int i = 0; i < 2; i++) - { - var _kartenbezeichnung = (Kartenbezeichnung)k; - var kartenfarbe = (Farbe)f; - stapelModel.KartenModels.Add( - new KartenModel - { - Name = _kartenbezeichnung.ToString(), - Farbe = kartenfarbe.ToString(), - Spezial = true - } - ); - } - } - } - - return stapelModel; - } - - public static StapelModel ErstelleJokerKarten() - { - StapelModel stapelModel = new(); - stapelModel.KartenModels = new(); - - for (int k = 13; k <= 14; k++) - { - for (int a = 0; a < 4; a++) - { - var kartenbezeichnung = (Kartenbezeichnung)k; - stapelModel.KartenModels.Add( - new KartenModel - { - Name = kartenbezeichnung.ToString(), - Farbe = Farbe.Keine.ToString(), - Spezial = true - } - ); - } - - } - - return stapelModel; - } - - public void ZiehKartenStapelZusammenstellen() - { - var standardKarten = Uno.ErstelleStandardKarten(); - var spezialKarten = Uno.ErstelleFarbigeSpezialKarten(); - var jokerKarten = Uno.ErstelleJokerKarten(); - - ZiehKartenStapel.KartenModels = new(); - ZiehKartenStapel.KartenModels.AddRange(standardKarten.KartenModels); - ZiehKartenStapel.KartenModels.AddRange(spezialKarten.KartenModels); - ZiehKartenStapel.KartenModels.AddRange(jokerKarten.KartenModels); - } + _ = KartenAblageStapel.KartenModels.LastOrDefault().Farbe.Equals(neueKarteFarbe) ? ergebnis = true : ergebnis = false; + + return ergebnis; + } + + public bool IstAblageStapelZahlGleichZuLegendeKarte(string handStapelKarteBezeichnung) + { + bool ergebnis; + + _ = KartenAblageStapel.KartenModels.LastOrDefault().Name.Equals(handStapelKarteBezeichnung) ? ergebnis = true : ergebnis = false; + + return ergebnis; + } + + public void ZiehEineKarte(int id) + { + int _id = id; + int index = Spieler.FindIndex(x => x.SpielerModel.Id == _id); + + Spieler[index].KartenModels.Add(ZiehKartenStapel.KartenModels.FirstOrDefault()); + ZiehKartenStapel.KartenModels.RemoveAt(0); + } + + public void KarteAufStapelLegen(int id, KartenModel zuLegendeKarte) + { + int _id = id; + StapelModel _stapelModel = new(); + _stapelModel.KartenModels = new(); + const string _plusZweiKarte = "PlusZweiKarte"; + const string _retoureKarte = "RetoureKarte"; + const string _aussetzenKarte = "AussetzenKarte"; + + if (KartenAblageStapel.KartenModels is null) + { + KartenAblageStapel.KartenModels = new(); + } + + switch (zuLegendeKarte.Name) + { + case _plusZweiKarte: + for (int i = 0; i < 2; i++) + { + ZiehEineKarte(_id); + } + break; + case _retoureKarte: + break; + case _aussetzenKarte: + break; + default: + break; + + } + + } + + public void SpielerErstellen(string spielerName) + { + string _spielerName = spielerName; + Spieler.Add( + new HandKartenModel + { + SpielerModel = new() + { + Id = Spieler.Count() + 1, + SpielerName = _spielerName, + }, + KartenModels = new() + }); + } + + public void SpielerWahl(int aktuellerSpielerId, bool uhrZeigerSinn) + { + var aktuellerSpielerIndex = Spieler.FindIndex(x => x.SpielerModel.Id == aktuellerSpielerId); + if (uhrZeigerSinn) + { + if (aktuellerSpielerIndex == Spieler.Count() - 1) + { + NaechsterSpielerId = 1; + } + else + { + NaechsterSpielerId = Spieler[aktuellerSpielerIndex + 1].SpielerModel.Id; + } + } + else + { + if (aktuellerSpielerIndex != 0) + { + NaechsterSpielerId = Spieler[aktuellerSpielerIndex - 1].SpielerModel.Id; + } + else + { + NaechsterSpielerId = Spieler.LastOrDefault().SpielerModel.Id; + } + } + } + + #region Stapel Erstellen + public static StapelModel ErstelleStandardKarten() + { + StapelModel stapelModel = new(); + stapelModel.KartenModels = new(); + for (int f = 1; f <= 4; f++) + { + for (int k = 1; k <= 19; k++) + { + var kartenbezeichnung = (Kartenbezeichnung)k; + var kartenfarbe = (Farbe)f; + stapelModel.KartenModels.Add( + new KartenModel + { + Name = kartenbezeichnung.ToString(), + Farbe = kartenfarbe.ToString(), + Spezial = false + } + ); + } + } + + return stapelModel; + } + + public static StapelModel ErstelleFarbigeSpezialKarten() + { + StapelModel stapelModel = new(); + stapelModel.KartenModels = new(); + for (int k = 10; k <= 12; k++) + { + for (int f = 1; f <= 4; f++) + { + for (int i = 0; i < 2; i++) + { + var _kartenbezeichnung = (Kartenbezeichnung)k; + var kartenfarbe = (Farbe)f; + stapelModel.KartenModels.Add( + new KartenModel + { + Name = _kartenbezeichnung.ToString(), + Farbe = kartenfarbe.ToString(), + Spezial = true + } + ); + } + } + } + + return stapelModel; + } + + public void InitialeKartenVerteilung() + { + for (int i = 0; i < 7; i++) + { + foreach (var spieler in Spieler) + { + spieler.KartenModels.Add(ZiehKartenStapel.KartenModels.FirstOrDefault()); + ZiehKartenStapel.KartenModels.RemoveAt(0); + } + } + + } + + public static StapelModel ErstelleJokerKarten() + { + StapelModel stapelModel = new(); + stapelModel.KartenModels = new(); + + for (int k = 13; k <= 14; k++) + { + for (int a = 0; a < 4; a++) + { + var kartenbezeichnung = (Kartenbezeichnung)k; + stapelModel.KartenModels.Add( + new KartenModel + { + Name = kartenbezeichnung.ToString(), + Farbe = Farbe.Keine.ToString(), + Spezial = true + } + ); + } + + } + + return stapelModel; + } + + public void ZiehKartenStapelZusammenstellen() + { + var standardKarten = Uno.ErstelleStandardKarten(); + var spezialKarten = Uno.ErstelleFarbigeSpezialKarten(); + var jokerKarten = Uno.ErstelleJokerKarten(); + + ZiehKartenStapel.KartenModels = new(); + ZiehKartenStapel.KartenModels.AddRange(standardKarten.KartenModels); + ZiehKartenStapel.KartenModels.AddRange(spezialKarten.KartenModels); + ZiehKartenStapel.KartenModels.AddRange(jokerKarten.KartenModels); + } - #endregion - } + #endregion + } } diff --git a/BlazorSolution/MiniGamesTests/UnoTest.cs b/BlazorSolution/MiniGamesTests/UnoTest.cs index daa892d..a87f78b 100644 --- a/BlazorSolution/MiniGamesTests/UnoTest.cs +++ b/BlazorSolution/MiniGamesTests/UnoTest.cs @@ -10,6 +10,7 @@ namespace MiniGamesTests public class UnoTest { public Uno UnoRegeln = new(); + public List SpielerModels = new(); private KartenModel BeispielKarte(string name, string farbe, bool spezial) { @@ -51,6 +52,19 @@ namespace MiniGamesTests return HandStapel; } + private void BeispielSpielerModelsFüllen(int id, string spielerName) + { + int _id = id; + string _spielerName = spielerName; + + SpielerModels.Add(new SpielerModel() + { + Id = _id, + SpielerName = _spielerName, + Punkte = 0 + }); + } + private StapelModel BeispielStapelModelKarten(string name, string farbe, bool spezial) { var _name = name; @@ -122,6 +136,26 @@ namespace MiniGamesTests Assert.NotNull(ergebnis[2].KartenModels); } + [Fact] + private void InitialeKartenVerteilungTest() + { + //arrange + BeispielSpielerModelsFüllen(1, "Klaus"); + BeispielSpielerModelsFüllen(2, "Peter"); + BeispielSpielerModelsFüllen(3, "Hans"); + + UnoRegeln.SpielerErstellen(SpielerModels[0].SpielerName); + UnoRegeln.SpielerErstellen(SpielerModels[1].SpielerName); + UnoRegeln.SpielerErstellen(SpielerModels[2].SpielerName); + UnoRegeln.ZiehKartenStapelZusammenstellen(); + + //act + UnoRegeln.InitialeKartenVerteilung(); + + //assert + Assert.Equal(7, UnoRegeln.Spieler[0].KartenModels.Count()); + } + [Theory] [InlineData("Andrej", 1, "Paul", 2, "Erhard", 3, true, 2, 3)] [InlineData("Sabine", 1, "Erich", 2, "Anna", 3, false, 3, 2)]