【教学类-11】20221103《扑克牌》(大班益智区个别化活动》)

发布于:2022-11-03 ⋅ 阅读:(683) ⋅ 点赞:(0)

作品效果图

1、全部黑色(草花黑桃)3-10

2、全部红色(红桃方块)3-10

 

3、四种图案随机出现3-10(单页图案不重复)

 

背景需求:

 

扑克牌是孩子们非常喜欢的一款益智区游戏

模板设置:

新建模板,名称为”扑克牌模板docx“

 页边距设置

 页眉页脚设置

 分栏设置

 

 文字段落设置(光标位置 左上角,小四 宋体)段落行距设为固定值1,几乎看不见光标 

 

扑克牌设置:

百度图片上找了一张高清的扑克牌全图 

PS里面反复制作固定尺寸。

 单张扑克牌尺寸:4.52*6.38CM

本次活动用到的牌面——四套牌面的3-10, 

 

代码设计: 

'''

作者:阿夏
时间:2022年11月3日扑克牌-不重复图案)
(A4竖排4*4张))
'''

import os

num=int(input('生成多少份\n'))
Number=int(input('每页制作多少个(16个)\n'))
colour=int(input('1、黑桃草花(黑色) 2、红桃方块(红色) 3、四图案混合\n'))


print('----------第1步:提取所有的扑克牌的路径------------')


if colour==1:    #全部黑色图案  黑桃草花
    path=[]
    for i in range(1,9):
        p=r"C:\Users\jg2yXRZ\OneDrive\桌面\扑克牌\{}.png".format(i)
        path.append(p)
    for i in range(17,25):
        p=r"C:\Users\jg2yXRZ\OneDrive\桌面\扑克牌\{}.png".format(i)
        path.append(p)    
    print(path)
    title='黑桃草花'

if colour==2: #全部红色图案  红桃方块
    path=[]
    for i in range(9,17):
        p=r"C:\Users\jg2yXRZ\OneDrive\桌面\扑克牌\{}.png".format(i)
        path.append(p)
    for i in range(25,33):
        p=r"C:\Users\jg2yXRZ\OneDrive\桌面\扑克牌\{}.png".format(i)
        path.append(p)    
    print(path)
    title='红桃方块'
if colour==3: #黑色+红色图案  黑桃草花红桃方块
    path=[]
    for i in range(1,33):
        p=r"C:\Users\jg2yXRZ\OneDrive\桌面\扑克牌\{}.png".format(i)
        path.append(p)
    print(path)
    title='四图案混合'


print('----------第2步:新建一个临时文件夹------------')
# 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\扑克牌\零时Word')


print('----------第3步:随机抽取16个不重复的扑克牌 ------------')

import docx
from docx import Document
from docx.shared import Pt 
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
import random

for nn in range(1,num+1):    
    # word = gencache.EnsureDispatch('Word.Application')
    doc = docx.Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\扑克牌\扑克牌模板.docx')# 打开带docx模板(这个模板有页脚的页码,阿夏认为页码是必须的)
    doc.paragraphs[0].clear()
    # 随机抽取8个不重复空心图案(#CSDN博主「孟意昶」 原文链接:https://blog.csdn.net/weixin_44999258/article/details/125163277)
    shuffle = random.sample(path, Number)    # 随机抽取8个不重复空心图案
    print(shuffle)    # 
    for b in shuffle:     # 单个取值
        print(b) 
        # doc.add_paragraph(b)     # 把内容按段落输入到doc这个docx文件内
        doc.add_picture(b) 

    # doc.Save()# 把有空格的1.docx保存
    doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\扑克牌\零时Word\{}.docx'.format('%02d'%nn))       
    from docx2pdf import convert

    # docx 文件另存为PDF文件
    inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/扑克牌/零时Word/{}.docx".format('%02d'%nn)  # 要转换的文件:已存在
    outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/扑克牌/零时Word/{}.pdf".format('%02d'%nn)  # 要生成的文件:不存在
    # 先创建 不存在的 文件
    f1 = open(outputFile, 'w')
    f1.close()
    # 再转换往PDF中写入内容
    convert(inputFile, outputFile)
    
print('----------第4步:把都有PDF合并为一个打印用PDF------------')
    
# 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
import os
from PyPDF2 import PdfFileMerger
target_path =  'C:/Users/jg2yXRZ/OneDrive/桌面/扑克牌/零时Word'
pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
pdf_lst.sort()
file_merger = PdfFileMerger()
for pdf in pdf_lst:
    print(pdf)
    file_merger.append(pdf)
file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/扑克牌/(打印合集-{})扑克牌.pdf".format(title))
file_merger.close()
# doc.Close()

# print('----------第5步:删除临时文件夹------------')    
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/扑克牌/零时Word') #递归删除文件夹,即:删除非空文件夹

文件所在位置:

所有扑克牌排面、docx模板、生成的PDF合集都在C:\Users\jg2yXRZ\OneDrive\桌面\扑克牌\文件夹内。

作品效果:

 

 

 教学实录

待补充

感悟:

扑克牌是孩子们最喜欢的游戏。


网站公告

今日签到

点亮在社区的每一天
去签到