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.

67 lines
1.4 KiB

  1. package de.fd.fh;
  2. public class FigureFarmer extends Figure
  3. {
  4. enum Color { Black, White};
  5. public Color mColor;
  6. public FigureFarmer(Color colorCode)
  7. {
  8. mColor = colorCode;
  9. }
  10. @Override
  11. public boolean moveAllowed(int src, int dst, Figure[] field)
  12. {
  13. int rowDiff = src / fieldLength - dst / fieldLength; // hoch/runter
  14. if (mColor == Color.Black)
  15. {
  16. rowDiff *= -1;
  17. }
  18. if (rowDiff > 1) // Bauer nicht mehr als 1 Schritt
  19. {
  20. return false;
  21. }
  22. if (rowDiff <= 0) // Bauer nur Schritte in erlaubte Richtung (weiß -> hoch, schwarz -> runter)
  23. {
  24. return false;
  25. }
  26. // TODO: nur ein Schritt nach oben, wenn auf Ziel keine Figur
  27. // TODO: links, rechts verboten
  28. // TODO: Diagonal links/rechts hoch, wenn Figur geschlagen werden kann (Figur auf Ziel)
  29. return super.moveAllowed(src, dst, field);
  30. }
  31. @Override
  32. public boolean equals(Object o)
  33. {
  34. if (o == null)
  35. {
  36. return false;
  37. }
  38. if (this == o)
  39. {
  40. return true;
  41. }
  42. if (this.getClass() != o.getClass())
  43. {
  44. return false;
  45. }
  46. FigureFarmer otherFigure = (FigureFarmer)o;
  47. if (this.mColor != otherFigure.mColor)
  48. {
  49. return false;
  50. }
  51. return true;
  52. }
  53. }