summaryrefslogtreecommitdiff
path: root/examples/pyb.py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-10-19 19:02:34 +0100
committerDamien George <damien.p.george@gmail.com>2014-10-19 19:02:34 +0100
commit0c3955b5061816da3353df8e45175b0b56624f52 (patch)
tree3797b868edb92ae5018e459443e6debb4f17737f /examples/pyb.py
parent21ca2d76a2c10935826007daec699aba97679240 (diff)
examples: Update conwaylife to work with new LCD API.
Diffstat (limited to 'examples/pyb.py')
-rw-r--r--examples/pyb.py38
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