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.

162 lines
5.1 KiB

3 years ago
3 years ago
  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 IstAblageStapelFarbeGleichZuLegendeKarte(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 = ZiehEineKarte(_naechstenHand);
  47. }
  48. break;
  49. case _retoureKarte:
  50. break;
  51. case _aussetzenKarte:
  52. break;
  53. default:
  54. break;
  55. }
  56. return _naechstenHand;
  57. }
  58. #region Stapel Erstellen
  59. public static StapelModel ErstelleStandardKarten()
  60. {
  61. StapelModel stapelModel = new();
  62. stapelModel.KartenModels = new();
  63. for (int f = 1; f <= 4; f++)
  64. {
  65. for (int k = 1; k <= 19; k++)
  66. {
  67. var kartenbezeichnung = (Kartenbezeichnung)k;
  68. var kartenfarbe = (Farbe)f;
  69. stapelModel.KartenModels.Add(
  70. new KartenModel
  71. {
  72. Name = kartenbezeichnung.ToString(),
  73. Farbe = kartenfarbe.ToString(),
  74. Spezial = false
  75. }
  76. );
  77. }
  78. }
  79. return stapelModel;
  80. }
  81. public static StapelModel ErstelleFarbigeSpezialKarten()
  82. {
  83. StapelModel stapelModel = new();
  84. stapelModel.KartenModels = new();
  85. for (int k = 10; k <= 12; k++)
  86. {
  87. for (int f = 1; f <= 4; f++)
  88. {
  89. for (int i = 0; i < 2; i++)
  90. {
  91. var _kartenbezeichnung = (Kartenbezeichnung)k;
  92. var kartenfarbe = (Farbe)f;
  93. stapelModel.KartenModels.Add(
  94. new KartenModel
  95. {
  96. Name = _kartenbezeichnung.ToString(),
  97. Farbe = kartenfarbe.ToString(),
  98. Spezial = true
  99. }
  100. );
  101. }
  102. }
  103. }
  104. return stapelModel;
  105. }
  106. public static StapelModel ErstelleJokerKarten()
  107. {
  108. StapelModel stapelModel = new();
  109. stapelModel.KartenModels = new();
  110. for (int k = 13; k <= 14; k++)
  111. {
  112. for (int a = 0; a < 4; a++)
  113. {
  114. var kartenbezeichnung = (Kartenbezeichnung)k;
  115. stapelModel.KartenModels.Add(
  116. new KartenModel
  117. {
  118. Name = kartenbezeichnung.ToString(),
  119. Farbe = Farbe.Keine.ToString(),
  120. Spezial = true
  121. }
  122. );
  123. }
  124. }
  125. return stapelModel;
  126. }
  127. public void ZiehKartenStapelZusammenstellen()
  128. {
  129. var standardKarten = Uno.ErstelleStandardKarten();
  130. var spezialKarten = Uno.ErstelleFarbigeSpezialKarten();
  131. var jokerKarten = Uno.ErstelleJokerKarten();
  132. ZiehKartenStapel.KartenModels = new();
  133. ZiehKartenStapel.KartenModels.AddRange(standardKarten.KartenModels);
  134. ZiehKartenStapel.KartenModels.AddRange(spezialKarten.KartenModels);
  135. ZiehKartenStapel.KartenModels.AddRange(jokerKarten.KartenModels);
  136. }
  137. #endregion
  138. }
  139. }