【教学类-58-06】黑白三角拼图06(1页3张彩色黑点卡片,一种宫格36张,适合一个班级一次操作)

news2024/11/27 22:39:44

作品展示

背景需求

【教学类-58-05】黑白三角拼图05(2-10宫格,每个宫格随机1张-6张,带空格纸,1页3张黑白3张白卡)-CSDN博客文章浏览阅读343次,点赞10次,收藏6次。【教学类-58-05】黑白三角拼图05(2-10宫格,每个宫格随机1张-6张,带空格纸,1页3张黑白3张白卡)https://blog.csdn.net/reasonsummer/article/details/139220580
学具分析:
1、拿到纸片后,孩子都表示:“不会做!”
2、老师提示他们先画每个单元格的对角线,然后圈出三角形,再涂色
3、由于中间包含了平行四边形、菱形、大三角形等多种相连的造型,幼儿搞不懂。
4、最后我把所有直角三角形的黑边圈好,然后幼儿用记号笔、铅笔涂色。
5、幼儿表示没有兴趣画第二张。


改良思路:
1、黑色三角格子外面套白色的边框,让每个三角形都能凸显出来

2、每个单元格四个角坐标上添加黑色圆点,便于幼儿找到连线的位置

3、黑色三角变成彩色三角,吸引幼儿兴趣。

4、考虑到有些孩子无法模仿绘画三角边黑色线条,可以直接用程序生成一份有黑色线条的答案,幼儿照着左侧的黑白三角图案或彩色三角图案,在相应的三角形黑框内涂黑色或彩色

根据上一次黑白三角学具的教学实践,开展彩色三角块的制作:

代码展示

'''

彩色三角图,2宫格36张,3宫格36张……适合班级全体操作

随机图片
AI对话大师,阿夏
2024年5月24日

'''
import os 
from PIL import Image, ImageDraw

for ys in range(12, 13):
    path = r'C:\Users\jg2yXRZ\OneDrive\桌面\黑白三角'
    new = path + fr'\1-10宫格组合图片'
    os.makedirs(new, exist_ok=True)
    radius = 5
    f = 3 * ys  # 一页6张

    b = 400  # 画布大小
    by = 10  # 边距

    for g in range(2, 11):
        for c in range(1, f + 1):
            # 创建bxb的画布
            canvas = Image.new('RGB', (b, b), (255, 255, 255))
            draw = ImageDraw.Draw(canvas)

            # 定义表格的行数和列数、边距
            rows = g
            cols = g
            margin = by

            # 计算单元格的宽度和高度
            cell_width = (b - 2 * margin) // cols
            cell_height = (b - 2 * margin) // rows

            # 绘制表格的竖直线
            for i in range(cols + 1):
                x = margin + i * cell_width
                draw.line([(x, margin), (x, b - margin)], fill=(0, 0, 0), width=2)

            # 绘制表格的水平线
            for i in range(rows + 1):
                y = margin + i * cell_height
                draw.line([(margin, y), (b - margin, y)], fill=(0, 0, 0), width=2)

            # 绘制每个单元格的左上角、右上角、左下角、右下角的黑色圆形
            
            for i in range(rows):
                for j in range(cols):
                    left = margin + j * cell_width
                    upper = margin + i * cell_height
                    right = left + cell_width
                    lower = upper + cell_height

                    # 绘制黑色圆形
                    draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)],
                                 fill=(0, 0, 0), width=5)
                    draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],
                                 fill=(0, 0, 0), width=5)
                    draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],
                                 fill=(0, 0, 0), width=5)
                    draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],
                                 fill=(0, 0, 0), width=5)

            # 保存画布
            mb = f'{g:05d}格{c:05d}02模板{c:05d}.png'
            canvas.save(new + fr'\{mb}')


     
        

            print('---2、计算三个坐标点的黑色三角形不重复图案有几个-------')

            # 创建一个空列表用于存储单元格的坐标
            cell_coordinates = []

            # 计算每个单元格的四个顶点坐标
            for row in range(rows):
                for col in range(cols):
                    top_left = (margin + col * cell_width, margin + row * cell_height)
                    top_right = (margin + (col + 1) * cell_width, margin + row * cell_height)
                    bottom_left = (margin + col * cell_width, margin + (row + 1) * cell_height)
                    bottom_right = (margin + (col + 1) * cell_width, margin + (row + 1) * cell_height)

                    
                    # 将四个顶点坐标添加到列表中
                    cell_coordinates.append([top_left, top_right, bottom_left, bottom_right])
            # print(cell_coordinates)
            # print(len(cell_coordinates))
            # 16
            # [[(0, 0), (400, 0), (0, 400), (400, 400)], [(400, 0), (b, 0), (400, 400), (b, 400)], [(0, 400), (400, 400), (0, b), (400, b)], [(400, 400), (b, 400), (400, b), (b, b)]]

            import random
            import os

            combinations=[]
            # 存储选取的点,随机生成坐标(样式)排除重复,生成10份样式不同的模版
            while len(combinations) < f:
                selected_points = []
                for points in cell_coordinates:
                    selected_points.append(tuple(random.sample(points, 3)))
                combinations.append(tuple(selected_points))

            print(combinations)
            print(len(combinations))
            #  10

            print('---3、制作三个坐标点的黑色三角形(4个)-------')
            from PIL import Image, ImageDraw


            
            # 定义要绘制的坐标点组合
            
            for point_combination in combinations:
                print(point_combination)
                
                # 清空selected_points列表
                selected_points = []
                h=1
                # 遍历每个坐标点组合
                for combination in point_combination:
                    # 从每个列表中随机选取三个点,并加入到selected_points中
                    selected_points.append(tuple(random.sample(combination, 3)))

                        # 读取图像文件
