summaryrefslogtreecommitdiffstatshomepage
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
parent21ca2d76a2c10935826007daec699aba97679240 (diff)
downloadmicropython-0c3955b5061816da3353df8e45175b0b56624f52.tar.gz
micropython-0c3955b5061816da3353df8e45175b0b56624f52.zip
examples: Update conwaylife to work with new LCD API.
-rw-r--r--examples/conwaylife.py20
-rw-r--r--examples/lcd.py36
-rw-r--r--examples/pyb.py38
3 files changed, 47 insertions, 47 deletions
diff --git a/examples/conwaylife.py b/examples/conwaylife.py
index 89ef94c8c6..f99796175f 100644
--- a/examples/conwaylife.py
+++ b/examples/conwaylife.py
@@ -1,7 +1,9 @@
#import essential libraries
-import lcd
import pyb
+lcd = pyb.LCD('x')
+lcd.light(1)
+
# do 1 iteration of Conway's Game of Life
def conway_step():
for x in range(128): # loop over x coordinates
@@ -21,26 +23,24 @@ def conway_step():
# apply the rules of life
if self and not (2 <= num_neighbours <= 3):
- lcd.reset(x, y) # not enough, or too many neighbours: cell dies
+ lcd.pixel(x, y, 0) # not enough, or too many neighbours: cell dies
elif not self and num_neighbours == 3:
- lcd.set(x, y) # exactly 3 neigbours around an empty cell: cell is born
+ lcd.pixel(x, y, 1) # exactly 3 neigbours around an empty cell: cell is born
# randomise the start
def conway_rand():
- lcd.clear() # clear the LCD
+ lcd.fill(0) # clear the LCD
for x in range(128): # loop over x coordinates
for y in range(32): # loop over y coordinates
- if pyb.rand() & 1: # get a 1-bit random number
- lcd.set(x, y) # set the pixel randomly
+ lcd.pixel(x, y, pyb.rng() & 1) # set the pixel randomly
# loop for a certain number of frames, doing iterations of Conway's Game of Life
def conway_go(num_frames):
for i in range(num_frames):
conway_step() # do 1 iteration
lcd.show() # update the LCD
- pyb.delay(300)
+ pyb.delay(50)
-# PC testing
-lcd = lcd.LCD(128, 32)
+# testing
conway_rand()
-conway_go(1000)
+conway_go(100)
diff --git a/examples/lcd.py b/examples/lcd.py
deleted file mode 100644
index 3303337bfb..0000000000
--- a/examples/lcd.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# LCD testing object for PC
-# uses double buffering
-class LCD:
- def __init__(self, width, height):
- self.width = width
- self.height = height
- 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 clear(self):
- for y in range(self.height):
- for x in range(self.width):
- self.buf1[y][x] = self.buf2[y][x] = 0
-
- 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 reset(self, x, y):
- if 0 <= x < self.width and 0 <= y < self.height:
- self.buf2[y][x] = 0
-
- def set(self, x, y):
- if 0 <= x < self.width and 0 <= y < self.height:
- self.buf2[y][x] = 1
diff --git a/examples/pyb.py b/examples/pyb.py
index 65fed6647e..b303777e5a 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