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

news2024/11/18 14:32:01

作品展示

背景需求:

奕娃幼儿园小中大班益智区超级对对碰 - 小红书#幼儿园益智区  #幼儿园益智区素材  #幼儿园区域材料  #幼儿园环创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,os

print('--------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 = 2100
    canvas_height = 2970
    canvas_color = (255, 255, 255)  # 白色背景
    line_color = (0, 0, 0)  # 黑色线条
    line_width = 10
    margin = 100  # 边距

    canvas = Image.new('RGB', (canvas_width, canvas_height), canvas_color)
    draw = ImageDraw.Draw(canvas)

    # 计算单元格大小和绘制区域
    num_rows = 9
    num_cols = 6
    cell_size = min((canvas_width - 2 * margin) // num_cols, (canvas_height - 2 * margin) // num_rows)
    start_x = (canvas_width - cell_size * num_cols) // 2
    start_y = (canvas_height - cell_size * num_rows) // 2

    # 绘制单元格和圆形
    for row in range(num_rows + 1):
        y = start_y + row * cell_size
        draw.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_size
        draw.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_size
            center_y = start_y + row * cell_size
            circle_radius = r
            circle_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_size
            center_y = start_y + (row + 1) * cell_size
            circle_radius = r
            circle_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_size
            center_y = start_y + (row + 0.5) * cell_size
            circle_radius = r
            circle_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_size
            center_y = start_y + (row + 0.5) * cell_size
            circle_radius = r
            circle_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_size
        draw.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_size
        draw.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、卡片需要“圆角”

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1664186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Xilinx 千兆以太网TEMAC IP核简介

Xilinx 公司提供了千兆以太网MAC控制器的可参数化LogiCORET™IP解决方案,通过这个IPCore可以实现FPGA与外部网络物理层芯片的互连。基于Xilinx FPGA 的以太网设计,大大降低了工程的设计复杂度,缩短了开发周期,加快了产品的面市速度…

QT 客户端软件开发

QT 是一种功能强大且灵活的跨平台应用程序开发框架,但也存在一些技术难点,需要开发者仔细考虑和克服。以下是一些常见的 QT 软件开发的技术难点。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 跨平台兼容性…

截图文字怎么识别?这里有三种识别方法

截图文字怎么识别?在数字化时代,信息的快速处理和转换成为了提高工作效率的关键。截图文字识别技术,作为连接视觉信息与数字文本的桥梁,极大地便利了我们的工作和生活。它允许用户从图像中提取文字内容,进而编辑、搜索…

软件开发项目实施方案-精华资料(Word原件)

依据项目建设要求,对平台进行整体规划设计更新维护,对系统运行的安全性、可靠性、易用性以及稳健性进行全新设计,并将所有的应用系统进行部署实施和软件使用培训以及技术支持。 根据施工总进度规划,编制本项目施工进度计划表。依据…

2024年电工杯数学建模A题思路 中国电机工程学会杯建模思路分析

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间:2024…

智能驱动,精准管理:打造高效干部管理系统

干部管理系统是现代组织管理中不可或缺的工具,它通过信息技术的应用,提高了干部管理的效率和准确性。干部管理系统的主要功能包括: 1. 信息管理:系统可以存储和管理干部的个人信息,包括基本资料、工作经历、教育背景、…

学习Java的日子 Day44 初识前端

Day44 HTML 学习路线: 前端:展示页面、与用户交互 — HTML 后端:数据的交互和传递 — JavaEE/JavaWeb 1.B/S和C/S B/S:浏览器/服务器 教务系统 C/S:客户端/服务器 优缺点 1.开发/维护成本:B/S相对低 2.运算…

# 电脑突然连接不上网络了,怎么办?

电脑突然连接不上网络了,怎么办? 一、原因分析: 1、IP 地址冲突 2、DNS 解析出现问题。 3、无线网卡驱动损坏。 二、解决方法: 1、修改自动获取 IP 地址为手动设置 IP 地址: 1)查看自己电脑自动获取…

Day 44 完全背包理论基础 518. 零钱兑换 II 377. 组合总和 Ⅳ

完全背包理论基础 ​ 完全背包和0-1背包的最大区别在于完全背包里的每个物品的数量都是无限个&#xff0c;而0-1背包每个物品只有一个&#xff1b; 内嵌循环遍历顺序 ​ 回顾一维数组0-1背包的遍历递推公式&#xff1a; for (int i 0&#xff1b; i < weight.size(); i)…

更适合户外使用的开放式耳机,佩戴舒适音质悦耳,虹觅HOLME NEO体验

随着气温的逐渐升高&#xff0c;不管是在室内工作娱乐&#xff0c;还是到户外运动健身&#xff0c;戴上一款合适的耳机都会帮我们隔绝燥热与烦闷&#xff0c;享受音乐与生活。现在市面上的耳机类型特别多&#xff0c;我很喜欢那种分体式的开放耳机&#xff0c;感觉这种耳机设计…

大模型微调之 在亚马逊AWS上实战LlaMA案例(十)

大模型微调之 在亚马逊AWS上实战LlaMA案例&#xff08;十&#xff09; 训练数据集格式 SageMaker JumpStart 目前支持域适应格式和指令调整格式的数据集。在本节中&#xff0c;我们指定两种格式的示例数据集。有关更多详细信息&#xff0c;请参阅附录中的数据集格式化部分。 …

Leetcode—2079. 给植物浇水【中等】

2024每日刷题&#xff08;130&#xff09; Leetcode—2079. 给植物浇水 实现代码 class Solution { public:int wateringPlants(vector<int>& plants, int capacity) {int ans 0;int step 0;int cap capacity;bool flag false;for(int i 0; i < plants.siz…

浅析SPI接口

SPI是串行外设接口&#xff08;Serial Peripheral Interface&#xff09;的缩写&#xff0c;它是一种同步串行通信接口&#xff0c;用于微控制器和外围设备&#xff08;如传感器、SD卡、其他微控制器等&#xff09;之间的通信。SPI接口通常用于短距离通信&#xff0c;因为它不支…

Coursera吴恩达深度学习专项课程01: Neural Networks and Deep Learning 学习笔记 Week 01

Week 01 of Neural Networks and Deep Learning Course Certificate 本文是学习 https://www.coursera.org/learn/neural-networks-deep-learning 这门课的笔记 Course Intro 文章目录 Week 01 of Neural Networks and Deep Learning[0] Welcome to the Deep Learning Spec…

大模型微调之 在亚马逊AWS上实战LlaMA案例(八)

大模型微调之 在亚马逊AWS上实战LlaMA案例&#xff08;八&#xff09; 微调技术 Llama 等语言模型的大小超过 10 GB 甚至 100 GB。微调如此大的模型需要具有非常高的 CUDA 内存的实例。此外&#xff0c;由于模型的大小&#xff0c;训练这些模型可能会非常慢。因此&#xff0c…

[C++核心编程-07]----C++类和对象之友元应用

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

Numpy求最大、最小值、求累乘、累和

Numpy求最大、最小值 代码举例&#xff1a; ​ 输出结果为&#xff1a; ​ 在这个例子中&#xff0c;我们首先导入了NumPy库&#xff0c;然后创建了一个3x3的矩阵A。接着&#xff0c;我们使用np.max()函数来求矩阵A的最大值&#xff0c;并将结果存储在变量max_value中&#xff…

【35分钟掌握金融风控策略20】贷前风控策略详解-5

目录 反欺诈模型体系和模型在策略中的应用 申请反欺诈评分卡模型 欺诈传导模型 欺诈团伙识别模型 GPS评分卡模型 如何在贷中应用贷前模型 反欺诈模型体系和模型在策略中的应用 反欺诈横型体系主要包括识别个体欺诈和识别团伙欺诈的两类模型。在贷前&#xff0c;常用的识别…

从入门到深入理解——栈

目录 一、栈的定义 二、栈的实现 2.1 栈的结构 2.2 栈的初始化 2.3 栈的销毁 2.3 栈元素的插入 2.4 栈元素的删除 2.5 栈顶元素获取 2.6 栈元素有效个数获取 2.7 栈是否为空判断 三、代码总览 Stack.h Stack.c 测试代码:test.c 四、例题 例一&#xff1a; 例二&#xff…

【Web后端】jsp基础知识_请求转发和重定向

1.jsp基础知识 1.1简介 java server page&#xff0c;运行在服务器端的页面java代码html代码java代码全部都放在<%%>中间 1.2jsp表达式 作用&#xff1a;将动态信息显示在页面上&#xff0c;以字符串方式&#xff0c;返回给浏览器端语法&#xff1a;<%变量或表达式…