Continous Integration in der Praxis Gruppenarbeit
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

180 lines
5.7 KiB

3 years ago
  1. using MiniGames.Shared.Enums;
  2. using MiniGames.Shared.Models;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. namespace MiniGames.Client.ViewModel
  7. {
  8. public class Uno : IUno
  9. {
  10. public StapelModel KartenAblageStapel { get; set; } = new();
  11. public StapelModel ZiehKartenStapel { get; set; } = new();
  12. public List<HandKartenModel> Spieler { get; set; } = new();
  13. public bool IstAblageStapelFarbeGleichZuLegendeKarte(string neueKarteFarbe)
  14. {
  15. bool ergebnis;
  16. _ = KartenAblageStapel.KartenModels.LastOrDefault().Farbe.Equals(neueKarteFarbe) ? ergebnis = true : ergebnis = false;
  17. return ergebnis;
  18. }
  19. public bool IstAblageStapelZahlGleichZuLegendeKarte(string handStapelKarteBezeichnung)
  20. {
  21. bool ergebnis;
  22. _ = KartenAblageStapel.KartenModels.LastOrDefault().Name.Equals(handStapelKarteBezeichnung) ? ergebnis = true : ergebnis = false;
  23. return ergebnis;
  24. }
  25. public void ZiehEineKarte(int id)
  26. {
  27. int _id = id;
  28. int index = Spieler.FindIndex(x => x.Id == _id);
  29. Spieler[index].KartenModels.Add(ZiehKartenStapel.KartenModels.FirstOrDefault());
  30. ZiehKartenStapel.KartenModels.RemoveAt(0);
  31. }
  32. public void KarteAufStapelLegen(int id, KartenModel zuLegendeKarte)
  33. {
  34. int _id = id;
  35. StapelModel _stapelModel = new();
  36. _stapelModel.KartenModels = new();
  37. const string _plusZweiKarte = "PlusZweiKarte";
  38. const string _retoureKarte = "RetoureKarte";
  39. const string _aussetzenKarte = "AussetzenKarte";
  40. if (KartenAblageStapel.KartenModels is null)
  41. {
  42. KartenAblageStapel.KartenModels = new();
  43. }
  44. switch (zuLegendeKarte.Name)
  45. {
  46. case _plusZweiKarte:
  47. for (int i = 0; i < 2; i++)
  48. {
  49. ZiehEineKarte(_id);
  50. }
  51. break;
  52. case _retoureKarte:
  53. break;
  54. case _aussetzenKarte:
  55. break;
  56. default:
  57. break;
  58. }
  59. }
  60. public void SpielerErstellen(string spielerName)
  61. {
  62. string _spielerName = spielerName;
  63. Spieler.Add(
  64. new HandKartenModel
  65. {
  66. Id = Spieler.Count() + 1,
  67. Name = _spielerName,
  68. KartenModels = new()
  69. });
  70. }
  71. #region Stapel Erstellen
  72. public static StapelModel ErstelleStandardKarten()
  73. {
  74. StapelModel stapelModel = new();
  75. stapelModel.KartenModels = new();
  76. for (int f = 1; f <= 4; f++)
  77. {
  78. for (int k = 1; k <= 19; k++)
  79. {
  80. var kartenbezeichnung = (Kartenbezeichnung)k;
  81. var kartenfarbe = (Farbe)f;
  82. stapelModel.KartenModels.Add(
  83. new KartenModel
  84. {
  85. Name = kartenbezeichnung.ToString(),
  86. Farbe = kartenfarbe.ToString(),
  87. Spezial = false
  88. }
  89. );
  90. }
  91. }
  92. return stapelModel;
  93. }
  94. public static StapelModel ErstelleFarbigeSpezialKarten()
  95. {
  96. StapelModel stapelModel = new();
  97. stapelModel.KartenModels = new();
  98. for (int k = 10; k <= 12; k++)
  99. {
  100. for (int f = 1; f <= 4; f++)
  101. {
  102. for (int i = 0; i < 2; i++)
  103. {
  104. var _kartenbezeichnung = (Kartenbezeichnung)k;
  105. var kartenfarbe = (Farbe)f;
  106. stapelModel.KartenModels.Add(
  107. new KartenModel
  108. {
  109. Name = _kartenbezeichnung.ToString(),
  110. Farbe = kartenfarbe.ToString(),
  111. Spezial = true
  112. }
  113. );
  114. }
  115. }
  116. }
  117. return stapelModel;
  118. }
  119. public static StapelModel ErstelleJokerKarten()
  120. {
  121. StapelModel stapelModel = new();
  122. stapelModel.KartenModels = new();
  123. for (int k = 13; k <= 14; k++)
  124. {
  125. for (int a = 0; a < 4; a++)
  126. {
  127. var kartenbezeichnung = (Kartenbezeichnung)k;
  128. stapelModel.KartenModels.Add(
  129. new KartenModel
  130. {
  131. Name = kartenbezeichnung.ToString(),
  132. Farbe = Farbe.Keine.ToString(),
  133. Spezial = true
  134. }
  135. );
  136. }
  137. }
  138. return stapelModel;
  139. }
  140. public void ZiehKartenStapelZusammenstellen()
  141. {
  142. var standardKarten = Uno.ErstelleStandardKarten();
  143. var spezialKarten = Uno.ErstelleFarbigeSpezialKarten();
  144. var jokerKarten = Uno.ErstelleJokerKarten();
  145. ZiehKartenStapel.KartenModels = new();
  146. ZiehKartenStapel.KartenModels.AddRange(standardKarten.KartenModels);
  147. ZiehKartenStapel.KartenModels.AddRange(spezialKarten.KartenModels);
  148. ZiehKartenStapel.KartenModels.AddRange(jokerKarten.KartenModels);
  149. }
  150. #endregion
  151. }
  152. }