37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
|
# 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
|