Browse Source

initiale Kartenverteilung Test

feature/uno
ADato88 3 years ago
parent
commit
76688b6f20
  1. 415
      BlazorSolution/MiniGames/Client/ViewModel/Uno.cs
  2. 34
      BlazorSolution/MiniGamesTests/UnoTest.cs

415
BlazorSolution/MiniGames/Client/ViewModel/Uno.cs

@ -6,205 +6,218 @@ using System.Linq;
namespace MiniGames.Client.ViewModel namespace MiniGames.Client.ViewModel
{ {
public class Uno : IUno
{
public StapelModel KartenAblageStapel { get; set; } = new();
public StapelModel ZiehKartenStapel { get; set; } = new();
public List<HandKartenModel> 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;
_ = 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 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
}
public class Uno : IUno
{
public StapelModel KartenAblageStapel { get; set; } = new();
public StapelModel ZiehKartenStapel { get; set; } = new();
public List<HandKartenModel> 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;
_ = 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
}
} }

34
BlazorSolution/MiniGamesTests/UnoTest.cs

@ -10,6 +10,7 @@ namespace MiniGamesTests
public class UnoTest public class UnoTest
{ {
public Uno UnoRegeln = new(); public Uno UnoRegeln = new();
public List<SpielerModel> SpielerModels = new();
private KartenModel BeispielKarte(string name, string farbe, bool spezial) private KartenModel BeispielKarte(string name, string farbe, bool spezial)
{ {
@ -51,6 +52,19 @@ namespace MiniGamesTests
return HandStapel; 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) private StapelModel BeispielStapelModelKarten(string name, string farbe, bool spezial)
{ {
var _name = name; var _name = name;
@ -122,6 +136,26 @@ namespace MiniGamesTests
Assert.NotNull(ergebnis[2].KartenModels); 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] [Theory]
[InlineData("Andrej", 1, "Paul", 2, "Erhard", 3, true, 2, 3)] [InlineData("Andrej", 1, "Paul", 2, "Erhard", 3, true, 2, 3)]
[InlineData("Sabine", 1, "Erich", 2, "Anna", 3, false, 3, 2)] [InlineData("Sabine", 1, "Erich", 2, "Anna", 3, false, 3, 2)]

Loading…
Cancel
Save