猫史档案馆


【Python作品分享】【奇遇之旅】6.6炑炑吖【作品秀】

用户:炑炑吖炑炑吖查看:1 回复:1 评论:1 创建时间:2021-07-12T09:49:27


【作品展示】

center_image

 

【作品介绍】

参赛作品,希望评委大大多加点分,谢谢支持!

 

【作品源代码】

from turtle import Turtle, colormode, tracer, mainloop
import turtle
from random import randrange
from time import clock
from PIL import Image

screen = turtle.Screen()
x,y=800,800
screen.setup(x,y)
screen.bgpic("bgpic.gif")

print("                  奇      遇      之      旅                            ")
print("-----------------------------------------------------------------")
print("想看熊猫吗?那就在键盘上按下‘p’键吧!")
print("想看小鹿吗?那就在键盘上按下‘d’键吧!")
print("看完了吗?")
print("让我们按下空格键进入长隆森林公园吧!")


def symRandom(n):
    return randrange(-n,n+1)

def randomize( branchlist, angledist, sizedist ):
    return [ (angle+symRandom(angledist),
              sizefactor*1.01**symRandom(sizedist))
                     for angle, sizefactor in branchlist ]

def randomfd( t, distance, parts, angledist ):
    for i in range(parts):
        t.left(symRandom(angledist))
        t.forward( (1.0 * distance)/parts )

def tree(tlist, size, level, widthfactor, branchlists, angledist=10, sizedist=5):
    # benutzt Liste von turtles und Liste von Zweiglisten,
    # fuer jede turtle eine!
    if level > 0:
        lst = []
        brs = []
        for t, branchlist in list(zip(tlist,branchlists)):
            t.pensize( size * widthfactor )
            t.pencolor( 255 - (180 - 11 * level + symRandom(15)),
                        180 - 11 * level + symRandom(15),
                        0 )
            t.pendown()
            randomfd(t, size, level, angledist )
            yield 1
            for angle, sizefactor in branchlist:
                t.left(angle)
                lst.append(t.clone())
                brs.append(randomize(branchlist, angledist, sizedist))
                t.right(angle)
        for x in tree(lst, size*sizefactor, level-1, widthfactor, brs,
                      angledist, sizedist):
            yield None


def start(t,x,y):
    colormode(255)
    t.reset()
    t.speed(0)
    t.hideturtle()
    t.left(90)
    t.penup()
    t.setpos(x,y)
    t.pendown()

def doit1(level, pen):
    pen.hideturtle()
    start(pen, 20, -208)
    t = tree( [pen], 80, level, 0.1, [[ (45,0.69), (0,0.65), (-45,0.71) ]] )
    return t

def doit2(level, pen):
    pen.hideturtle()
    start(pen, -135, -130)
    t = tree( [pen], 120, level, 0.1, [[ (45,0.69), (-45,0.71) ]] )
    return t

def doit3(level, pen):
    pen.hideturtle()
    start(pen, 190, -90)
    t = tree( [pen], 100, level, 0.1, [[ (45,0.7), (0,0.72), (-45,0.65) ]] )
    return t

# Hier 3 Baumgeneratoren:
def main():
    screen.clear()
    p = Turtle()
    p.ht()
    tracer(75,0)
    u = doit1(6,Turtle(undobuffersize=1))
    s = doit2(7, Turtle(undobuffersize=1))
    t = doit3(5, Turtle(undobuffersize=1))
    a = clock()
    while True:
        done = 0
        for b in u,s,t:
            try:
                b.__next__()
            except:
                done += 1
        if done == 3:
            break

    tracer(1,10)
    b = clock()
    return "runtime: %.2f sec." % (b-a)


def img(img, t, x, y):
    f = Image.open(img)
    t.hideturtle()
    screen.register_shape(img)
    t.shape(img)
    t.up()
    t.goto(x, y)
    t.down()

img_panda = "panda2.gif"
f = Image.open(img_panda)
panda = turtle.Pen()

img(img_panda, panda, -x//2+f.width//2, -y//2+f.height//2)

img_deer = "deer.gif"
f = Image.open(img_deer)
deer = turtle.Pen()

img(img_deer, deer, x//2-f.width//2, -y//2+f.height//2)

def show(t):
    t.showturtle()

def show_panda():
    show(panda)

def show_deer():
    show(deer)


information = "长隆野生动物世界位于广州市番禺区,是全世界动物种类最多,最大的5A级野生动物主题公园,也是来广州旅游必去的景点之一.\
园区分为自驾车游览区和步行游览区两大部分,后者位于园区东半部,以世界各地的珍稀野生动物为主要特色\
园区内的方舟剧场,大象剧场,河马剧场,花果山剧场等四大剧场剧场均位于此区中.\
它们聚集了五大洲的珍奇异兽,从空中,陆地,水上等不同的形式表演,是园区众多亮点之一."

bg2 ="长隆森林公园.gif"
f = Image.open(bg2)

def infor():
    deer.hideturtle()
    panda.hideturtle()
    screen.bgpic(bg2)
    screen.setup(f.width,f.height)
    print(information)
    print("最后我们一起看看长隆的树吧")
    print("请按下T键")

screen.onkeypress(infor,"space")

screen.onkeypress(show_panda, "p")
screen.onkeypress(show_deer, "d")

screen.onkeypress(main, "t")

screen.listen()

if __name__ == '__main__':
    # main()
    mainloop()

 

【提示】

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

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
炑炑吖炑炑吖

center_imagecenter_imagecenter_imagecenter_image

点赞1


评论