• 小学生Python编程——拼图


    ​​​​​​​

    from pgzrun import *

    #{
    empty = [
             [186, 352],
             [266, 352],
             [345, 352],
             [425, 352],
             [186, 432],
             [266, 432],
             [346, 432],
             [425, 432],
             [186, 512],
             [266, 512],
             [346, 512],
             [425, 512],
             [186, 592],
             [266, 592],
             [345, 592],
             [425, 592]
            ]
    #} #empty坐标列表在这里,用于吸附
    #{     
    from random import *
    from PIL import Image
    import os
    def open(images):
        images = images.lstrip()
        images = images.rstrip()
        im = Image.open("images/" + images)
        im1 = im.resize((320,320))
        im1.save("images/" + images, "png")
        im3 = im.resize((240,240))
        im3.save("images/" + images, "png")
        list = []
        for y in range(4): 
            for x in range(4):
                loc = (x * 80,y * 80,(x+1)*80,(y+1)*80)
                list.append(loc)
        shuffle(list)
        num = 0
        for n in list:
            im2 = im1.crop(box = n)
            im2.save("images/h"+ str(num)+ ".png")
            num += 1
        return images
    #}  

    music.play("nice.mp3")

    WIDTH = 960
    HEIGHT = 720

    #每个碎片角色的坐标列表out
    #{
    out = [
          [164, 129],
          [253, 129],
          [344, 129],
          [434, 129],
          [527, 129],
          [617, 129],
          [708, 129],
          [797, 129],
          [163, 218],
          [253, 218],
          [343, 218],
          [433, 218],
          [527, 218],
          [617, 218],
          [707, 218],
          [797, 218]
        ]
    #}

    me = open("flower1.png") #open函数可以把任意图片切分为16块
    a = Actor(me, [700, 495])
    bg = Actor("bg.png")

    #使用for循环创建角色
    chips = []
    for i in range(16):
       
        c = Actor("h" +str(i) + ".png", out[i])
        chips.append(c)

    def draw():
        bg.draw()
        a.draw()

        for g in chips:
            g.draw()
    pic = None
    def on_mouse_down(pos):
        global pic
        #遍历角色列表,判断是否被点击
        for p in chips:
            if p.collidepoint(pos):
                pic = p
        
    def on_mouse_move(pos):
        if pic != None:
            pic.pos = pos
            
    def on_mouse_up(pos):
        global pic
        
        #114~118行是吸附的逻辑
        if pic != None:
            for e in empty:
                if pic.collidepoint(e):
                    pic.pos = e
                    break
                
        pic = None
     
    go()

  • 相关阅读:
    iOS性能优化
    自己的回忆录,记录自己的青春
    【selenium】 元素定位
    俩个不同对象的List获取交集通过属性来判断,JDK8Stream的使用
    redhat配置yum源
    BGP的基本配置
    专利申请常见的几个误区!
    八、stm32-TIM定时器(PWM)
    MES在流程和离散制造企业的15个差别(上)
    axios请求多个服务器
  • 原文地址:https://blog.csdn.net/fqfq123456/article/details/126150258