- add_half_width = (not (length % 2)) * int(length / 2)
- world_db["MAP"][int((length ** 2) / 2) + add_half_width] = ord(".")
- while (1):
- y = rand.next() % length
- x = rand.next() % length
- pos = (y * length) + x
- if "~" == chr(world_db["MAP"][pos]) and is_neighbor((y, x), "."):
- if y == 0 or y == (length - 1) or x == 0 or x == (length - 1):
- break
- world_db["MAP"][pos] = ord(".")
- n_trees = int((length ** 2) / 16)
- i_trees = 0
- while (i_trees <= n_trees):
- single_allowed = rand.next() % 32
- y = rand.next() % length
- x = rand.next() % length
- pos = (y * length) + x
- if "." == chr(world_db["MAP"][pos]) \
- and ((not single_allowed) or is_neighbor((y, x), "X")):
- world_db["MAP"][pos] = ord("X")
- i_trees += 1