#                创建bxb的画布
                canvas = Image.new('RGB', (b,b), (255, 255, 255))
                draw = ImageDraw.Draw(canvas)

                # 定义表格的行数和列数、边距
                rows = g
                cols = g
                margin = by

                # 计算单元格的宽度和高度
                cell_width = (b - 2 * margin) // cols
                cell_height = (b - 2 * margin) // rows

                # 绘制表格的竖直线
                for i in range(cols + 1):
                    x = margin + i * cell_width
                    draw.line([(x, margin), (x, b - margin)], fill=(0, 0, 0), width=2)

                # 绘制表格的水平线
                for i in range(rows + 1):
                    y = margin + i * cell_height
                    draw.line([(margin, y), (b - margin, y)], fill=(0, 0, 0), width=2)
                color=['red','yellow','orange','blue','green','purple','pink']
                # 遍历每个坐标点组合
                for combination in selected_points:
                    # 绘制填充为黑色的多边形
                
                    # draw.polygon(combination, fill='black',outline=(255, 255, 255), width=1)
                    draw.polygon(combination, fill=random.choice(color), outline=(0, 0, 0), width=2)

      

                # 绘制每个单元格的左上角、右上角、左下角、右下角的黑色圆形
                
                for i in range(rows):
                    for j in range(cols):
                        left = margin + j * cell_width
                        upper = margin + i * cell_height
                        right = left + cell_width
                        lower = upper + cell_height

                        # 绘制黑色圆形
                        draw.ellipse([(left - radius, upper - radius), (left + radius, upper + radius)],
                                    fill=(0, 0, 0), width=5)
                        draw.ellipse([(right - radius, upper - radius), (right + radius, upper + radius)],
                                    fill=(0, 0, 0), width=5)
                        draw.ellipse([(left - radius, lower - radius), (left + radius, lower + radius)],
                                    fill=(0, 0, 0), width=5)
                        draw.ellipse([(right - radius, lower - radius), (right + radius, lower + radius)],
                                    fill=(0, 0, 0), width=5)

                

                # 保存结果图像
                canvas.save(new + fr'\{g:05d}格{c:05d}01图纸{c:05d}.png')
                
                canvas.close()  # 关闭图像文件
    
                        
            




    # # print('---4合并打印------')


    # 第3步,读取图片写入docx,合并PDF

    import os,time
    from docx import Document
    from reportlab.lib.pagesizes import letter
    from reportlab.pdfgen import canvas
    from PyPDF2 import PdfMerger
    from docx.shared import Cm

    # 读取123文件夹中的所有图片地址
    image_folder = new
    new_folder = path+r'\零时文件夹'
    os.makedirs(new_folder, exist_ok=True)
    image_files = [os.path.join(image_folder, file) for file in os.listdir(image_folder) if file.endswith('.png')]

    # 每8个图片一组进行处理
    grouped_files = [image_files[i:i+6] for i in range(0, len(image_files), 6)]
    print(grouped_files)

    # 处理每一组图片
    for group_index, group in enumerate(grouped_files):
        # 创建新的Word文档
        doc = Document(path+r'\模板6格.docx')
        print(group)
        
        # 遍历每个单元格,并插入图片
        for cell_index, image_file in enumerate(group):
            # 计算图片长宽(单位:厘米)
        
            
            # 插入图片到单元格
            table = doc.tables[0]
            cell = table.cell(int(cell_index / 2), cell_index % 2)
            # 6列两个都是6
            cell_paragraph = cell.paragraphs[0]
            cell_paragraph.clear()
            run = cell_paragraph.add_run()
            run.add_picture(image_file, width=Cm(9.4), height=Cm(9.4))
            
        # 保存Word文档
        doc.save(os.path.join(new_folder, f'{group_index + 1:03d}.docx'))
        

    # 所有docx合并成PDF

    # 将10个docx转为PDF
    import os
    from docx2pdf import convert
    from PyPDF2 import PdfFileMerger
    # from PyPDF4 import PdfMerger

    # output_folder = output_folder

    pdf_output_path = path+fr'\黑白三角1-10宫格随机每款{ys}张{ys*3}人使用 一黑一白黑点黑边彩色.pdf'
    # pdf_output_path = path+fr'\黑白三角1-10宫格随机每款{f*ys}图共{ys}张一黑一白黑点白边黑白.pdf'

    # 将所有DOCX文件转换为PDF
    for docx_file in os.listdir(new_folder):
        if docx_file.endswith('.docx'):
            docx_path = os.path.join(new_folder, docx_file)
            convert(docx_path, docx_path.replace('.docx', '.pdf'))


    # 合并零时文件里所有PDF文件
    merger = PdfFileMerger()
    for pdf_file in os.listdir(new_folder):
        if pdf_file.endswith('.pdf'):
            pdf_path = os.path.join(new_folder, pdf_file)
            merger.append(pdf_path)
    time.sleep(2)

    # 保存合并后的PDF文件
    merger.write(pdf_output_path)
    merger.close()

    import shutil
    # 删除输出文件夹
    import time
    shutil.rmtree(new_folder)
    shutil.rmtree(new)
    time.sleep(2)

