basic model
This commit is contained in:
42
app/src/main/java/chess/model/Move.java
Normal file
42
app/src/main/java/chess/model/Move.java
Normal file
@@ -0,0 +1,42 @@
|
||||
package chess.model;
|
||||
|
||||
public class Move {
|
||||
private final Coordinate start;
|
||||
private final Coordinate finish;
|
||||
|
||||
public Move(Coordinate start, Coordinate finish) {
|
||||
this.start = start;
|
||||
this.finish = finish;
|
||||
}
|
||||
|
||||
public boolean isValid() {
|
||||
return this.start.isValid() && this.finish.isValid() && !this.start.equals(this.finish);
|
||||
}
|
||||
|
||||
public Coordinate getStart() {
|
||||
return start;
|
||||
}
|
||||
|
||||
public Coordinate getFinish() {
|
||||
return finish;
|
||||
}
|
||||
|
||||
public int traversedCells() {
|
||||
assert isValid() : "Move is invalid!";
|
||||
|
||||
int diffX = getFinish().getX() - getStart().getX();
|
||||
int diffY = getFinish().getY() - getStart().getY();
|
||||
|
||||
assert Math.abs(diffX) < Coordinate.VALUE_MAX : "Move is too big!";
|
||||
assert Math.abs(diffX) < Coordinate.VALUE_MAX : "Move is too big!";
|
||||
|
||||
if (diffX == 0)
|
||||
return Math.abs(diffY);
|
||||
if (diffY == 0)
|
||||
return Math.abs(diffX);
|
||||
if (Math.abs(diffX) == Math.abs(diffY))
|
||||
return Math.abs(diffX);
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user