哪吒拼图单图版_python解谜游戏

python解谜游戏哪吒拼图动画演示
以下是部分代码预览:

"""
单图拼图游戏,本游戏平均切分一张图片,打乱顺序后显示在屏幕上,用鼠标依次单击能交换图片的坐标顺序,直到拼好和原图一样,则成功结束。核心模块 block.py 扫码可见。
"""

__author__ = "lixingqiu"

from block import *

rows,cols = 2,2             # 行列数
amounts = rows*cols         # 初切分的图像总数
imagefile =  "nezha.jpg"    # 待切分的图像

screen = Screen()           # 新建屏幕对象

"成功切分,那么sliced_images_list就不是空的,if语句就成立"
if  sliced_images_list:
    random_index_list = list(range(amounts))               # random_index_list列表存储的是索引,如果是2x2切分,那么初始值为[0,1,2,3]
    shuffle(random_index_list)                             # 洗牌随机索引表,打扰顺序后的值可能是 2,3,0,1
    height_step = image_height//rows                       # 每个被切分的图像的高度
    width_step = image_width //cols                        # 每个被切分的图像的宽度
    left = -image_width//2                                 # 图像左上角x坐标
    top =  image_height//2                                 # 图像左上角y标
    coordinates = []                                       # 存储切分的每张图的中心点坐标,从左上角第一个数起
    "以下代码形成每块图片的中心点坐标,存储在coordinates列表中"
    for y in range(rows):                                  # 2x2切分的话,y的值是0,1
        for x in range(cols):                              # 2x2切分的话,x的值是0,1 
            startx = left + x * width_step                 # 每张切分的图像左上角x坐标
            starty = top  - y * height_step                # 每张切分的图像左上角y坐标             
            centerx = startx + width_step//2               # 每张切分的图像的中心点x坐标
            centery = starty - height_step//2              # 每张切分的图像的中心点y坐标
            coordinates.append((centerx,centery))          # 添加到坐标列表        
    
    [screen.addshape(image) for image in sliced_images_list]  # 注册每张图到形状列表
    
    blocks_list = []
     
    for i in range(amounts):
        "角色己的初始坐标"
        index = random_index_list[i]                          # 取出的索引号是按顺序取出的。
        """Block类,有它新建对象后,它能把分块图进行封装,让图能记住自己原始坐标及即将定位的坐标及接受鼠标单击事件,以便和其它图交换位置。" 
           coordinates[index]是它的初始坐标,coordinates[i]是它即将定位的坐标,把图形,coordinates和index与i传进去即可。           
        """
        s = Block(sliced_images_list[index],coordinates,index,i)   # 由于index已被打乱顺序,所以形成的图片就是随机的
        
        blocks_list.append(s)

    
screen.mainloop()

下载完整源代码与素材,包含各个子模块,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

关于李兴球

李兴球的博客是Python创意编程原创博客
此条目发表在python, turtle分类目录。将固定链接加入收藏夹。