public Result fire(int ...coords) throws BadCoordinate {
        if (coords.length != 3)
            throw new BadCoordinate();
        
        for (int d=0; d<3; d++) {
            if (coords[d] < 0 || coords[d] >= 10) {
                throw new BadCoordinate();
            } else {
                coords[d] = pos[d] - coords[d];
            }
        }
        
        for (Result r : Result.values()) {
            if (r.isValidFor(coords))
                return r;
        }
        
        throw new BadCoordinate();
    }