3宫格生成12份,就是12*3=36张,适合一个班级幼儿一次操作量

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

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

相关文章

线性插值的频域特性

1、抽取和插值的简单说明 抽取和插值是变采样过程中常用的两种手段&#xff0c;其中抽取的目的是降低数据的采样率&#xff0c;以降低对系统存储深度或计算量的要求。插值的目的是提高数据的采样率&#xff0c;以提高系统的计算精度。 M M M倍抽取通常是通过每隔 M M M…

卧槽!这项目开源了!【送源码 】

随着科技的飞速发展&#xff0c;个人财务管理变得越来越重要。一个名为‘Maybe’的创新型个人财务与财富管理应用程序随之诞生&#xff0c;它以其丰富的功能和用户友好的界面受到了广大用户的关注。 现在项目方将这个价值 100万美元的个人理财应用项目开源了 Maybe Maybe应用…

利用cherry pick巧妙地将某次提交单独合并到其他分支

0. 引言 最近在进行系统的多版本并行开发&#xff0c;涉及一些共有基础功能提交时就遇到了麻烦&#xff0c;一份代码需要向多个版本分支进行同步&#xff0c;以保证多版本都能有更新该基础功能。 多次对比提交的方式显然会带来巨大的工作量。但实际上我们可以通过git的cherry…

5,串口编程---实现简单的用串口发送接收数据

单片机通过串口向PC机发送数据 PC机通过串口接收单片机发过来的数据 1.UART和USART的区别&#xff1a; USART支持同步通信方式,可以通过外部时钟信号进行同步传输,而UART仅支持异步通信方式 本开发板STM32F103ZET6有5个串口&#xff0c;用串口1作调试串口&#xff0c;因为串…

git教程(IDEA + 命令行)

首先假设你已经安装 git 且 已经初始化完成&#xff1a; // 初始化git config --global user.name "你的用户名" git config --global user.email "你的邮箱"在当前文件夹下创建一个仓库&#xff0c;且该文件夹下会有多个项目 首先在当前文件夹下新建git…

网工内推 | 高校、外企网工,IE认证优先,年薪最高18w

01 上海外国语大学贤达经济人文学院 &#x1f537;招聘岗位&#xff1a;高校网络主管 &#x1f537;职责描述&#xff1a; 1、负责总机房、网络规划及管理&#xff0c;包括容量规划、成本评估、建设管理等; 2、负责设计、实施及维护全网络架构及规划网络变更计划 3、负责网络功…

什么是“SQL注入攻击”?如何预防和应对?

一、SQL注入攻击的概念 SQL注入攻击是一种针对数据库驱动的应用程序的攻击技术&#xff0c;其中攻击者通过在应用程序的输入字段中插入或“注入”恶意的SQL代码&#xff0c;试图非法访问、操作或破坏后端数据库。当应用程序不正确地处理用户输入&#xff0c;并将其直接拼接到SQ…

C++学习/复习7--泛型编程/函数模板/类模板

一、泛型编程 1.Swap()函数的模板实现 二、函数模板 1.概念 2.格式 3.实例化 &#xff08;1&#xff09;隐式与显示 注意事项&#xff1a;隐式与显示类型转换会产生临时变量&#xff0c;临时变量有常性&#xff0c;所以形参前加const 三、类模板 1.定义 2.例1 3.例2 4.注意事…

