小学生python游戏编程3----拼图游戏-准备
小学生python游戏编程3---拼图游戏-准备
- 主要设计
- 1、背景
- 2、图片分隔
- 3、把小图片打乱顺序组装成拼图
- 应用知识点
- 1、python知识点
- 1.1 Pillow(PIL)库的用法介绍
- 1.2 PIL安装
- 1.3 Image属性
- 1.4 image方法
- 功能截图
- 代码实现
- 总结
- 源码获取
主要设计
1、背景
早在1760年,法英两国几乎同时出现这种既流行又有益的娱乐方式。把一张图片粘在硬纸板上,然后把它剪成不规则的小碎片。最初这些图片都是有教育意义的,要么附有适于年轻人阅读的短文,要么向新兴资产阶级传授历史或地理知识。
到19世纪初,新的大规模生产工业技术赋予了拼图明确的形式。以前庞大笨重的拼图由边缘光滑的碎片排列组成,轻微的震动就能使它们分开。在1840年左右,德国和法国的拼图制造商用联锁的咬接机来切割拼图,现代的拼图迷们都很熟悉这种形式。他们用软木材、夹板和纸板代替硬木薄板,大大降低了成本。最终价格低廉的拼图被各阶层的消费者接受,很快在孩子们、成年人和老年人中掀起玩拼图狂潮。
相信大家都玩过很多纸质的,木质的,电子的拼图游戏,今天就讲讲用python如何实现拼图游戏的准备工作。在图片上写些英语单词,孩子拼完一个基本可以看到一个完整的英语单词。
2、图片分隔
把整张图片分隔成n个小图片
3、把小图片打乱顺序组装成拼图
应用知识点
1、python知识点
1.1 Pillow(PIL)库的用法介绍
Pillow库是一个Python的第三方库。
在Python2中,PIL(Python Imaging Library)是一个非常好用的图像处理库,但PIL不支持Python3,所以有人(Alex Clark和Contributors)提供了Pillow,可以在Python3中使用。
打开一张图片并显示,如下代码
# coding=utf-8
from PIL import Image
image = Image.open("aaa.jpg")
image.show()
1.2 PIL安装
(venv) F:\le_python>pip install pillow
Looking in indexes: https://pypi.doubanio.com/simple
Collecting pillowDownloading https://pypi.doubanio.com/packages/ce/1c/c639b5662d3b831c4b95e08bc610a50a5b9e719f71338bedc0117e8dc5d3/Pillow-9.2.0-cp37-cp37m-win32.whl (2.8MB)100% |████████████████████████████████| 2.8MB 6.0MB/s
Installing collected packages: pillow
Successfully installed pillow-9.2.0
1.3 Image属性
image = Image.open("images/yuantu/apple.png")print('width: ', image.width)print('height: ', image.height)print('size: ', image.size)print('mode: ', image.mode)print('format: ', image.format)print('is_animated: ', image.is_animated)print('readonly: ', image.readonly)print('info:', image.info)
显示:
width: 231
height: 184
size: (231, 184)
mode: RGB
format: PNG
is_animated: False
readonly: 1
info: {'dpi': (119.9896, 119.9896), 'Software': 'Snipaste'}
width属性表示图片的像素宽度
height属性表示图片的像素高度
width和height组成了size属性,size是一个元组。
mode属性表示图片的模式,如RGBA,RGB,P,L等。
format属性表示图片的格式,格式一般与图片的后缀扩展名相关。
readonly属性表述图片是否为只读,值为1或0,表示的是布尔值。
info属性表示图片的信息,是一个字典。
1.4 image方法
打开文件:
yuantu = Image.open(os.path.join(rootdir,‘apple.png’))
裁剪图片:
image.crop(box=None): 裁剪图片,返回裁剪区域的图片。box表示裁剪的区域,传入长度为4的元组(x0, y0, x1, y1),不传默认为拷贝原图,相当于copy()方法,如果裁剪的区域超过了原图的区域,超出部分用像素格填充。
box解释:
box, 图片粘贴的位置或区域。传入一个长度为2或4的元组,如果不传值,默认为(0, 0),图片被粘贴在当前图片的左上角。如果传入长度为2的元组(x, y),表示被粘贴图片的左上角坐标位置。如果传入长度为4的元组(x1, y1, x2, y2),表示图片粘贴的区域,此时区域的大小必须与被粘贴图片一致,否则会报错,传入的元组长度为其他值也会报错。
分隔成如下小图
功能截图
代码实现
# -*- coding: utf-8 -*-
# @Time : 2022年10月05日 16时07分
# @Author : Chenyi
# @File : 图片分隔.py# python install pillow
import os
from PIL import Image# 分割图片,横向分成x份,纵向分成y份
def cut_image(image, x, y):width, height = image.sizeitem_width = int(width / x)item_height = int(height / y)box_list = []# (left, upper, right, lower)for i in range(0, x): # 横向for j in range(0, y): # 纵向print(i * item_width, item_height * j, (i + 1) * item_width, item_height * (j+1))box = (i * item_width, item_height * j, (i + 1) * item_width, item_height* (j+1))box_list.append(box)image_list = [image.crop(box) for box in box_list]return image_list# 保存分割后的图片
def save_images(image_list, dir_name, file_name):index = 1for image in image_list:image.save(dir_name+file_name + '-' + str(index) + '.png', 'PNG')index += 1if __name__ == '__main__':rootdir = "images/yuantu"# 获取rootdir目录下的文件名清单list = os.listdir(rootdir)print(list)yuantu = Image.open(os.path.join(rootdir,'apple.png'))print(yuantu)pics=cut_image(yuantu, 3, 3)save_images(pics, "images/fenge/", 'apple')
总结
通过此次的《拼图游戏准备》,让我对PIL中image的相关知识有了进一步的了解,对用 python这门语言进行图片处理比以前更深刻的认识。
源码获取
可关注博主后,私聊博主免费获取
需要技术指导,育娃新思考,企业软件合作等更多服务请联系博主
今天是以此模板持续更新此育儿专栏的第 3 /50次。
可以关注我,点赞我、评论我、收藏我啦。
小学生python游戏编程3----拼图游戏-准备相关推荐
- 小学生python游戏编程4----拼图游戏
小学生python游戏编程4----拼图游戏 主要设计 应用知识点 1.python知识点 1.1 函数定义与使用 1.2 random 2.pygamezero知识点 2.1 基本框架,取上节中讲到 ...
- python游戏编程入门书籍推荐-游戏编程入门书籍推荐:想要游戏编程尽快入门这些书不要错过...
游戏编程一直都是编程之中的一大热点,这也是由于游戏本身的火热造成的结果,所以每年都有很多人在关注着游戏编程.介于此小编今天就来将一些好的游戏编程入门书籍推荐给大家,希望对想要了解和学习游戏编程的朋友能 ...
- 有趣的Python Challenge编程解谜游戏攻略二(5-9关)
**有趣的Python Challenge编程解谜游戏攻略二(5-9关)** 介绍 游戏介绍 0-4关攻略 写在前面 关卡 第5关 第6关 第7关 第8关 第9关 链接总结 第10关预告 介绍 游戏介 ...
- 3D游戏编程与设计——游戏的本质章节作业与练习
3D游戏编程与设计--游戏的本质章节作业与练习 18342138 郑卓民 3D游戏编程与设计--游戏的本质章节作业与练习 作业与练习: 游戏名称及简介: 游戏的随机性 游戏的玩法与目标 游戏的冲突 游 ...
- 微信小游戏入门案例——拼图游戏
微信小游戏入门案例--拼图游戏 涉及内容:canvas组件.小程序界面绘图API 目录结构: pages\game\game.js // pages/game/game.js // 方块的初始位置 v ...
- html5拼图游戏开题报告,拼图游戏开题报告-20210406005939.doc-原创力文档
拼图游戏开题报告 拼图游戏不仅可以帮助 ___打发时间,还可以用于锻炼儿童脑力,帮助少儿 ___大脑思维是Android平台游戏的一个特点. 智能 ___作为一种兼具通讯.办公.娱乐为一体的便携式工具 ...
- python游戏编程书_Python游戏编程快速上手 第4版 (斯维加特著) 中文pdf扫描版[41MB]...
Python是一种高级程序设计语言,因其简洁.易读及可扩展性日渐成为程序设计领域备受推崇的语言. Python游戏编程快速上手 (第4版)通过编写一个个小巧.有趣的游戏来教授Python编程,并且采用 ...
- python小欢喜(七)游戏编程 (2) 挡球游戏的改进:使用中文提示并添加声音效果
在前面的文章<python小欢喜(六)动画 (1) pygame的安装与初步使用>中介绍了如何安装pygame. <python小欢喜(七)游戏编程 (1) 挡球>实现了一个小 ...
- python趣味编程-简单乒乓游戏(多人游戏)
在上一期我们用Python实现了一个简单的计算器的游戏,这一期我们继续使用Python实现一个简单的乒乓球游戏,让我们开始今天的旅程吧~ 简单乒乓游戏(多人游戏) 简单乒乓游戏(多人游戏)是一个 ...
- python趣味编程-高速公路汽车游戏
在上一期我们用Python实现了一个太空大战的游戏,这一期我们继续使用Python实现一个简单的高速公路汽车游戏,让我们开始今天的旅程吧~ Python 中的高速公路汽车游戏免费源代码 Python ...
最新文章
- 修改远程桌面连接端口
- 线性方程组与基尔霍夫定律
- SQL -- 是否或推断线相交以在其内部的平面
- python if语句
- SAP CRM Fiori My Appointment应用里点了Edit按钮后三个Roundtrip分析
- 前端换行显示,后端返回br
- HomeWindowsYesPlayMusic – 一个好看的第三方xx云音乐客户端 YesPlayMusic
- Python_多元回归(一元回归)
- mysql的两种存储方法_mysql的两种存储引擎
- ArrayList源码解读(jdk1.8)
- 洛谷p3803 FFT入门
- quot在c语言里用法,C语言中“#”和quot;##quot;的用法
- Root Pane Container(三)
- 解决同一办公环境局域网下无法添加打印机的情况
- Java-热插拔技术
- 解决“应用程序正常初始化(0x00000005)失败”错误
- excel如何提取图片中的文字?
- python中int() 按照“四舍五入”的方式取整
- iOS:DES加密iOS和Android的匹配
- java十进制转化为二进制