You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
puzzle-retro/pieces-background.ipynb

96 lines
2.4 KiB
Plaintext

3 years ago
{
"cells": [
{
"cell_type": "code",
"execution_count": 22,
"id": "7b187c4c-1c53-494d-a30f-fa0431cd4665",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Done!\n"
]
}
],
"source": [
"# generate random ID for the pieces\n",
"from shortuuid import uuid\n",
"\n",
"# to draw the background\n",
"from wand.image import Image\n",
"from wand.drawing import Drawing\n",
"\n",
"# rows and columns for the puzzle\n",
"rows = 10\n",
"columns = 15\n",
"\n",
"# resolution for the print\n",
"dpi = 300\n",
"\n",
"# width and height in cm\n",
"image_width = 15\n",
"image_height = 10\n",
"\n",
"# name of the puzzle to be more legible?\n",
"name = 'katamari'\n",
"\n",
"\n",
"# width and height in pixel\n",
"width = int(dpi / 2.54 * image_width)\n",
"height = int(dpi / 2.54 * image_height)\n",
"\n",
"# piece sizes in pixel\n",
"piece_width = width / rows\n",
"piece_height = height / columns\n",
"\n",
"\n",
"pieces = {}\n",
"\n",
"with Image(width = width, height = height) as img:\n",
" draw = Drawing()\n",
" draw.font_size = 9\n",
" draw.text_alignment = 'center'\n",
" \n",
" for y in range(columns):\n",
" for x in range(rows):\n",
" \n",
" # generate a random ID for each piece \n",
" ID = uuid()[:4]\n",
" \n",
" # write the id in the center of each piece\n",
" draw.text(int(x * piece_width + piece_width/2), int(y*piece_height + piece_height/2), f'{name}\\n{ID}')\n",
" \n",
" # store the id and the position in the pieces dictionary\n",
" pieces[ID] = (x,y)\n",
" \n",
" draw(img)\n",
" img.save(filename=f'{name}_retro.png')\n",
" print('Done!')\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}