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.

131 lines
3.1 KiB

  1. using System;
  2. namespace MiniGames.Shared.Models
  3. {
  4. public class TicTacToeBrett
  5. {
  6. public const int LEER = -1;
  7. int[,] Felder;
  8. public TicTacToeBrett()
  9. {
  10. Felder = new[,]
  11. {
  12. { LEER, LEER, LEER },
  13. { LEER, LEER, LEER },
  14. { LEER, LEER, LEER },
  15. };
  16. }
  17. public TicTacToeBrett(int[,] werte)
  18. {
  19. Felder = new int[3, 3];
  20. if (werte == null)
  21. {
  22. werte = new int[0, 0];
  23. }
  24. for (int i = 0; i < Felder.GetLength(0); i++)
  25. {
  26. for (int j = 0; j < Felder.GetLength(1); j++)
  27. {
  28. if (i < werte.GetLength(0) && j < werte.GetLength(1))
  29. {
  30. Felder[i, j] = werte[i, j];
  31. }
  32. else
  33. {
  34. Felder[i, j] = LEER;
  35. }
  36. }
  37. }
  38. }
  39. public bool Gleich(TicTacToeBrett anderes)
  40. {
  41. for (int i = 0; i < 3; i++)
  42. {
  43. for (int j = 0; j < 3; j++)
  44. {
  45. if (Felder[i, j] != anderes.Felder[i, j])
  46. {
  47. return false;
  48. }
  49. }
  50. }
  51. return true;
  52. }
  53. public int Get(int pos)
  54. {
  55. int x = pos % 3;
  56. int y = pos / 3;
  57. return Felder[x, y];
  58. }
  59. public bool Set(int pos, int wert)
  60. {
  61. int x = pos % 3;
  62. int y = pos / 3;
  63. try
  64. {
  65. if (Felder[x, y] == LEER)
  66. {
  67. Felder[x, y] = wert;
  68. return true;
  69. }
  70. }
  71. catch (IndexOutOfRangeException e)
  72. {
  73. // absichtlich leer
  74. }
  75. return false;
  76. }
  77. public bool Voll()
  78. {
  79. for (int i = 0; i < 3; i++)
  80. {
  81. for (int j = 0; j < 3; j++)
  82. {
  83. if (Felder[i, j] == LEER)
  84. {
  85. return false;
  86. }
  87. }
  88. }
  89. return true;
  90. }
  91. protected bool dreiGleichGefuellt(int a, int b, int c)
  92. {
  93. return a != LEER && a == b && b == c;
  94. }
  95. public int Gewinner()
  96. {
  97. for (int i = 0; i < 3; i++)
  98. {
  99. if (dreiGleichGefuellt(Felder[i, 0], Felder[i, 1], Felder[i, 2])) return Felder[i, 0];
  100. if (dreiGleichGefuellt(Felder[0, i], Felder[1, i], Felder[2, i])) return Felder[0, i];
  101. }
  102. if (
  103. dreiGleichGefuellt(Felder[0, 0], Felder[1, 1], Felder[2, 2]) ||
  104. dreiGleichGefuellt(Felder[2, 0], Felder[1, 1], Felder[0, 2])
  105. )
  106. {
  107. return Felder[1, 1];
  108. }
  109. return LEER;
  110. }
  111. }
  112. }