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.

170 lines
5.4 KiB

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