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

【作品介绍】
【作品源代码】
# 光速解密-工程包
# 第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