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.

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