猫史档案馆


【Python作品分享】奇遇之旅-海洋[奇遇之旅]-S2参赛作品

用户:MINECRAFT_柒MINECRAFT_柒查看:0 回复:3 评论:0 创建时间:2021-07-26T20:02:02


【作品展示】

center_image

 

【作品介绍】

长隆大赛S2参赛作品,我使用了turtle库来作为一个绘图库,这里我使用了椭圆函数来作为我们绘制小动物的头部,用函数的方法进行元素的定位,还用了json数据的导入和writ的方法来进行海洋馆文字的介绍,有不足的希望大家多多指教,欢迎大家来讨论哦

 

【作品源代码】

import turtle
import math
import json

p = turtle.Pen()
mn = turtle.Screen()
mn.bgcolor("skyblue")
p.speed(0)


p.penup()
p.goto(-300, 250)
p.pendown()
p.pencolor("white")
p.pensize(35)
p.forward(125)


p.penup()
p.goto(-75, 240)
p.pendown()
p.pensize(27)
p.forward(150)


p.penup()
p.goto(75, 270)
p.pendown()
p.pensize(30)
p.forward(115)


p.pensize(2)
p.penup()
p.pencolor("#007500")
p.fillcolor("#007500")
p.begin_fill()
p.goto(-375, 100)
p.pendown()
p.goto(-250, 250)
p.goto(-125, 100)
p.goto(0, 300)
p.goto(125, 100)
p.goto(250, 250)
p.goto(375, 100)
p.goto(-375, 100)
p.end_fill()

p.pencolor("#007500")
p.fillcolor("#007500")
p.begin_fill()
p.penup()
p.goto(-375, -170)
p.pendown()
p.forward(750)
p.right(90)
p.forward(175)
p.right(90)
p.forward(750)
p.right(90)
p.forward(175)
p.end_fill()


p.penup()
p.pencolor("#31FFF3")
p.goto(-50, 100)
p.left(90)
p.pendown()

p.begin_fill()
i = 0
for i in range(50):
    p.left(3)
    p.forward(4)
    i = i + 1

i = 0
p.fillcolor("#31FFF3")
for i in range(40):
    p.right(3)
    p.forward(4)
    i = i + 1

i = 0
for b in range(50):
    p.left(3)
    p.forward(4)
    i = i + 1

p.forward(100)
p.left(180)

i = 0
for i in range(50):
    p.right(3)
    p.forward(4)
    i = i + 1

i = 0
for b in range(40):
    p.left(3)
    p.forward(4)
    i = i + 1

for i in range(50):
    p.right(3)
    p.forward(4)
    i = i + 1

p.left(180)
p.forward(110)
p.end_fill()

p.penup()
p.goto(-250, -15)
p.forward(25)

p.pendown()
p.pencolor("green3")
p.dot(150)
p.left(90)
p.penup()
p.forward(20)
p.pendown()
p.pencolor("brown")
p.pensize(15)
p.forward(125)

p.left(180)
p.forward(125)

p.pensize(6)
p.left(180)
p.forward(15)
p.left(120)
p.forward(40)
p.left(180)
p.forward(40)
p.right(298)
p.forward(30)
p.right(120)
p.forward(42)
p.left(180)
p.forward(42)
p.left(117)
p.left(180)
p.pensize(15)
p.forward(105)

p.penup()
p.goto(-170, -40)
#第二棵
p.pendown()
p.pencolor("green")
p.dot(150)
p.penup()
p.forward(20)
p.pendown()
p.pencolor("brown")
p.pensize(15)
p.goto(-170, -185)

p.left(180)
p.forward(125)

p.pensize(6)
p.left(180)
p.forward(15)
p.left(120)
p.forward(40)
p.left(180)
p.forward(40)
p.right(298)
p.forward(30)
p.right(120)
p.forward(42)
p.left(180)
p.forward(42)
p.left(117)
p.left(180)
p.pensize(15)
#p.forward(75)

p.pencolor("yellow2")


