This works completely as expected. Horizontal Start X = 5 : Start Y = 4 nextX = 4 : NextY = : 4 : counter = : 1 Cells remaining :28 nextX = 3 : NextY = : 4 : counter = : 2 Cells remaining :27 nextX = 2 : NextY = : 4 : counter = : 3 Cells remaining :26 nextX = 1 : NextY = : 4 : counter = : 4 Cells remaining :25 nextX = 0 : NextY = : 4 : counter = : 5 Cells remaining :24 nextX = 0 : NextY = : 3 : counter = : 6 Cells remaining :23 nextX = 0 : NextY = : 2 : counter = : 7 Cells remaining :22 nextX = 0 : NextY = : 1 : counter = : 8 Cells remaining :21 nextX = 0 : NextY = : 0 : counter = : 9 Cells remaining :20 nextX = 1 : NextY = : 0 : counter = : 10 Cells remaining :19 nextX = 2 : NextY = : 0 : counter = : 11 Cells remaining :18 nextX = 3 : NextY = : 0 : counter = : 12 Cells remaining :17 nextX = 4 : NextY = : 0 : counter = : 13 Cells remaining :16 nextX = 5 : NextY = : 0 : counter = : 14 Cells remaining :15 nextX = 5 : NextY = : 1 : counter = : 15 Cells remaining :14 nextX = 4 : NextY = : 1 : counter = : 16 Cells remaining :13 nextX = 3 : NextY = : 1 : counter = : 17 Cells remaining :12 nextX = 2 : NextY = : 1 : counter = : 18 Cells remaining :11 nextX = 1 : NextY = : 1 : counter = : 19 Cells remaining :10 nextX = 1 : NextY = : 2 : counter = : 20 Cells remaining :9 nextX = 2 : NextY = : 2 : counter = : 21 Cells remaining :8 nextX = 3 : NextY = : 2 : counter = : 22 Cells remaining :7 nextX = 4 : NextY = : 2 : counter = : 23 Cells remaining :6 nextX = 5 : NextY = : 2 : counter = : 24 Cells remaining :5 nextX = 5 : NextY = : 3 : counter = : 25 Cells remaining :4 nextX = 4 : NextY = : 3 : counter = : 26 Cells remaining :3 nextX = 3 : NextY = : 3 : counter = : 27 Cells remaining :2 nextX = 2 : NextY = : 3 : counter = : 28 Cells remaining :1 nextX = 1 : NextY = : 3 : counter = : 29 Cells remaining :0 The only change to the code is to swap the gridWidth and gridHeight. The first child is incorrect for the von Neumann neighbourhood with a distance of 1. in the film you can see the finish is correct as the last child is surrounded with occupied cells. Vertical Start X = 4 : Start Y = 5 nextX = 3 : NextY = : 0 : counter = : 1 Cells remaining :28 nextX = 2 : NextY = : 0 : counter = : 2 Cells remaining :27 nextX = 1 : NextY = : 0 : counter = : 3 Cells remaining :26 nextX = 0 : NextY = : 0 : counter = : 4 Cells remaining :25 nextX = 0 : NextY = : 1 : counter = : 5 Cells remaining :24 nextX = 1 : NextY = : 1 : counter = : 6 Cells remaining :23 nextX = 2 : NextY = : 1 : counter = : 7 Cells remaining :22 nextX = 3 : NextY = : 1 : counter = : 8 Cells remaining :21 nextX = 4 : NextY = : 1 : counter = : 9 Cells remaining :20 nextX = 4 : NextY = : 0 : counter = : 10 Cells remaining :19 This is the same as the above with a new start location of the bottom left hand corner and the first child is correct. However the run completes when there is an empty space in the bottom row. It is as if the bottom row is not recognised. Vertical2 Start X = 0 : Start Y = 5 nextX = 0 : NextY = : 4 : counter = : 1 Cells remaining :28 nextX = 0 : NextY = : 3 : counter = : 2 Cells remaining :27 nextX = 0 : NextY = : 2 : counter = : 3 Cells remaining :26 nextX = 0 : NextY = : 1 : counter = : 4 Cells remaining :25 nextX = 0 : NextY = : 0 : counter = : 5 Cells remaining :24 nextX = 1 : NextY = : 0 : counter = : 6 Cells remaining :23 nextX = 2 : NextY = : 0 : counter = : 7 Cells remaining :22 nextX = 3 : NextY = : 0 : counter = : 8 Cells remaining :21 nextX = 4 : NextY = : 0 : counter = : 9 Cells remaining :20 nextX = 4 : NextY = : 1 : counter = : 10 Cells remaining :19 nextX = 3 : NextY = : 1 : counter = : 11 Cells remaining :18 nextX = 2 : NextY = : 1 : counter = : 12 Cells remaining :17 nextX = 1 : NextY = : 1 : counter = : 13 Cells remaining :16 nextX = 1 : NextY = : 2 : counter = : 14 Cells remaining :15 nextX = 2 : NextY = : 2 : counter = : 15 Cells remaining :14 nextX = 3 : NextY = : 2 : counter = : 16 Cells remaining :13 nextX = 4 : NextY = : 2 : counter = : 17 Cells remaining :12 nextX = 4 : NextY = : 3 : counter = : 18 Cells remaining :11 nextX = 3 : NextY = : 3 : counter = : 19 Cells remaining :10 nextX = 2 : NextY = : 3 : counter = : 20 Cells remaining :9 nextX = 1 : NextY = : 3 : counter = : 21 Cells remaining :8 nextX = 1 : NextY = : 4 : counter = : 22 Cells remaining :7 nextX = 2 : NextY = : 4 : counter = : 23 Cells remaining :6 nextX = 3 : NextY = : 4 : counter = : 24 Cells remaining :5 nextX = 4 : NextY = : 4 : counter = : 25 Cells remaining :4