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.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. 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.SpielerModel.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. SpielerModel = new()
  67. {
  68. Id = Spieler.Count() + 1,
  69. SpielerName = _spielerName,
  70. },
  71. KartenModels = new()
  72. });
  73. }
  74. #region Stapel Erstellen
  75. public static StapelModel ErstelleStandardKarten()
  76. {
  77. StapelModel stapelModel = new();
  78. stapelModel.KartenModels = new();
  79. for (int f = 1; f <= 4; f++)
  80. {
  81. for (int k = 1; k <= 19; k++)
  82. {
  83. var kartenbezeichnung = (Kartenbezeichnung)k;
  84. var kartenfarbe = (Farbe)f;
  85. stapelModel.KartenModels.Add(
  86. new KartenModel
  87. {
  88. Name = kartenbezeichnung.ToString(),
  89. Farbe = kartenfarbe.ToString(),
  90. Spezial = false
  91. }
  92. );
  93. }
  94. }
  95. return stapelModel;
  96. }
  97. public static StapelModel ErstelleFarbigeSpezialKarten()
  98. {
  99. StapelModel stapelModel = new();
  100. stapelModel.KartenModels = new();
  101. for (int k = 10; k <= 12; k++)
  102. {
  103. for (int f = 1; f <= 4; f++)
  104. {
  105. for (int i = 0; i < 2; i++)
  106. {
  107. var _kartenbezeichnung = (Kartenbezeichnung)k;
  108. var kartenfarbe = (Farbe)f;
  109. stapelModel.KartenModels.Add(
  110. new KartenModel
  111. {
  112. Name = _kartenbezeichnung.ToString(),
  113. Farbe = kartenfarbe.ToString(),
  114. Spezial = true
  115. }
  116. );
  117. }
  118. }
  119. }
  120. return stapelModel;
  121. }
  122. public static StapelModel ErstelleJokerKarten()
  123. {
  124. StapelModel stapelModel = new();
  125. stapelModel.KartenModels = new();
  126. for (int k = 13; k <= 14; k++)
  127. {
  128. for (int a = 0; a < 4; a++)
  129. {
  130. var kartenbezeichnung = (Kartenbezeichnung)k;
  131. stapelModel.KartenModels.Add(
  132. new KartenModel
  133. {
  134. Name = kartenbezeichnung.ToString(),
  135. Farbe = Farbe.Keine.ToString(),
  136. Spezial = true
  137. }
  138. );
  139. }
  140. }
  141. return stapelModel;
  142. }
  143. public void ZiehKartenStapelZusammenstellen()
  144. {
  145. var standardKarten = Uno.ErstelleStandardKarten();
  146. var spezialKarten = Uno.ErstelleFarbigeSpezialKarten();
  147. var jokerKarten = Uno.ErstelleJokerKarten();
  148. ZiehKartenStapel.KartenModels = new();
  149. ZiehKartenStapel.KartenModels.AddRange(standardKarten.KartenModels);
  150. ZiehKartenStapel.KartenModels.AddRange(spezialKarten.KartenModels);
  151. ZiehKartenStapel.KartenModels.AddRange(jokerKarten.KartenModels);
  152. }
  153. #endregion
  154. }
  155. }