Fix printer config to generate mazes
This commit is contained in:
+29
-5
@@ -1,4 +1,5 @@
|
||||
import random
|
||||
from PIL import Image, ImageDraw
|
||||
from .base import Job
|
||||
|
||||
class MazeJob(Job):
|
||||
@@ -9,20 +10,43 @@ class MazeJob(Job):
|
||||
# Width and Height in cells.
|
||||
# Total width in chars = 2 * w + 1.
|
||||
# w=15 -> 31 chars (Fits comfortably on 80mm printers, tight on 58mm)
|
||||
w = 15
|
||||
h = 15
|
||||
w = 14
|
||||
h = 32
|
||||
|
||||
maze = self.generate_maze(w, h)
|
||||
|
||||
p.text("Najdi cestu z S do E:\n\n")
|
||||
|
||||
# Center the maze
|
||||
# Generate and print image
|
||||
img = self._generate_image(maze)
|
||||
p.set(align='center')
|
||||
for row in maze:
|
||||
p.text("".join(row) + "\n")
|
||||
p.image(img, impl="bitImageColumn")
|
||||
p.set(align='left')
|
||||
p.text("\n")
|
||||
|
||||
def _generate_image(self, maze):
|
||||
# Cell size in pixels
|
||||
cell_size = 16
|
||||
rows = len(maze)
|
||||
cols = len(maze[0])
|
||||
w, h = cols * cell_size, rows * cell_size
|
||||
|
||||
# Create new 1-bit image (White background)
|
||||
# '1' mode = 1-bit pixels, black and white, stored with one pixel per byte
|
||||
img = Image.new('1', (w, h), 1)
|
||||
draw = ImageDraw.Draw(img)
|
||||
|
||||
for r in range(rows):
|
||||
for c in range(cols):
|
||||
# Draw walls as black rectangles
|
||||
if maze[r][c] == '#':
|
||||
x = c * cell_size
|
||||
y = r * cell_size
|
||||
# fill=0 means Black in '1' mode
|
||||
draw.rectangle([x, y, x + cell_size, y + cell_size], fill=0)
|
||||
|
||||
return img
|
||||
|
||||
def generate_maze(self, width, height):
|
||||
rows = 2 * height + 1
|
||||
cols = 2 * width + 1
|
||||
|
||||
Reference in New Issue
Block a user