def ellipse(a, b, x1, y1, n=500):
    """
        绘制椭圆函数
        :param a: 长半轴长度
        :param b: 短半轴长度
        :param x1: x坐标
        :param y1: y坐标
        :return:
        """
    p.pensize(2)
    p.penup()
    x_cor = x1
    y_cor = y1
    p.goto(x1, y1)

    p.begin_fill()
    p.fillcolor("yellow2")

    for i in range(n):  # 画扁的n边形。当n --> 无穷大,所画出的图形即为椭圆
        radian = 2 * math.pi / n  # 将2pi弧度分成n份,每份为radian
        theta = (i+1)*radian  # 每次弧度增加radian
        next_point = (a*math.cos(theta)+x_cor, b*math.sin(theta)+y_cor)
        p.pendown()
        p.setpos(next_point)


ellipse(20, 15, -265, -125)
#p.hideturtle()
p.end_fill()

p.penup()
p.goto(-265, -135)
p.begin_fill()
p.pendown()
i = 0
for i in range(2):
    p.forward(25)
    p.left(90)
    p.forward(50)
    p.left(90)
    i = i + 1
p.end_fill()


p.pencolor("black")
p.pensize(0.5)
p.penup()
p.goto(-270, -112)
p.left(90)
p.pendown()
p.forward(10)
p.left(180)
p.forward(5)
p.left(90)
p.forward(3)
p.left(90)
p.forward(3)
p.left(180)
p.forward(6)
p.left(180)
p.forward(3)
p.right(90)
p.forward(3)
p.left(90)
p.forward(5)
p.left(180)
p.forward(10)

p.penup()
p.goto(-282, -115)

p.pendown()
p.right(100)
p.pensize(3)
p.pencolor("yellow2")
p.begin_fill()
p.forward(12)
p.right(135)
p.forward(10)
p.end_fill()


p.left(50)
p.penup()
p.forward(15)
p.left(50)
p.forward(5)
p.pendown()
p.pencolor("yellow2")
p.begin_fill()
p.forward(10)
p.right(135)
p.forward(12)
p.end_fill()
p.penup()
p.goto(-277, -125)
p.pencolor("black")
p.pendown()
p.dot(4)
p.left(90)
p.penup()
p.forward(20)
p.pendown()
p.dot(4)


p.penup()
p.right(180)
p.forward(10)
p.left(90)
p.forward(5)
p.pensize(2)
p.pendown()
p.forward(5)
p.left(90)
p.forward(3)
p.left(180)
p.forward(6)

p.penup()
p.goto(-2喵, -160)
p.left(90)
p.pendown()
p.pensize(4)
p.pencolor("yellow2")
p.forward(18)

p.penup()
p.goto(-252, -160)
p.pendown()
p.pensize(4)
p.pencolor("yellow2")
p.forward(18)

p.penup()
p.goto(-230, -160)
p.pendown()
p.pensize(4)
p.pencolor("yellow2")
p.forward(18)

p.penup()
p.goto(-218, -160)
p.pendown()
p.pensize(4)
p.pencolor("yellow2")
p.forward(18)

p.penup()
p.goto(-215, -140)
p.pendown()
p.left(90)
p.forward(15)
p.right(75)
p.forward(13)
p.left(75)

p.pencolor("black")
p.penup()
p.goto(-250, -120)
p.pendown()
p.pensize(1)
p.forward(15)

p.penup()
p.left(180)
p.forward(15)
p.left(90)
p.forward(7)
p.left(90)
p.pendown()
p.forward(15)

p.penup()
p.left(180)
p.forward(50)
p.pendown()

p.forward(15)

p.penup()
p.left(180)
p.forward(15)
p.left(90)
p.forward(7)
p.pendown()
p.left(90)
p.forward(15)

