validQ[p : {x_, y_}] :=
If[Clip[p, {1, Length@landscape}] == p &&
MatchQ[landscape[[x, y]], 1 | 5], True, False];
move[p_, o_] := If[validQ[p + o], p + o, p];
randomMove[p_] :=
If[RandomInteger[3] == 0,
RandomChoice[move[p, #] & /@ {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}],
p];
plotLandscape[] :=
Grid[{{"Energy:" <> ToString@energy <> " Score:" <> ToString@score,
SpanFromLeft}, {Null,
ArrayPlot[{ReplacePart[Table[White, {Length@landscape}],
y -> Black]}, ImageSize -> {300, 5},