Fix printer config to generate mazes

This commit is contained in:
Dejvino
2025-12-23 00:56:47 +01:00
parent 8c7f4f4cb6
commit da8ab4e448
2 changed files with 36 additions and 7 deletions
+29 -5
View File
@@ -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