分享
 
 
 

Python 小试(一)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

这是上半年对分形有兴趣的写的,用到了pygame作为显示接口,

你把pygame的接口函数集看看就很清楚了,然后就是充分利用

了python的数据类型的优势,对对象很陌生的朋友也很容易搞清

下面的程序,有兴趣的朋友可以看看。

#filename fractal.py

import pygame

from pygame.locals import *

fg=220,220,220

bg=0,0,0

#如何指定向量:

#将图形右转90度,使level=1的唯一的线段和线段(0,0)^(1,0)重合,

#然后取父线起点、终点,母线起点,起点指向终点的向量

#∧形填充线父体

f_a=[(.5j,1),

(-.5j,1)]

f_b=[(0,.5),

(.5+.5j,.5-.5j)]

#填充线母体

m_a=[(.5+.25j,.5),

(.5-.25j,.5),

(.25-.5j,.5j),

(.25+.5j,-.5j)]

#龙曲线

m_b=[(.5-.5j,.5+.5j),

(.5-.5j,-.5+.5j)]

#Koch

m_c=[(0,.333),

(.333,.167-.289j),

(.5-.289j,.167+.289j),

(.667,.333)]

#Sierpinski变种

m_d=[(.25-.433j,-.25+.433j),

(.25-.433j,.5),(1,-.25-.433j)]

#四种树

m_e=[(1,.4-.4j),

(1,.4+.4j)]

m_f=[(.5,.5),

(.3,.38+.25j),

(.3,.38-.25j)]

m_g=[(0,.4),(.4,.3),

(.7,.3),(.4,.25-.17j),

(.7,.25+.17j)]

m_h=[(0,.5),

(.5,.5),

(1,.21-.2j),

(1.21-.2j,.41-.12j),

(1.62-.32j,.38+.06j),

(1,.37+.2j),

(1.37+.2j,.36),

(1.73+.2j,.27-.16j)]

p_a=(80+230j,200+0j)

p_b=(50+300j,300+0j)

p_c=(200+330j,-110j)

NAME=['Filling line 1',

'Dragon curve',

'Koch',

'Sierpinski-like',

'Filling line 2',

'Tree 1',

'Tree 2',

'Tree 3',

'Tree 4']

FATHER=[f_a,0,0,0,f_b,0,0,0,0] #父体表

MOTHER=[m_a,m_b,m_c,m_d,m_a,m_e,m_f,m_g,m_h] #母体表

LIMIT=[5,11,5,8,6,8,6,4,4] #最大跌代次数

HOLDON=[0,0,0,0,0,1,1,1,1] #是否保留上一级图形

PLACE=[0,p_a,p_b,p_b,0,p_c,0,0,p_c] #输出与屏幕的向量差

def fractal(base,vector,level):

if level:

for B,V in mother:

b=B*vector+base

v=V*vector

fractal(b,v,level-1)

elif not father:

pygame.draw.line(screen,fg,(base.real,

base.imag),

(base.real+vector.real,

base.imag+vector.imag))

else:

for S,E in father:

s=S*vector+base

e=E*vector+base

pygame.draw.line(screen,fg,(s.real,s.imag),

(e.real,e.imag))

pygame.init()

pygame.display.set_caption('分形图形 0.2α sunyueming')

screen=pygame.display.set_mode((400,400))

screen.fill(bg)

font=pygame.font.Font(None, 16)

fn=0

lv=0

FN=1

LV=1

done=0

while not done:

for e in pygame.event.get():

if e.type == QUIT or (e.type == KEYUP and e.key == K_ESCAPE):

done=1

if e.type == KEYUP and e.key == K_DOWN:

if fn<>len(MOTHER)-1:

fn=fn+1

else:

fn=0

lv=0

screen.fill(bg)

if e.type == KEYUP and e.key == K_SPACE:

if lv<LIMIT[fn]:

lv=lv+1

if not HOLDON[fn]:

screen.fill(bg)

if FN<>fn or LV<>lv:

mother=MOTHER[fn]

father=FATHER[fn]

if not PLACE[fn]:

PB,PV=200+320j,-240j

else:

PB,PV=PLACE[fn]

text='Practal - '+NAME[fn]+' Level='+str(lv+1)+' '

ren=font.render(text, 0, fg, bg)

screen.blit(ren, (10, 10))

FN=fn

LV=lv

fractal(PB,PV,lv)

pygame.display.update()

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有