# Help with setting up Terrain Set, and Walker Generator

Godot 4.2

### Question

Need help with two things: setting up the terrain set for the tileset, and adjusting the code for it. I followed the code shown in Heartbeast’s video. Here is the code, one for the tilemap:

``````extends Node
class_name Walker

const DIRECTIONS = [Vector2.RIGHT, Vector2.UP, Vector2.LEFT, Vector2.DOWN]

var position = Vector2.ZERO
var direction = Vector2.RIGHT
var borders = Rect2()
var step_history = []
var steps_since_turn = 0
var rooms = []

func _init(starting_position, new_borders):
assert(new_borders.has_point(starting_position))
position = starting_position
step_history.append(position)
borders = new_borders

func walk(steps):
place_room(position)
for step in steps:
if randf() <= 0.5 and steps_since_turn >= 7:
change_direction()

if step():
step_history.append(position)
else:
change_direction()
return step_history

func step():
var target_position = position + direction
if borders.has_point(target_position):
steps_since_turn += 1
position = target_position
return true
else:
return false

func change_direction():
place_room(position)
steps_since_turn = 0
var directions = DIRECTIONS.duplicate()
directions.erase(direction)
directions.shuffle()
direction = directions.pop_front()
while not borders.has_point(position + direction):
direction = directions.pop_front()

func create_room(position, size):
return {position = position, size = size}

func place_room(position):
var size = Vector2(randi() % 4 + 2, randi() % 4 + 2)
var top_left_corner = (position - size/2).ceil()
rooms.append(create_room(position, size))
for y in size.y:
for x in size.x:
var new_step = top_left_corner + Vector2(x, y)
if borders.has_point(new_step):
step_history.append(new_step)
```

And code for the 2D node:
``````

extends Node2D

var borders = Rect2(1, 1, 152, 81)

randomize()
generate_level()

func generate_level():
var walker = Walker.new(Vector2(76, 40.5), borders)
var map = walker.walk(1000)
walker.queue_free()

``````for location in map:
tileMap.erase_cell(0, location)

var used_tiles = tileMap.get_used_cells(0)
for tile in used_tiles:
tileMap.erase_cell(0, tile)
tileMap.set_cells_terrain_connect(0, used_tiles, 0, 0)
``````