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.

223 lines
5.3 KiB

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