#兔子------------------------------------------------------------------------------------------------------------------
p.penup()
size = 0.3
p.goto(0, -250)  # 前往坐标
p.pendown()
p.left(180)
p.pensize(1)
color = "white"
p.pencolor(color)
p.begin_fill()
p.circle(30*size, 360)  # 头
p.fillcolor(color)
p.end_fill()
p.begin_fill()
p.forward(140*size)
p.right(90)
p.circle(7*size, 360)
p.forward(50*size)
p.right(90)
p.forward(140*size)
p.right(90)
p.forward(50*size)
p.fillcolor(color)
p.end_fill()

p.penup()  # 前腿1
p.begin_fill()
p.backward(30*size)
p.right(90)
p.forward(25*size)
p.left(90)
p.pendown()
p.left(130)
p.forward(60*size)
p.right(90)
p.forward(10*size)
p.right(90)
p.forward(60*size)
p.right(90)
p.forward(10*size)
p.fillcolor(color)
p.end_fill()

p.penup()  # 前腿2
p.begin_fill()
p.backward(20*size)
p.pendown()
p.left(260)
p.pendown()
p.forward(60*size)
p.right(90)
p.forward(10*size)
p.right(90)
p.forward(60*size)
p.right(90)
p.forward(10*size)
p.fillcolor(color)
p.end_fill()

#后腿1
p.penup()
p.right(30)
p.backward(-40*size)
p.left(30)
p.left(60)
p.forward(120*size)
p.right(60)
p.pendown()
p.begin_fill()
p.backward(30 * size)
p.left(30)
p.pendown()
p.forward(60 * size)
p.right(90)
p.forward(10 * size)
p.right(90)
p.forward(60 * size)
p.right(90)
p.forward(10 * size)
p.fillcolor(color)
p.end_fill()

p.penup()  # 后腿2
p.begin_fill()
p.forward(10*size)
p.pendown()
p.left(290)
p.pendown()
p.forward(60*size)
p.right(90)
p.forward(10*size)
p.right(90)
p.forward(60*size)
p.right(90)
p.forward(10*size)
p.fillcolor(color)
p.end_fill()


#耳朵
p.penup()
p.forward(50*size)  # s
p.forward(20*size)
p.left(90)
p.forward(10*size)
p.left(90)
p.left(90)
p.forward(-130*size)
p.right(90)
p.pendown()
p.begin_fill()
p.backward(70*size)
p.left(90)
p.backward(10*size)
p.left(90)
p.backward(90*size)
p.left(90)
p.backward(10*size)
p.fillcolor(color)
p.end_fill()

p.penup()
p.begin_fill()
p.backward(15*size)
p.left(90)
p.pendown()
p.backward(90*size)
p.left(90)
p.backward(10*size)
p.left(90)
p.backward(90*size)
p.left(90)
p.backward(10*size)
p.fillcolor(color)
p.end_fill()

p.pencolor("black")
p.penup()
p.goto(190, 35)
p.pendown()
with open("changlonghy.json", "r", encoding='utf-8') as f:
    lines = f.readlines()
    for i in lines:
        print(i)
        p.penup()
        p.goto(p.xcor(), (p.ycor()-20))
        p.write(i, font=('weiruanyahei', 10,), align="center")
        p.pendown()

p.penup()
p.goto(250, -265)
p.pendown()
p.write("龚子立", font=('weiruanyahei', 18,), align="center")

p.penup()
p.goto(233, 250)
p.pendown()
p.write("长隆海洋王国", font=('weiruanyahei', 20,), align="center")


p.hideturtle()
turtle.mainloop()
turtle.done()

 

【提示】

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

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
MINECRAFT_柒MINECRAFT_柒

我使用了turtle库来作为一个绘图库,这里我使用了椭圆函数来作为我们绘制小动物的头部,用函数的方法进行元素的定位,还用了json数据的导入和writ的方法来进行海洋馆文字的介绍,有不足的希望大家多多指教,欢迎大家来讨论哦

点赞0


评论


lsk666666lsk666666

用了个寂寞的json……

点赞0


评论


热情的小羊牙膏热情的小羊牙膏

椭圆是怎么画的啊 我只会画圆

你的作品好棒

点赞0


评论