【教学类-54-01】20240510超级对对碰(圆点拼图)(9*5、0-255随机)

2024-05-12 05:04

本文主要是介绍【教学类-54-01】20240510超级对对碰(圆点拼图)(9*5、0-255随机),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作品展示

背景需求:

奕娃幼儿园小中大班益智区超级对对碰 - 小红书#幼儿园益智区  #幼儿园益智区素材  #幼儿园区域材料  #幼儿园环创icon-default.png?t=N7T8https://www.xiaohongshu.com/discovery/item/6279bb4d000000002103be71?app_platform=android&ignoreEngage=true&app_version=8.34.0&share_from_user_hidden=true&type=video&author_share=1&xhsshare=WeixinSession&shareRedId=ODszMTs4Nk82NzUyOTgwNjg3OTlHS0xC&apptime=1715423047

我觉得这个拼图比较有趣,适合幼儿选择,就想用Python写出来。

AI的思路是:

1、在画布2100*2970(A4竖版)画布里生成9*5单元格,白色背景、黑色线框,单元格离上下左右边距100,保存为底图

2-1、在每个单元格顶部线条中点为圆心画一个半径为80的圆形,填充0-255的随机颜色

2-2、在每个单元格底部线条中点为圆心画一个半径为80的圆形,填充0-255的随机颜色

2-3、在每个单元格左侧线条中点为圆心画一个半径为80的圆形,填充0-255的随机颜色

2-4、在每个单元格右侧线条中点为圆心画一个半径为80的圆形,填充0-255的随机颜色.

3、继续覆盖一个9*5单元格(便于切割)、保存为彩色拼图。

代码展示:

'''
项目:超级对对碰(色彩圆点)9*6 +底图(颜色0-255随机)
作者:AI对话大师,阿夏
时间:20240510
'''from PIL import Image, ImageDraw
import random,osprint('--------1、制作图片-----------')
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\超级对对碰'folder_path=path+r'\jpg'
os.makedirs(folder_path,exist_ok=True)r=80
for ii in range(3):# 创建画布canvas_width = 2100canvas_height = 2970canvas_color = (255, 255, 255)  # 白色背景line_color = (0, 0, 0)  # 黑色线条line_width = 10margin = 100  # 边距canvas = Image.new('RGB', (canvas_width, canvas_height), canvas_color)draw = ImageDraw.Draw(canvas)# 计算单元格大小和绘制区域num_rows = 9num_cols = 6cell_size = min((canvas_width - 2 * margin) // num_cols, (canvas_height - 2 * margin) // num_rows)start_x = (canvas_width - cell_size * num_cols) // 2start_y = (canvas_height - cell_size * num_rows) // 2# 绘制单元格和圆形for row in range(num_rows + 1):y = start_y + row * cell_sizedraw.line([(start_x, y), (start_x + cell_size * num_cols, y)], fill=line_color, width=line_width)for col in range(num_cols + 1):x = start_x + col * cell_sizedraw.line([(x, start_y), (x, start_y + cell_size * num_rows)], fill=line_color, width=line_width)# 保存图像canvas.save(folder_path+fr'\{ii:02d}底图.png')# 上边的圆for row in range(num_rows):for col in range(num_cols):center_x = start_x + (col + 0.5) * cell_sizecenter_y = start_y + row * cell_sizecircle_radius = rcircle_color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))draw.ellipse([(center_x - circle_radius, center_y - circle_radius),(center_x + circle_radius, center_y + circle_radius)], fill=circle_color)# 下边的圆                     # 绘制圆形for row in range(num_rows):for col in range(num_cols):center_x = start_x + (col + 0.5) * cell_sizecenter_y = start_y + (row + 1) * cell_sizecircle_radius = rcircle_color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))draw.ellipse([(center_x - circle_radius, center_y - circle_radius),(center_x + circle_radius, center_y + circle_radius)], fill=circle_color)# 左边的圆for row in range(num_rows):for col in range(num_cols):center_x = start_x + col * cell_sizecenter_y = start_y + (row + 0.5) * cell_sizecircle_radius = rcircle_color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))draw.ellipse([(center_x - circle_radius, center_y - circle_radius),(center_x + circle_radius, center_y + circle_radius)], fill=circle_color)# 右边的圆for row in range(num_rows):for col in range(num_cols):center_x = start_x + (col + 1) * cell_sizecenter_y = start_y + (row + 0.5) * cell_sizecircle_radius = rcircle_color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))draw.ellipse([(center_x - circle_radius, center_y - circle_radius),(center_x + circle_radius, center_y + circle_radius)], fill=circle_color)#  绘制单元格和圆形(再加一次黑色框线,便于裁剪)for row in range(num_rows + 1):y = start_y + row * cell_sizedraw.line([(start_x, y), (start_x + cell_size * num_cols, y)], fill=line_color, width=line_width)for col in range(num_cols + 1):x = start_x + col * cell_sizedraw.line([(x, start_y), (x, start_y + cell_size * num_rows)], fill=line_color, width=line_width)# 保存图像彩色图片canvas.save(folder_path+fr'\{ii:02d}.png')print('--------2、png 合并pdf-----------')
import os
from PIL import Image
from reportlab.lib.pagesizes import A4
from reportlab.lib.utils import ImageReader
from reportlab.pdfgen import canvas# 指定文件夹路径# 获取文件夹中的所有PNG图片文件
image_files = [file for file in os.listdir(folder_path) if file.endswith('.png')]# 创建一个新的PDF文件
pdf_file = path+r'\超级对对碰底图.pdf'  # 替换为实际的输出PDF文件路径
c = canvas.Canvas(pdf_file, pagesize=A4)# 遍历每个PNG图片文件并将其添加到PDF中
for image_file in image_files:image_path = os.path.join(folder_path, image_file)image = Image.open(image_path)image_reader = ImageReader(image)c.setPageSize(A4)c.drawImage(image_reader, 0, 0, width=A4[0], height=A4[1])c.showPage()# 保存并关闭PDF文件
c.save()# print(f"合并完成,PDF文件保存在:{pdf_file}")    

 最后结果:

