diff options
author | Damien George <damien.p.george@gmail.com> | 2014-10-19 19:02:34 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-10-19 19:02:34 +0100 |
commit | 0c3955b5061816da3353df8e45175b0b56624f52 (patch) | |
tree | 3797b868edb92ae5018e459443e6debb4f17737f /examples/pyb.py | |
parent | 21ca2d76a2c10935826007daec699aba97679240 (diff) |
examples: Update conwaylife to work with new LCD API.
Diffstat (limited to 'examples/pyb.py')
-rw-r--r-- | examples/pyb.py | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/examples/pyb.py b/examples/pyb.py index 65fed6647..b303777e5 100644 --- a/examples/pyb.py +++ b/examples/pyb.py @@ -6,8 +6,44 @@ def delay(n): pass rand_seed = 1 -def rand(): +def rng(): global rand_seed # for these choice of numbers, see P L'Ecuyer, "Tables of linear congruential generators of different sizes and good lattice structure" rand_seed = (rand_seed * 653276) % 8388593 return rand_seed + +# LCD testing object for PC +# uses double buffering +class LCD: + def __init__(self, port): + self.width = 128 + self.height = 32 + self.buf1 = [[0 for x in range(self.width)] for y in range(self.height)] + self.buf2 = [[0 for x in range(self.width)] for y in range(self.height)] + + def light(self, value): + pass + + def fill(self, value): + for y in range(self.height): + for x in range(self.width): + self.buf1[y][x] = self.buf2[y][x] = value + + def show(self): + print('') # blank line to separate frames + for y in range(self.height): + for x in range(self.width): + self.buf1[y][x] = self.buf2[y][x] + for y in range(self.height): + row = ''.join(['*' if self.buf1[y][x] else ' ' for x in range(self.width)]) + print(row) + + def get(self, x, y): + if 0 <= x < self.width and 0 <= y < self.height: + return self.buf1[y][x] + else: + return 0 + + def pixel(self, x, y, value): + if 0 <= x < self.width and 0 <= y < self.height: + self.buf2[y][x] = value |