摘要
本程序分为两个部分,都是由python编写而成的。一是图片切割程序,即传入图片的地址,图片的输入目录,程序会按指定的行列进行切割(采用3行3列,分成9张图片用于第二部分游戏的实现)。二是拼图游戏程序,游戏界面的正上方是一个拼图步数统计,界面左边是两个组件,上方是重新开始按钮,下方是拼图的完整原图作为拼图参考,界面右边是拼图游戏的主体,一个正方形再分成3行3列9个小正方块,用于存放8张切割好的图片,一个空白块,空白快用于实现四周小图片的移动。游戏成功会有弹窗提示游戏结束。
引言
背景
自从20世纪90年代初Python语言诞生至今, Python已经成为最受欢迎的程序设计语言之一。自从2004年以后,python的使用率呈线性增长。它被TIOBE编程语言排行榜评为2010年度语言。
拼图游戏是广受欢迎的一种智力游戏,它不仅可以帮助家长锻炼儿童的动手动脑能力,还可帮助扩展儿童的思维,加强还原能力,提高记忆力;同时也可促进家长与孩子之间的互动。
意义
本程序主要意义有扩展思维,加强还原能力,提高记忆力,也可以用来打发时间
实现功能
图片分割
输入指定的图片地址,输入输出的保存目录,输入行列数,程序将指定图片按照指定行列数进行切割,并保存到指定目录。
拼图游戏
第一个程序切割好的3*3=9张小图像块会在运行程序时载入(如果不用第一个程序分割图片,则需要自己准备9张指定大小的小图片按照指定名字放置在指定位置下)。
运行程序会有拼图游戏的界面。如 图1—拼图界面 所示。
右上角是拼图游戏的标题。
步数用于统计用户拼图的步数,每次图像移动后步数+1,点击重新开始可重置步数。
重新开始按钮可以重置游戏,包括重新打乱拼图和重置步数。
鼠标点击的图像块四周存在空白块,则移动图像块,并且步数+1,所有块移动到指定的位置则游戏结束,弹出“你成功了”弹窗。
图1-拼图界面:
系统结构
图片切割
图片裁剪基本原理如 图2—图片切割原理 所示:
图2—图片切割原理:
图片切割流程图如 图3—图片切割流程图 所示:
图3—图片切割流程图 :
拼图游戏
拼图显示原理如 图4—拼图显示流程图 所示:
图4—拼图显示流程图:
鼠标点击移动拼图块原理如 图5—拼图块移动原理 所示:
图5—拼图块移动原理:
拼图游戏实现流程图如 图6—游戏流程图 所示:
图6—游戏流程图 :
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
实现代码
图片分割
from PIL import Image
def splitimage(sre,rownum,colnum,dstpath):
img=Image.open(src)
w,h=img.size #图片大小
if rownum<=h and colnum<=w:
print('original image info:%sx%s,%s,%s'%(w,h,
img.format,img.mode))
print('开始处理图片切割,请稍候-')
s=os.path.split(src)
if dstpath=='':#没有输入路径
dstpath=s[0]#使用源图片所在目录s[0]
fn=s[1].split('.')#s[1]是源图片文件名
basename=fn[0]#主文件名
ext=fn[-1]#扩展名
num=0
rowheight = h//rownum
colwidth = w//colnum
for r in range(rownum):
for c in range(colnum):
box=(c*colwidth,r*rowheight,(c+1)*colwidth,(r+1)*rowheight)
img.crop(box).save(os.path.join(dstpath,basename+''+str(num)+'.'+ext)