public List<Cell> getPossibleMoves(Point start) {
		List<Cell> possibleCells = new ArrayList<Cell>();
		
		if (getTurn().getColor() != getPieceColor(start)) {
			return possibleCells;
		}
		
		for (int direction = 0; direction < Layout.DIRECTION.length; direction++) {
			int jumpLength = board.getCount(start, direction);
			for (int k = -1; k < 2; k += 2) {
				int x = start.getRow();
				int y = start.getCol();
				int d = Layout.DIRECTION[direction];
				int dx = LayoutImpl.DELTA[d][0] * jumpLength * k;
				int dy = LayoutImpl.DELTA[d][1] * jumpLength * k;
				
				int newX = x + dx;
				int newY = y + dy;
				Point end = new Point(newY, newX);
				if (!board.validPoint(end)) {
					continue;
				}
				
				if (board.inBetween(start, end, d)) {
					if (board.possibleKill(start, end)) {
						possibleCells.add(board.getCell(end));
					}
				}
			}
		}
		return possibleCells;
	}