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.

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