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.

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