错误模块路径: ...\v4.0.30319\clr.dll,v4.0.30319 .NET 运行时中出现内部错误,进程终止,退出代码为 80131506。

全网唯一解决此BUG的文章&#xff01;&#xff01;&#xff01; 你是否碰到了以下几种问题&#xff1f;先说原因解决思路具体操作1、首先将你C:\Windows\Microsoft.NET\文件夹的所有者修改为你当前用户&#xff0c;我的是administrator。2、修改当前用户权限。3、重启电脑4、删…

力扣225. 用队列实现栈

Problem: 225. 用队列实现栈 文章目录 题目描述&#xff1a;思路Code 题目描述&#xff1a; 思路 1.对一个queue模拟栈的操作&#xff0c;同时用一个int类型的变量topElem记录每次每次队列队尾的元素&#xff08;也即是模拟stack中的stack的栈顶元素&#xff09;&#xff1b; 2…

Java Web集成开发环境Eclipse的安装及web项目创建

第一步&#xff1a;下载安装JDK http://t.csdnimg.cn/RzTBXhttp://t.csdnimg.cn/RzTBX 第二步&#xff1a;下载安装Tomcat Tomcat下载安装以及配置_tomcat下载配置-CSDN博客文章浏览阅读2.5k次&#xff0c;点赞2次&#xff0c;收藏13次。Tomcat下载安装及其配置_tomcat下载配…

调整图片和表格尺寸的命令:resizebox

\resizebox 是 LaTeX 中的一个命令&#xff0c;用于调整插入的内容&#xff08;如图像、表格、文本等&#xff09;的大小。它的语法如下&#xff1a; \resizebox{<width>}{<height>}{<content>}其中&#xff1a; <width> 和 <height> 分别表示…

【MATLAB】数字滤波器的设计

一、引言 在信号处理过程中&#xff0c;所处理的信号往往混有噪声&#xff0c;从接收到的信号中消除或减弱噪声是信号传输和处理中十分重要的问题。根据有用信号和噪声的不同特性&#xff0c;提取有用信号的过程称为滤波,实现滤波功能的系统称为滤波器。在以往的模拟电路中用的…

【算法】位运算算法——丢失的数字

题解&#xff1a;丢失的数字(位运算算法) 目录 1.题目2.题解3.位运算异或4.总结 1.题目 题目链接&#xff1a;LINK 2.题解 哈希数组查漏高斯求和排序位运算异或… 3.位运算异或 class Solution { public:int missingNumber(vector<int>& nums) {int ret 0;for…

[Android]项目打包APK时报错PKCS12 keystore not in version 3 format

报错&#xff1a; PKCS12 keystore not in version 3 format Execution failed for task :app:packageRelease. > A failure occurred while executing com.android.build.gradle.tasks.PackageAndroidArtifact$IncrementalSplitterRunnable > com.android.ide.commo…

Java客户端SpringDataRedis(RedisTemplate)上手

文章目录 ⛄概述⛄快速入门❄️❄️导入依赖❄️❄️配置文件❄️❄️测试代码 ⛄数据化序列器⛄StringRedisTemplate⛄RedisTemplate的两种序列化实践方案总结 ⛄概述 SpringData是Spring中数据操作的模块&#xff0c;包含对各种数据库的集成&#xff0c;其中对Redis的集成模…

AI图书推荐:终极ChatGPT企业手册—借助Python和Java实现

《终极ChatGPT企业手册—借助Python和Java实现》&#xff08;Ultimate ChatGPT Handbook for Enterprises&#xff09;是一本关于ChatGPT的手册&#xff0c;旨在帮助企业利用AI能力、提示工程和ChatGPT的解决方案循环来改变企业景观。这本书提供了深入探讨ChatGPT的演变、能力以…

Linux 实验报告3-4

&#xff08;大家好&#xff0c;今天我们来学习Linux的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 实验三 vi编辑器 一、实验目的 二、实验内容 三、主要实验步骤 实验报告 1.进入 vi。 2.建立一个文件&…

磁盘管理后续——盘符漂移问题解决

之前格式化磁盘安装了文件系统&#xff0c;且对磁盘做了相应的挂载&#xff0c;但是服务器重启后挂载信息可能有问题&#xff0c;或者出现盘符漂移、盘符变化、盘符错乱等故障&#xff0c;具体是dev/sda, sdb, sdc 等等在某些情况下会混乱掉 比如sda变成了sdb或者sdc变成了sdb等…

贪心算法[1]

首先用最最最经典的部分背包问题来引入贪心的思想。 由题意可知我们需要挑选出价值最大的物品放入背包&#xff0c;价值即单位价值。 我们需要计算出每一堆金币中单位价值。金币的属性涉及两个特征&#xff0c;重量和价值。 所以我们使用结构体。 上代码。 #include <i…