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.

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