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.

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