• 【教学类-12-03】20221106《连连看横版8*4(2套题目 适合中班))(中班主题《我们的城市》)


    效果展示

    背景需求:

    前期制作了《连连看8*4-不重复16个)《连连看12*4-不重复24个)

    【教学类-12-05】20221107《连连看横版8*4(1套模板+1套幼儿自绘)适合中班大班)(大班主题《我们的城市》)_连连看游戏生成图-CSDN博客文章浏览阅读506次。【教学类-12-05】20221107《连连看横版8*4(1套模板+1套幼儿自绘))(大班主题《我们的城市》)_连连看游戏生成图https://blog.csdn.net/reasonsummer/article/details/127785288

     

    问题分析:

    《连连看8*4-不重复16个)《连连看12*4-不重复24个)采用的是无word模板,按“四列”依次插入图案的方法——第1列8个图案纵向排列完成后,再进入第2列插入8个图案,依次类推。这种方法存在3个问题

    1、纵向连线:中文阅读的顺序是从左到右,并非从上到下,可能会导致幼儿视觉混乱

    2、图案较多:8个、12个图案配对,连线密集,容易交叉,不容易辨认线条。

    3、缺少分割:8*4列图案,中间没有没有分割线,光看图案,并不知道是第1列与第2列的连线,第3列与第4列连线

    因此我希望运用预设的Word表格,横向插入2组配对图案。

    WORD表格制作

     设置每个格子的高度和宽度。都是4.6*3.45

     把边框设为3磅黑色,中间一些细线全部取消(隐藏掉),让连线的空间的大一点。

      图案的位置:第1、3行的图案置于表格顶端。

       图案的位置:选中第2、4行的所有表格,在布局里把图案置于表格底端。

     生成的效果

    代码设计:

    1. '''
    2. 作者:阿夏
    3. 时间:2022年11月7日连连看(A4横板)8*4,两套题)
    4. (A4横排8*4张表格框横纵向中间横剪切))
    5. '''
    6. import os
    7. num=int(input('生成多少份\n'))
    8. Number=int(input('每页制作多少个(16个)\n'))
    9. size=int(input('图案大小(8*4 建议70)\n'))
    10. length=int(input('表格长度(8格)\n'))
    11. weight=int(input('表格宽度(4格)\n'))
    12. print('----------第1步:提取所有图案------------')
    13. list=['✿','☸','✪','☁','➹','✈','☂','☃','◐','☼','☯','◎','❤','♨','☋','♘','★','♫','❀','〼','✉','☏','♕','♖']
    14. print(len(list))# 一共24个图案
    15. print('----------第2步:新建一个临时文件夹------------')
    16. # 新建一个”装N份word和PDF“的文件夹
    17. os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\连连看\零时Word')
    18. print('----------第3步:随机抽取8个不重复的图案 ------------')
    19. import random
    20. from win32com.client import constants,gencache
    21. from win32com.client.gencache import EnsureDispatch
    22. from win32com.client import constants # 导入枚举常数模块
    23. import os,time
    24. import docx
    25. from docx import Document
    26. from docx.shared import Pt
    27. from docx.shared import RGBColor
    28. from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
    29. from docx.oxml.ns import qn
    30. from docxtpl import DocxTemplate
    31. import pandas as pd
    32. from docx2pdf import convert
    33. from docx.shared import RGBColor
    34. for z in range(0,num): #多少份
    35. # word = gencache.EnsureDispatch('Word.Application')
    36. doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\连连看\练练看框架模板.docx')
    37. table = doc.tables[0]
    38. # 先随机抽取8个一列
    39. all=[]
    40. n1=[]
    41. n2=[]
    42. n3=[]
    43. n4=[]
    44. n = random.sample(list, Number) # 24个里面随机抽取16个放入一个组nn
    45. # print(n)
    46. # 第1行:
    47. for n1 in n[0:int(Number/2)]: # 16个里面的1-8个,提取单独数
    48. n3.append(n1)
    49. all.append(n1) # 第1轮8个添入总列表 (插入Word第1行)
    50. # 第2行:
    51. o1 = random.sample(n3, int(Number/2)) # 第1轮8个再随机打乱一次,不重复抽取
    52. for b in o1:
    53. all.append(b)#第1轮8个乱序排列不重复(插入Word第2行)
    54. # print(all)
    55. # 第3行:
    56. for n2 in n[int(Number/2):Number]: #16个里面的9-16个,提取单独数
    57. n4.append(n2)
    58. all.append(n2) # 做第4列的乱序用
    59. # 第4行:
    60. o2 = random.sample(n4, int(Number/2)) # 第2轮8个再随机打乱一次,不重复抽取
    61. for b in o2:
    62. all.append(b)#第2轮8个乱序排列不重复(插入Word第4列)
    63. print(all)
    64. # ['☃', '〼', '❤', '♕', '♫', '✈', '✿', '☸', '♫', '❤', '〼', '✈', '☃', '✿', '♕', '☸', '✪', '☁', '✉', '◎', '♖', '☼', '★', '☋', '♖', '☁', '☼', '☋', '✉', '◎', '✪', '★']
    65. # 确定8*4表格的表格单元格坐标(如第1行第1格是0,0 ,第2行第3格是(1,2)
    66. bg=[]
    67. for x in range(0,weight):
    68. for y in range(0,length):
    69. ww='{}{}'.format(x,y)
    70. bg.append(ww)
    71. # print(bg)
    72. # ['00', '01', '02', '03', '04', '05', '06', '07', '10', '11', '12', '13', '14', '15', '16', '17', '20', '21', '22', '23', '24', '25', '26', '27', '30', '31', '32', '33', '34', '35', '36', '37']
    73. # 提取表格单元格坐标和图形的坐标
    74. for t in range(0,len(all)): # all图案的长度为8*4=32个 遍历0-32(32个)
    75. pp=int(bg[t][0]) # 提取表格bg里面每个元素的第0个数字==单元格X坐标 t=索引数字
    76. qq=int(bg[t][1]) # 提取表格bg里面每个元素的第1个数字==单元格Y坐标 t=索引数字
    77. k=all[t] # 提取all图案列表里面每个图形 t=索引数字
    78. run=table.cell(pp,qq).paragraphs[0].add_run(k) # 在单元格0,0(第1行第1列)输入第0个图图案
    79. run.font.name = '黑体'#输入时默认华文琥珀字体
    80. run.font.size = Pt(size) #输入字体大小默认30号
    81. run.font.color.rgb = RGBColor(200,200,200) #设置颜色浅灰
    82. r = run._element
    83. r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
    84. table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
    85. doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\连连看\零时Word\{}.docx'.format('%02d'%(z+1)))#保存为XX学号的电话号码word
    86. from docx2pdf import convert
    87. # docx 文件另存为PDF文件
    88. inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/连连看/零时Word/{}.docx".format('%02d'%(z+1))# 要转换的文件:已存在
    89. outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/连连看/零时Word/{}.pdf".format('%02d'%(z+1)) # 要生成的文件:不存在
    90. # 先创建 不存在的 文件
    91. f1 = open(outputFile, 'w')
    92. f1.close()
    93. # 再转换往PDF中写入内容
    94. convert(inputFile, outputFile)
    95. print('----------第4步:把都有PDF合并为一个打印用PDF------------')
    96. # 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
    97. import os
    98. from PyPDF2 import PdfFileMerger
    99. target_path = 'C:/Users/jg2yXRZ/OneDrive/桌面/连连看/零时Word'
    100. pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
    101. pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
    102. pdf_lst.sort()
    103. file_merger = PdfFileMerger()
    104. for pdf in pdf_lst:
    105. print(pdf)
    106. file_merger.append(pdf)
    107. file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/连连看/(打印合集)横版合并代码 连连看{}乘4({}份).pdf".format(int(Number/2),num))
    108. file_merger.close()
    109. # doc.Close()
    110. # # print('----------第5步:删除临时文件夹------------')
    111. import shutil
    112. shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/连连看/零时Word') #递归删除文件夹,即:删除非空文件夹

    重点说明:

    终端运行

     图案列表的生成

    Word表格单元格坐标(XY)的索引数的生成

     如何将单个图案输入到指定的Word表格单元格内

    效果再显示:

     感悟:

    1、核心代码:表格单元格索引的确定

    掌握了Word表格单元格的数字、图案、文字输入的方法,可以对“练练看Word模板”进行千变万化板式设计。

     2、框线定位:线条隐藏与题目组合

        表格边框线条的隐藏(空白),增加操作的空间(没有线条干扰视线、多一点画线的空间),

        表格线条加粗(框线分割),减少理解上的迷惑(谁和谁连接?怎么玩),通过加粗线让题目分开、自动组合,快速理解。

      

     3、色彩变浅:凸显结果提供描画机会。

    1、连线:可以凸显幼儿自己绘画线条的颜色,容易辨认操作的结果。

    2、描画:孩子们用铅笔、记号笔描画(部分孩子喜欢描图)

    3、环保:灰色能够节省打印油墨。

     总结:利用word模板(带表格单元格、框线)和py索引代码可以更直接的指向中、大班学习内容本身,比分列纯图案输入更有价值。

    教学活动照片展示:

  • 相关阅读:
    ArcdEngine代码 线和面几何体IGeometry在axMapControl控件上快速绘制,并可自定义颜色
    Maven依赖管理项目构建工具(保姆级教学---下篇)
    正则表达式re模块的使用教程『更新中』
    2022鹏城杯web
    Struts2+Maven+表单标签向MySql表插入数据实现简单注册
    docker run 命令详解(新手入门必备)
    驱动初级Day03_内核模块下_参数和依赖
    正点原子嵌入式linux驱动开发——新字符设备驱动实验
    archlinux 安装ibus-rime
    Selenium入门
  • 原文地址:https://blog.csdn.net/reasonsummer/article/details/127783374