python输出 字符塔图形_python:turtle画图 塔

截图:

7a701c84ff731b0b18d7bcf3f6feeb59.png

网址:

https://python123.io/index/turtles/5f277f1977034976bcae26f1

技术要点:

1.注意turtle自身的坐标系、坐标轴朝向。

2.每一层要确定一个海龟起点,我用的是一层图案的左下角位置,如下图所示。根据这个起始点,来计算每层的数据变化、设定画图距离。

红色位置就是每层图案的起点。

9cfa2b9af36ed9e8917bd0ca8b30dcfb.png

3. 矩形、梯形、三角形,都可以做成函数。如果梯形可以任意指定高度参数,需要再加三角函数的计算。为了方便,我的梯形都用高度15、底角tan为15比30,这样上底的长度比下底少60. 梯形的模块,参数有多种设置方法,可以是长度、角度、斜边长度。

代码:

#20200803 钢七连

# python画图

import turtle

import math

mapx=-240

mapy=-240

level_h=60

def top_tri(size):

turtle.begin_fill()

turtle.fillcolor('#84c1ff')

turtle.forward(15)

for i in range(3):

turtle.forward(size)

turtle.left(120)

turtle.end_fill()

def rect(w,h):

turtle.begin_fill()

turtle.fillcolor('#0f0')

for x in range(4):

if x % 2 == 1:

n = h

else:

n = w

turtle.forward(n)

turtle.left(90)

# end for

turtle.end_fill()

# 梯形

def trapezoid(w1, w2 ):

angle_c=27

turtle.begin_fill()

turtle.fillcolor('#00f')

turtle.forward(w1)

turtle.left(180-angle_c )

turtle.forward(34)

turtle.left(angle_c )

turtle.forward(w2)

turtle.left(angle_c )

turtle.forward(34)

turtle.end_fill()

def draw_level(size,level):

turtle.penup()

turtle.goto( (480- size)/2+ mapx ,mapy+ level* level_h)

turtle.setheading(0)

# 移动到矩形左下角

turtle.penup()

turtle.forward(15)

#画一层

turtle.pendown()

rect(size-30, level_h-15)

#先抬笔,再移动到房檐左下角

turtle.penup()

turtle.goto( (480- size)/2+ mapx ,mapy+ level* level_h+45)

trapezoid(size, size-60 )

def main():

draw_w=260

turtle.speed(5)

turtle.showturtle()

# 画笔隐形

# 画笔有效

turtle.pendown()

turtle.pensize(2)

turtle.color('brown')

for i in range(7):

draw_level( draw_w ,i)

draw_w-=30

#塔尖

turtle.goto( (480- 260+ 7*30 )/2+ mapx ,mapy+ 7* level_h)

turtle.setheading(0)

top_tri(20)

turtle.hideturtle()

# unit test

#rect(90, 45)

#trapezoid(200, 140 )

main()

一个python的简单例子。学习的通病,学生只是会了这个答案,缺应用和变化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值