Mercurial > rrr
changeset 7:82d43295ba98
Tweak forest generation
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Mon, 01 Apr 2013 23:15:45 +0200 |
| parents | c98a36b9393e |
| children | cf0dd3ae6b21 |
| files | rrr/level.py |
| diffstat | 1 files changed, 58 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/rrr/level.py Mon Apr 01 22:01:36 2013 +0200 +++ b/rrr/level.py Mon Apr 01 23:15:45 2013 +0200 @@ -9,13 +9,13 @@ { 'name': 'invalid', 'symbol': '?', - 'color': 'magenta', + 'color': 'pink', 'opaque': True, 'opacity': 1.0, 'block': True, }, { - 'name': 'ground', + 'name': 'floor', 'symbol': '.', 'color': 'black', 'opaque': False, @@ -25,7 +25,7 @@ { 'name': 'ground', 'symbol': '.', - 'color': 'gray', + 'color': 'brown', 'opaque': False, 'opacity': 0.0, 'block': False, @@ -39,6 +39,56 @@ 'block': False, }, { + 'name': 'grass', + 'symbol': ',', + 'color': 'green', + 'opacity': 0.0, + 'block': False, + }, + { + 'name': 'weeds', + 'symbol': ';', + 'color': 'green', + 'opacity': 0.125, + 'block': False, + }, + { + 'name': 'bush', + 'symbol': '+', + 'color': 'green', + 'opacity': 0.25, + 'block': False, + }, + { + 'name': 'large bush', + 'symbol': '+', + 'color': 'lime', + 'opacity': 0.33, + 'block': False, + }, + { + 'name': 'tree', + 'symbol': '*', + 'color': 'green', + 'opacity': 0.5, + 'block': True, + }, + { + 'name': 'large tree', + 'symbol': '*', + 'color': 'lime', + 'opacity': 0.75, + 'block': True, + }, + { + 'name': 'jungle', + 'symbol': '#', + 'color': 'lime', + 'opaque': True, + 'opacity': 1.0, + 'block': True, + }, + { 'name': 'wall', 'symbol': '#', 'color': 'gray', @@ -54,18 +104,20 @@ self.width = width self.height = height self.explored = set() - self.map = self.fractal_fill([1, 1, 2, 2, 2, 3, 3, 4, 4]) + self.map = self.fractal_fill([ + 1, 2, 2, 2, 4, 5, 6, 7, 8, 9, 10, 10 + ]) def fractal_fill(self, gradient): max_power = int(math.ceil(math.log(max(self.width, self.height), 2))) frac = [[0] * 2**max_power for y in xrange(2**max_power)] - frac[0][0] = 4 + frac[0][0] = len(gradient) // 2 for i in xrange(max_power + 1): size = 2 ** i for y in xrange(size - 1, -1, -1): for x in xrange(size - 1, -1, -1): frac[y][x] = max(0, min(len(gradient) - 1, - frac[y // 2][x // 2] + random.choice([-1, 0, 1]) + frac[y // 2][x // 2] + random.choice([-1, 0, 0, 1]) )) return [ [gradient[cell] for cell in row[:self.width]]