1、JPG文件夹里:生成3张彩色图和3张底图

2、JPG文件夹外,:合并1个打印文件

教学实践:

时间:2024年5月9日

班级:中4

人数:2人(百日咳隔离)

纸框后面贴了一张白色铅画纸

学具使用现象:

1、9*6格共有54块,数量很多——这份学具真的让孩子们学了很长时间(数独、迷宫、描字帖等学具很多孩子一会儿就完成了)

2、随机颜色太多了,以至于核对大量相近的绿色,花费很长时间,幼儿和老师看得眼睛疼,中途休息了好几次。

3、因为拼上的卡片会移动,所以在卡纸后面贴了一个白色铅画纸(没有框格线),所以幼儿帖的时候一行格子帖歪了。

4、幼儿为了提高效率,把卡片重叠在一起,手动一次性剪,不少卡片剪歪了。

5、两位孩子在两个桌上操作。但都有不少卡片被蹭到地上。(至少有7次拾卡片)——需要2个卡片盒子吗,一个放没有挑选的,一个放选过的不正确的卡片?

6、两套卡片混在一起了,根本看不出是谁的(图案是圆点,结构相同,只有颜色不同,但这个无法区分卡片到底属于那一套。幸运的是我用的卡纸颜色有细微不同(浅绿、浅蓝),这才能区分。

7、幼儿说:”我这里还有白色(白灰色)点子,一点都看不清!“

8、幼儿多次求助”老师,你帮帮我!“”老师,我做不出,不想做了!“

学具调整:

1、数量调整:

从9*6(54)(为了凑满A4竖版,保持单元格是正方形)改为8*5(40)、或7*4(28),减少数量,可以提高幼儿制作效率(最前面和最后面都容易做,中间判断筛选费时)

2、颜色调整:

从0-255随机颜色,改成固定的7-8种不同色系,在它们中间随机取得。这样颜色会少很多,而且只有一种红、一种黄……,就不用区分相近色了。

3、在圆点上添加图案。

打印了3份,还留了一份银白纸的图片,我用记号笔在一些浅色的圆点上加上简单的符号,希望用这些符号作为另一种辨识标记,抵抗”相近色(如:绿色)“带来的视觉干扰。

(塑封后,黑色记号笔图案就被保留在图案里)

4、卡片都用裁纸刀或剪刀切割,边缘整齐

5、卡片需要“圆角”

本来我还想做一款“圆点在单元格左上角坐标、右上角坐标、左下角坐标、右下角坐标”的拼图,但是因为以上的“圆角”,如果打印出来切割的图块,为了安全,四角都会被剪掉一部分。导致圆心部分出现缺失空白。所以就不考虑这种样式了。

这篇关于【教学类-54-01】20240510超级对对碰(圆点拼图)(9*5、0-255随机)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/981670

相关文章

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Macos创建python虚拟环境的详细步骤教学

《Macos创建python虚拟环境的详细步骤教学》在macOS上创建Python虚拟环境主要通过Python内置的venv模块实现,也可使用第三方工具如virtualenv,下面小编来和大家简单聊聊... 目录一、使用 python 内置 venv 模块(推荐)二、使用 virtualenv(兼容旧版 P

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

使用C#如何创建人名或其他物体随机分组

《使用C#如何创建人名或其他物体随机分组》文章描述了一个随机分配人员到多个团队的代码示例,包括将人员列表随机化并根据组数分配到不同组,最后按组号排序显示结果... 目录C#创建人名或其他物体随机分组此示例使用以下代码将人员分配到组代码首先将lstPeople ListBox总结C#创建人名或其他物体随机分组

hdu 2602 and poj 3624(01背包)

01背包的模板题。 hdu2602代码: #include<stdio.h>#include<string.h>const int MaxN = 1001;int max(int a, int b){return a > b ? a : b;}int w[MaxN];int v[MaxN];int dp[MaxN];int main(){int T;int N, V;s

集中式版本控制与分布式版本控制——Git 学习笔记01

什么是版本控制 如果你用 Microsoft Word 写过东西,那你八成会有这样的经历: 想删除一段文字,又怕将来这段文字有用,怎么办呢?有一个办法,先把当前文件“另存为”一个文件,然后继续改,改到某个程度,再“另存为”一个文件。就这样改着、存着……最后你的 Word 文档变成了这样: 过了几天,你想找回被删除的文字,但是已经记不清保存在哪个文件了,只能挨个去找。真麻烦,眼睛都花了。看