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.

105 lines
3.2 KiB

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. #include "spieler.h"
  5. #include "Bauer.h"
  6. #include "Turm.h"
  7. #include "Springer.h"
  8. #include "Koenig.h"
  9. #include "Dame.h"
  10. #include "Laeufer.h"
  11. bool istzugerlaubt(char** Brett, int startX, int startY, int endX, int endY, Player player) {
  12. if ((endX >= 8 || endY >= 8) || (endX < 0 || endY < 0)){
  13. return false;
  14. }
  15. if (player == PLAYER_WHITE &&
  16. (Brett[endY][endX] == 'R' || Brett[endY][endX] == 'N' || Brett[endY][endX] == 'Q' ||
  17. Brett[endY][endX] == 'B' || Brett[endY][endX] == 'K' || Brett[endY][endX] == 'P')){
  18. return false;
  19. }
  20. if (player == PLAYER_BLACK &&
  21. (Brett[endY][endX] == 'r' || Brett[endY][endX] == 'n' || Brett[endY][endX] == 'q' ||
  22. Brett[endY][endX] == 'b' || Brett[endY][endX] == 'k' || Brett[endY][endX] == 'p')){
  23. return false;
  24. }
  25. if (player == PLAYER_WHITE){
  26. switch (Brett[startY][startX]) {
  27. case 'R':
  28. //Datei von Turm aufrufen
  29. return (istzugerlaubt_Turm(Brett, startX,startY,endX,endY,player));
  30. break;
  31. case 'N':
  32. //Datei von Springer aufrufen
  33. break;
  34. case 'B':
  35. //Datei von Läufer aufrufen
  36. return (istzugerlaubt_Laeufer(Brett, startX,startY,endX,endY,player));
  37. break;
  38. case 'Q':
  39. //Datei von Dame aufrufen
  40. return (istzugerlaubt_Dame(Brett, startX,startY,endX,endY,player));
  41. break;
  42. case 'K':
  43. //Datei von König aufrufen
  44. return (istzugerlaubt_Koenig(Brett, startX,startY,endX,endY,player));
  45. break;
  46. case 'P':
  47. //Datei von Bauer aufrufen
  48. return (istzugerlaubt_Bauer(Brett, startX,startY,endX,endY,player));
  49. break;
  50. default:
  51. break;
  52. }
  53. }
  54. else {
  55. switch (Brett[startY][startX]) {
  56. case 'r':
  57. //Datei von Turm aufrufen
  58. return (istzugerlaubt_Turm(Brett, startX,startY,endX,endY,player));
  59. break;
  60. case 'n':
  61. //Datei von Springer aufrufen
  62. break;
  63. case 'b':
  64. //Datei von Läufer aufrufen
  65. return (istzugerlaubt_Laeufer(Brett, startX,startY,endX,endY,player));
  66. break;
  67. case 'q':
  68. //Datei von Dame aufrufen
  69. return (istzugerlaubt_Dame(Brett, startX,startY,endX,endY,player));
  70. break;
  71. case 'k':
  72. //Datei von König aufrufen
  73. break;
  74. case 'p':
  75. //Datei von Bauer aufrufen
  76. return (istzugerlaubt_Bauer(Brett, startX,startY,endX,endY,player));
  77. break;
  78. default:
  79. break;
  80. }
  81. }
  82. /* Regeln hierhin
  83. z.B. schauen ob der zug auch innerhalb vom spielbrett ist,
  84. schauen ob auf dem zielfeld keine eigene Figur steht,
  85. schauen ob von der startposition aus der zug auch für die ausgewählte figur möglich ist.
  86. return true wenn möglich oder false falls nicht.
  87. */
  88. return true;
  89. }
  90. void machezug(char** Brett, int startX, int startY, int endX, int endY,Player player) {
  91. //wenn istzugerlaubt true ist wird das hier ausgeführt
  92. if(istzugerlaubt(Brett,startX,startY,endX,endY,player) == true){
  93. Brett[endY][endX] = Brett[startY][startX];
  94. Brett[startY][startX] = ' ';
  95. }
  96. }