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.7 KiB

2 years ago
2 years ago
2 years ago
  1. using MiniGames.Shared.Models;
  2. using System;
  3. namespace MiniGames.Client.ViewModel
  4. {
  5. public class SchereSteinPapierEchseSpock : ISchereSteinPapierEchseSpock
  6. {
  7. public SchereSteinPapierEchseSpockModel RegelModel { get; set; } = new();
  8. public void SpielerErstellen(string name)
  9. {
  10. RegelModel.SpielerListe = new()
  11. {
  12. new SpielerModel
  13. {
  14. SpielerName = name,
  15. Punkte = 0
  16. },
  17. new SpielerModel
  18. {
  19. SpielerName = "CPU",
  20. Punkte = 0
  21. }
  22. };
  23. }
  24. public void SpielerInput(string spielerHand)
  25. {
  26. string erg = HandAuswahl(spielerHand);
  27. RegelModel = PunkteBerechnung(RegelModel, erg);
  28. }
  29. public string HandAuswahl(string spielerHand)
  30. {
  31. Random rnd = new();
  32. const string stein = "Stein";
  33. const string schere = "Schere";
  34. const string papier = "Papier";
  35. const string echse = "Echse";
  36. const string spock = "Spock";
  37. string cpuHand = CPUHand(rnd.Next(0, 5));
  38. string erg = "";
  39. switch (spielerHand)
  40. {
  41. case stein:
  42. erg = SpielerStein(stein, cpuHand);
  43. break;
  44. case schere:
  45. erg = SpielerSchere(schere, cpuHand);
  46. break;
  47. case papier:
  48. erg = SpielerPapier(papier, cpuHand);
  49. break;
  50. case echse:
  51. erg = SpielerEchse(echse, cpuHand);
  52. break;
  53. case spock:
  54. erg = SpielerSpock(spock, cpuHand);
  55. break;
  56. }
  57. return erg;
  58. }
  59. public string SpielerStein(string spielerHand, string gegnerHand)
  60. {
  61. if (spielerHand.Equals(RegelModel.hand[0]) && (gegnerHand.Equals(RegelModel.hand[1]) || gegnerHand.Equals(RegelModel.hand[3])))
  62. {
  63. return RegelModel.erg[0];
  64. }
  65. else if (spielerHand.Equals(RegelModel.hand[0]) && (gegnerHand.Equals(RegelModel.hand[2]) || gegnerHand.Equals(RegelModel.hand[4])))
  66. {
  67. return RegelModel.erg[1];
  68. }
  69. else
  70. {
  71. return RegelModel.erg[2];
  72. }
  73. }
  74. public string SpielerSchere(string spielerHand, string gegnerHand)
  75. {
  76. if (spielerHand.Equals(RegelModel.hand[1]) && (gegnerHand.Equals(RegelModel.hand[2]) || gegnerHand.Equals(RegelModel.hand[3])))
  77. {
  78. return RegelModel.erg[0];
  79. }
  80. else if (spielerHand.Equals(RegelModel.hand[1]) && (gegnerHand.Equals(RegelModel.hand[0]) || gegnerHand.Equals(RegelModel.hand[4])))
  81. {
  82. return RegelModel.erg[1];
  83. }
  84. else
  85. {
  86. return RegelModel.erg[2];
  87. }
  88. }
  89. public string SpielerPapier(string spielerHand, string gegnerHand)
  90. {
  91. if (spielerHand.Equals(RegelModel.hand[2]) && (gegnerHand.Equals(RegelModel.hand[0]) || gegnerHand.Equals(RegelModel.hand[4])))
  92. {
  93. return RegelModel.erg[0];
  94. }
  95. else if (spielerHand.Equals(RegelModel.hand[2]) && (gegnerHand.Equals(RegelModel.hand[1]) || gegnerHand.Equals(RegelModel.hand[3])))
  96. {
  97. return RegelModel.erg[1];
  98. }
  99. else
  100. {
  101. return RegelModel.erg[2];
  102. }
  103. }
  104. public string SpielerEchse(string spielerHand, string gegnerHand)
  105. {
  106. if (spielerHand.Equals(RegelModel.hand[3]) && (gegnerHand.Equals(RegelModel.hand[2]) || gegnerHand.Equals(RegelModel.hand[4])))
  107. {
  108. return RegelModel.erg[0];
  109. }
  110. else if (spielerHand.Equals(RegelModel.hand[3]) && (gegnerHand.Equals(RegelModel.hand[0]) || gegnerHand.Equals(RegelModel.hand[1])))
  111. {
  112. return RegelModel.erg[1];
  113. }
  114. else
  115. {
  116. return RegelModel.erg[2];
  117. }
  118. }
  119. public string SpielerSpock(string spielerHand, string gegnerHand)
  120. {
  121. if (spielerHand.Equals(RegelModel.hand[4]) && (gegnerHand.Equals(RegelModel.hand[0]) || gegnerHand.Equals(RegelModel.hand[1])))
  122. {
  123. return RegelModel.erg[0];
  124. }
  125. else if (spielerHand.Equals(RegelModel.hand[4]) && (gegnerHand.Equals(RegelModel.hand[2]) || gegnerHand.Equals(RegelModel.hand[3])))
  126. {
  127. return RegelModel.erg[1];
  128. }
  129. else
  130. {
  131. return RegelModel.erg[2];
  132. }
  133. }
  134. public string CPUHand(int index)
  135. {
  136. return RegelModel.hand[index];
  137. }
  138. public static SchereSteinPapierEchseSpockModel PunkteBerechnung(SchereSteinPapierEchseSpockModel spieleModel, string ergebnis)
  139. {
  140. switch (ergebnis)
  141. {
  142. case "Gewonnen":
  143. spieleModel.SpielerListe[0].Punkte += 1;
  144. spieleModel.ergebnisAnzeige = "Gewonnen!";
  145. break;
  146. case "Verloren":
  147. spieleModel.SpielerListe[1].Punkte += 1;
  148. spieleModel.ergebnisAnzeige = "Verloren!";
  149. break;
  150. default:
  151. spieleModel.ergebnisAnzeige = "Unentschieden!";
  152. break;
  153. }
  154. return spieleModel;
  155. }
  156. }
  157. }