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.

163 lines
5.2 KiB

  1. using MiniGames.Shared.Enums;
  2. using MiniGames.Shared.Models;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. namespace MiniGames.Client.ViewModel
  6. {
  7. public class Uno : IUno
  8. {
  9. public StapelModel KartenAblageStapel { get; set; } = new();
  10. public StapelModel ZiehKartenStapel { get; set; } = new();
  11. public bool IstAblageStabelFarbeGleichZuLegendeKarte(string neueKarteFarbe)
  12. {
  13. if (KartenAblageStapel.KartenModels.LastOrDefault().Farbe.Equals(neueKarteFarbe))
  14. {
  15. return true;
  16. }
  17. else
  18. {
  19. return false;
  20. }
  21. }
  22. public List<KartenModel> ZiehEineKarte(List<KartenModel> zuZiehendeHand)
  23. {
  24. List<KartenModel> _zuZiehendeHand = zuZiehendeHand;
  25. _zuZiehendeHand.Add(ZiehKartenStapel.KartenModels.FirstOrDefault());
  26. ZiehKartenStapel.KartenModels.RemoveAt(0);
  27. return _zuZiehendeHand;
  28. }
  29. public List<KartenModel> KarteAufStapelLegen(List<KartenModel> naechstenHand, KartenModel zuLegendeKarte)
  30. {
  31. List<KartenModel> _naechstenHand = naechstenHand;
  32. StapelModel _stapelModel = new();
  33. _stapelModel.KartenModels = new();
  34. const string _plusZweiKarte = "PlusZweiKarte";
  35. const string _retoureKarte = "RetoureKarte";
  36. const string _aussetzenKarte = "AussetzenKarte";
  37. if (KartenAblageStapel.KartenModels is null)
  38. {
  39. KartenAblageStapel.KartenModels = new();
  40. }
  41. switch (zuLegendeKarte.Name)
  42. {
  43. case _plusZweiKarte:
  44. for (int i = 0; i < 2; i++)
  45. {
  46. _naechstenHand.Add(ZiehKartenStapel.KartenModels.FirstOrDefault());
  47. ZiehKartenStapel.KartenModels.RemoveAt(0);
  48. }
  49. break;
  50. case _retoureKarte:
  51. break;
  52. case _aussetzenKarte:
  53. break;
  54. default:
  55. break;
  56. }
  57. return _naechstenHand;
  58. }
  59. #region Stapel Erstellen
  60. public static StapelModel ErstelleStandardKarten()
  61. {
  62. StapelModel stapelModel = new();
  63. stapelModel.KartenModels = new();
  64. for (int f = 1; f <= 4; f++)
  65. {
  66. for (int k = 1; k <= 19; k++)
  67. {
  68. var kartenbezeichnung = (Kartenbezeichnung)k;
  69. var kartenfarbe = (Farbe)f;
  70. stapelModel.KartenModels.Add(
  71. new KartenModel
  72. {
  73. Name = kartenbezeichnung.ToString(),
  74. Farbe = kartenfarbe.ToString(),
  75. Spezial = false
  76. }
  77. );
  78. }
  79. }
  80. return stapelModel;
  81. }
  82. public static StapelModel ErstelleFarbigeSpezialKarten()
  83. {
  84. StapelModel stapelModel = new();
  85. stapelModel.KartenModels = new();
  86. for (int k = 10; k <= 12; k++)
  87. {
  88. for (int f = 1; f <= 4; f++)
  89. {
  90. for (int i = 0; i < 2; i++)
  91. {
  92. var _kartenbezeichnung = (Kartenbezeichnung)k;
  93. var kartenfarbe = (Farbe)f;
  94. stapelModel.KartenModels.Add(
  95. new KartenModel
  96. {
  97. Name = _kartenbezeichnung.ToString(),
  98. Farbe = kartenfarbe.ToString(),
  99. Spezial = true
  100. }
  101. );
  102. }
  103. }
  104. }
  105. return stapelModel;
  106. }
  107. public static StapelModel ErstelleJokerKarten()
  108. {
  109. StapelModel stapelModel = new();
  110. stapelModel.KartenModels = new();
  111. for (int k = 13; k <= 14; k++)
  112. {
  113. for (int a = 0; a < 4; a++)
  114. {
  115. var kartenbezeichnung = (Kartenbezeichnung)k;
  116. stapelModel.KartenModels.Add(
  117. new KartenModel
  118. {
  119. Name = kartenbezeichnung.ToString(),
  120. Farbe = Farbe.Keine.ToString(),
  121. Spezial = true
  122. }
  123. );
  124. }
  125. }
  126. return stapelModel;
  127. }
  128. public void ZiehKartenStapelZusammenstellen()
  129. {
  130. var standardKarten = Uno.ErstelleStandardKarten();
  131. var spezialKarten = Uno.ErstelleFarbigeSpezialKarten();
  132. var jokerKarten = Uno.ErstelleJokerKarten();
  133. ZiehKartenStapel.KartenModels = new();
  134. ZiehKartenStapel.KartenModels.AddRange(standardKarten.KartenModels);
  135. ZiehKartenStapel.KartenModels.AddRange(spezialKarten.KartenModels);
  136. ZiehKartenStapel.KartenModels.AddRange(jokerKarten.KartenModels);
  137. }
  138. #endregion
  139. }
  140. }