The number of arguments to the term ship(...)
in the second line (after solution predicate) is wrong. It is:
middleShip(ship(_,_,_,_,'Black',_),Shipes),
while it should be:
middleShip(ship(_,_,_,'Black',_),Shipes),
I haven't checked if this works, but this is causing your solver to fail for sure.