用户:秤杆不平衡查看:0 回复:4 评论:0 创建时间:2022-07-31T21:58:35
【作品展示】

【作品介绍】
自己看——上帝的指纹吧!
【作品源代码】
import pygame
import sys
import math
import time
from pygame.locals import*
screen_length = 900
centrex = -0.45
centrey = 0
zx = 0
zy = 0
TULV_TO_ASP = 3/screen_length
cnt = 20
cnt_print = 1
pygame.init()
screen = pygame.display.set_mode((screen_length, screen_length))
pygame.display.set_caption("曼得勃罗集")
rect_l = 5
dict_for_ASP = {pygame.K_t: 1,
pygame.K_0: 2,
pygame.K_1: 3,
pygame.K_2: 4,
pygame.K_3: 5,
pygame.K_4: 6,
pygame.K_5: 9,
pygame.K_6: 10,
pygame.K_7: 12,
pygame.K_8: 15,
pygame.K_9: 20,
pygame.K_b: 30,
pygame.K_m: 60, }
def showinfo():
print("上下左右键移动,")
print("w大s小q还原。")
print("a增精度s相反,")
print("空格显参h说明。")
print("t,0~9,b,m调分辨!")
def z(zx, zy, cx, cy, cnt):
a = (zx, zy)
b = (zx, zy)
for i in range(cnt):
b = (a[0]**2-a[1]**2+cx, 2*a[0]*a[1]+cy)
if math.sqrt(abs(b[0])**2+abs(b[1])**2) >= 2:
return "big"
a = b
return b
#print(z(zx, zy, -1.8, -0.3, cnt))
def draw():
global screen_length, centrex, centrey, zx, zy, TULV_TO_ASP, cnt, screen, rect_l
screen.fi喵))
range_cnt = int(screen_length/rect_l+1)
t1 = time.time()
cnt_for = 0
for x in range(range_cnt):
for y in range(range_cnt):
cx = centrex+TULV_TO_ASP*(rect_l*x+(rect_l/2)-screen_length/2)
cy = centrey+TULV_TO_ASP*(rect_l*y+(rect_l/2)-screen_length/2)
return_z = z(zx, zy, cx, cy, cnt)
if return_z != "big":
pygame.draw.rect(screen, (0, 0, 0),
(x*rect_l, y*rect_l, rect_l, rect_l))
cnt_for += 1
t2 = time.time()
if t2-t1 >= 1:
print(str(((cnt_for)/(range_cnt**2))*100), "%")
t1 = time.time()
# 中心点设置
#pygame.draw.rect(screen, (255, 0, 0),(int(screen_length/2), int(screen_length/2),10,10),)
pygame.display.update()
showinfo()
draw()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYUP:
# 上下左右移动
if event.key == pygame.K_UP:
centrey -= 50*TULV_TO_ASP
draw()
if event.key == pygame.K_LEFT:
centrex -= 50*TULV_TO_ASP
draw()
if event.key == pygame.K_DOWN:
centrey += 50*TULV_TO_ASP
draw()
if event.key == pygame.K_RIGHT:
centrex += 50*TULV_TO_ASP
draw()
# w大a小,a多d少
if event.key == pygame.K_w:
TULV_TO_ASP = TULV_TO_ASP/1.1
draw()
if event.key == pygame.K_a:
cnt = int(cnt*1.1)
draw()
if event.key == pygame.K_s:
TULV_TO_ASP = TULV_TO_ASP*1.1
draw()
if event.key == pygame.K_d and cnt/1.1 >= 10:
cnt = int(cnt/1.1)
draw()
if event.key == pygame.K_q:
TULV_TO_ASP = 3/screen_length
centrex = -0.45
centrey = 0
draw()
# 空格键显示参数
if event.key == pygame.K_SPACE:
print(cnt_print)
print()
print("------------------")
print("| TULV_TO_ASP")
print("| cnt")
print("| centrex", "centrey")
print("| rect_l")
print("------------------")
print("|", TULV_TO_ASP)
print("|", cnt)
print("|", centrex, centrey)
print("|", rect_l)
print("------------------")
cnt_print += 1
# m,b,0~9,t键分别是从小到大设置分辨率
# 可以模糊查找要看的地方,再用t或0键看的更清楚
if event.key==pygame.K_h:
showinfo()
for i in dict_for_ASP:
if event.key == i:
rect_l = dict_for_ASP[i]
draw()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn我建议你学一下numpy库,这里面定义了一个数据类型很喵,就是ndarray,相当于多层嵌套的列表,但用它来运算速度比列表快个几十倍(甚至100倍)。里面还有一些方法很方便编程。
点赞1
评论