猫史档案馆


【Python作品分享】02-光速解密-工程包【作品秀】

用户:bilibili西瓜bilibili西瓜查看:0 回复:0 评论:0 创建时间:2021-09-12T14:32:21


【作品展示】

center_image

 

【作品介绍】

 

【作品源代码】

# 光速解密-工程包
# 第93行开始为学生编写代码,从此处开始编写
check = 0.02 # 可以通过调整差异度修改精度(0.01~0.09)
import turtle as t
import time
import math
from random import randint, uniform, choice
from PIL import Image, ImageGrab, ImageChops
from win32.win32api import GetSystemMetrics as g

class LightSaberPen():
    def __init__(self):
        import turtle as t
        self.p1 = t.Pen()
        self.p2 = t.Pen()
        self.p3 = t.Pen()
        self.p4 = t.Pen()
        self.p1.pensize(25)
        self.p2.pensize(21)
        self.p3.pensize(17)
        self.p4.pensize(13)
        self.p1.pencolor((0.7, 0.7, 0.75))
        self.p2.pencolor((0.8, 0.8, 0.85))
        self.p3.pencolor((0.9, 0.9, 0.98))
        self.p4.pencolor((0.95, 0.95, 0.95))
    def goto(self, x, y):
        self.p1.goto(x, y)
        self.p2.goto(x, y)
        self.p3.goto(x, y)
        self.p4.goto(x, y)
    def penup(self):
        self.p4.penup()
        self.p3.penup()
        self.p2.penup()
        self.p1.penup()
    def pendown(self):
        self.p1.pendown()
        self.p2.pendown()
        self.p3.pendown()
        self.p4.pendown()
    def speed(self, x):
        self.p1.speed(x)
        self.p2.speed(x)
        self.p3.speed(x)
        self.p4.speed(x)
    def forward(self, x):
        self.p1.forward(x)
        self.p2.forward(x)
        self.p3.forward(x)
        self.p4.forward(x)
    def left(self, x):
        self.p1.left(x)
        self.p2.left(x)
        self.p3.left(x)
        self.p4.left(x)
    def right(self, x):
        self.p1.right(x)
        self.p2.right(x)
        self.p3.right(x)
        self.p4.right(x)
    def circle(self, r, e=360):
        self.p4.pencolor((0.7, 0.7, 0.75))
        self.p4.pensize(25)
        self.p4.circle(r, e)
        self.p4.pencolor((0.8, 0.8, 0.85))
        self.p4.pensize(21)
        self.p4.circle(r, -e)
        self.p4.pencolor((0.9, 0.9, 0.98))
        self.p4.pensize(17)
        self.p4.circle(r, e)
        self.p4.pencolor((0.95, 0.95, 0.95))
        self.p4.pensize(13)
        self.p4.circle(r, -e)
    def clear(self):
        self.p1.clear()
        self.p2.clear()
        self.p3.clear()
        self.p4.clear()
t.bgcolor((0, 0, 0))
t1 = LightSaberPen()
t.setup(680, 570)
t.bgpic('科技大门.png')
t.update()
time.sleep(1)
im1 = ImageGrab.grab()
im1.save('im1.png')

t1.penup()
t1.goto(0, -150)
t1.pendown()
print('加载完毕,开始绘制')

#————————————————————代码完成区(开始)——————————————————
t1.speed(0)
t1.circle(145)
t1.left(60)
t1.forward(250)
t1.left(120)
t1.forward(250)
t1.left(120)
t1.forward(250)
t1.left(150)
t1.forward(290)
t1.left(150)
t1.forward(250)
t1.left(120)
t1.forward(250)
t1.left(120)
t1.forward(250)














#————————————————————代码完成区(结束)——————————————————
print('正在读取……')
t.hideturtle()
time.sleep(1)
im2 = ImageGrab.grab()
im2.save('im2.png')
dic = {
    (1920, 1080): ('1920x1080x150%.png', 1.5),
    (1680, 1050): ('1680x1050x150%.png', 1.5),
    (1600, 900): ('1600x900x125%.png', 1.25),
    (1440, 900): ('1440x900x125%.png', 1.25),
    (1400, 1050): ('1400x1050x150%.png', 1.5),
    (1366, 768): ('1366x768x100%.png', 1),
    (1360, 768): ('1360x768x100%.png', 1),
    (1280, 1024): ('1280x1024x150%.png', 1.5),
    (1280, 960): ('1280x960x125%.png', 1.25),
    (1280, 800): ('1280x800x100%.png', 1),
    (1280, 768): ('1280x768x100%.png', 1),
    (1280, 720): ('1280x720x100%.png', 1),
    (1280, 600): ('1280x600x100%.png', 1),
    (1152, 8喵): ('1152x8喵x125%.png', 1.25),
    (1024, 768): ('1024x768x100%.png', 1),
    (800, 600): ('800x600x100%.png', 1),
}

img2 = ImageChops.difference(im1, im2) # 对比
w2, h2 = img2.size # 出图尺寸
b = round(w2 / g(0), 2) # 获取缩放比例
img1 = Image.open(dic[(w2, h2)][0])
img2_w = int(dic[(w2, h2)][1] * w2 / b)
img2_h = int(img2_w / w2 * h2)
new = img2.resize((img2_w, img2_h))
new.save('new.png')
w2_n, h2_n = new.size
if w2_n < w2:
    img1 = img1.crop(
        (
            (w2-w2_n)/2,
            (h2-h2_n)/2,
            w2-(w2-w2_n)/2,
            h2-(h2-h2_n)/2
        )
    )
elif w2_n > w2:
    new = new.crop(
        (
            (w2_n-w2)/2,
            (h2_n-h2)/2,
            w2_n-(w2_n-w2)/2,
            h2_n-(h2_n-h2)/2
        )
    )
print('判断差异度……')
diff = ImageChops.difference(img1, new)
diff.save('diff.png')
w, h = diff.size
d = diff.load()
a = 0
b = 0
for x in range(0, w):
    for y in range(0, h):
        # if d[x, y] != (0, 0, 0):
        #     b += 1
        # a += 1
        if d[x, y][0] > 40 or d[x, y][1] > 40 or d[x, y][1] > 40:
            b += 1
        a += 1
print(a, b)
res = b / a
print('差异度:', res, sep='')
t1.clear()

if res < check:
    print('识别成功!')
    for i in range(3):
        t.bgpic('蓝光1.png')
        t.update()
        time.sleep(0.1)
        t.bgpic('蓝光2.png')
        t.update()
        time.sleep(0.1)
        t.bgpic('蓝光3.png')
        t.update()
        time.sleep(0.1)
    for j in range(1, 19):
        t.bgpic('门'+str(j)+'.png')
        t.update()
        time.sleep(0.1)
else:
    print('识别失败!')
    for i in range(3):
        t.bgpic('红光1.png')
        t.update()
        time.sleep(0.1)
        t.bgpic('红光2.png')
        t.update()
        time.sleep(0.1)
        t.bgpic('红光3.png')
        t.update()
        time.sleep(0.1)

t.done()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页