前言
今天,我们来用Python画房子。
一、第一种
第一种比较简单。
代码:
import turtle as t
import time
def go(x, y):
t.penup()
t.goto(x, y)
t.pendown()
def rangle(h,w):
t.left(180)
t.forward(h)
t.right(90)
t.forward(w)
t.left(-90)
t.forward(h)
def leftf(a,l):
t.left(a)
t.forward(l)
def rightr(a,l):
t.right(a)
t.forward(l)
def square(w,h):
t.forward(h)
t.right(90)
t.forward(w)
t.right(90)
t.forward(h)
t.right(90)
t.forward(w)
t.pencolor("#2F4F4F")
t.hideturtle()
t.speed(100)
t.bgcolor("#48D1CC")
t.penup()
t.goto(-600,-250)
t.pendown()
t.forward(950)
t.goto(-400,-250)
t.fillcolor("#B0E0E6")
t.begin_fill()
t.left(90)
t.forward(15)
t.right(90)
t.forward(225)
t.left(-90)
t.forward(15)
# 门子
rangle(22,150)
rangle(15,225)
# 柱子
go(-385,-235)
rangle(15,23)
go(-383,-220)
rangle(100,18)
go(-385,-120)
t.left(90)
t.forward(23)
go(-385,-120)
t.right(90)
rangle(15,23)
go(-280,-235)
rangle(15,23)
go(-278,-220)
rangle(100,18)
go(-280,-120)
t.left(90)
t.forward(23)
go(-280,-120)
t.right(90)
rangle(15,23)
go(-160,-228)
rangle(15,23)
go(-158,-213)
rangle(93,18)
go(-160,-120)
t.left(90)
t.forward(23)
go(-160,-120)
t.right(90)
rangle(15,23)
go(-63,-228)
rangle(15,23)
go(-61,-213)
rangle(93,18)
go(-63,-120)
t.left(90)
t.forward(23)
go(-63,-120)
t.right(90)
rangle(15,23)
go(60,-235)
rangle(15,23)
go(62,-220)
rangle(100,18)
go(60,-120)
t.left(90)
t.forward(23)
go(60,-120)
t.right(90)
rangle(15,23)
go(162,-235)
rangle(15,23)
go(164,-220)
rangle(100,18)
go(162,-120)
t.left(90)
t.forward(23)
go(162,-120)
t.right(90)
rangle(15,23)
t.end_fill()
#顶部分
t.fillcolor("#F0E68C")
t.begin_fill()
go(-400,-105)
leftf(90,600)
leftf(90,10)
leftf(35,50)
leftf(55,538)
leftf(55,55)
leftf(35,6.5)
t.end_fill()
t.fillcolor("#B0E0E6")
t.begin_fill()
go(-149,5)
leftf(150,103)
rightr(120,100)
rightr(90,10)
rightr(90,81)
leftf(120,85)
rightr(90,11.5)
go(-137,8)
leftf(120,76)
leftf(90,78)
leftf(90,76)
leftf(30,75.9)
leftf(120,81.2)
t.end_fill()
go(-120,-52)
leftf(120,45)
leftf(90,15)
leftf(90,45)
leftf(90,15)
t.fillcolor("#5F9EA0")
t.begin_fill()
go(-115,-37)
leftf(180,30)
rightr(90,30)
rightr(90,30)
rightr(90,30)
t.end_fill()
go(-85,-7)
t.right(90)
t.circle(15,180)
leftf(90,30)
t.fillcolor("#B0E0E6")
t.begin_fill()
go(-320,-45)
t.left(90)
square(150,15)
t.end_fill()
t.fillcolor("#5F9EA0")
t.begin_fill()
go(-305,-30)
t.right(90)
square(120,25)
t.end_fill()
t.fillcolor("#5F9EA0")
t.begin_fill()
go(-305,-5)
t.right(90)
square(120,25)
t.end_fill()
go(-245,20)
t.left(90)
t.forward(50)
go(-20,-45)
t.fillcolor("#B0E0E6")
t.begin_fill()
t.left(180)
square(150,15)
t.end_fill()
t.fillcolor("#5F9EA0")
t.begin_fill()
go(-5,-30)
t.right(90)
square(120,25)
t.end_fill()
t.fillcolor("#5F9EA0")
t.begin_fill()
go(-5,-5)
t.right(90)
square(120,25)
t.end_fill()
go(55,20)
t.left(90)
t.forward(50)
go(150,39)
t.forward(100)
go(-275,130)
t.left(180)
t.fillcolor("#B0E0E6")
t.begin_fill()
square(20,40)
go(-280,170)
t.right(90)
square(30,20)
t.end_fill()
go(-370,55)
rightr(180,110)
go(-250,55)
t.forward(35)
go(-205,55)
t.forward(80)
go(-67,55)
t.forward(120)
go(60,55)
t.forward(35)
go(100,53)
t.forward(60)
go(-395,-95)
t.forward(300)
go(-90,-95)
t.forward(35)
go(-40,-95)
t.forward(55)
go(25,-95)
t.forward(175)
#门
go(-70,-229)
leftf(90,90)
t.circle(30,180)
t.forward(90)
go(-80,-180)
t.fillcolor("#5F9EA0")
t.begin_fill()
t.circle(5,360)
t.end_fill()
二、第二种
第二种是黑白的,很好看。
from turtle import *
setup(900, 600, 300, 100)
penup()
bk(300)
pensize(3)
pencolor("black")
seth(90)
fd(80)
pendown()
seth(0)
fd(200) # 屋量长
seth(250)
fd(90) # 屋梁宽
seth(180)
fd(200)
seth(70)
fd(90) # 斜长
penup()
seth(250)
fd(90)
pendown()
# 下方
seth(270)
fd(110)
seth(0)
fd(200)
seth(90)
fd(110)
seth(30)
fd(60)
seth(111)
fd(60)
seth(-69)
fd(60)
seth(-90)
fd(110)
seth(210)
fd(60)
seth(180)
fd(40)
seth(90)
fd(73.2) # 门右上角
seth(210)
fd(30)
seth(270)
fd(58.2)
penup()
seth(90)
fd(58.2/2) # 一半门
seth(0)
fd(8)
pendown()
circle(3)
penup()
seth(180)
fd(8)
seth(90)
fd(29.1)
seth(30)
fd(30)
pendown()
seth(180)
fd(40)
seth(270)
fd(73.2)
seth(180)
fd(80)
seth(90)
penup()
fd(36.6)
pendown()
fd(36.6)
seth(0)
fd(36.6)
seth(270)
fd(36.6)
seth(180)
fd(36.6)
seth(90)
fd(18.3)
seth(0)
fd(36.6)
seth(90)
fd(18.3)
seth(180)
fd(18.3)
seth(270)
fd(36.6)
penup()
fd(36.6)
seth(180)
fd(36.6)
fd(18.3)
seth(90)
fd(110)
pendown()
for i in range(4):
seth(0)
fd(20)
seth(70)
fd(90)
seth(0)
fd(20)
seth(250)
fd(90)
seth(0)
fd(20)
seth(70)
fd(90)
seth(0)
fd(20)
for i in range(2):
penup()
seth(250)
fd(18)
seth(180)
pendown()
for i in range(10):
seth(220)
circle(-16, 80)
penup()
seth(250)
fd(18)
seth(0)
pendown()
for i in range(10):
seth(-40)
circle(16, 80)
done()
三、第三种
第三种也是有些难的。
import turtle
p = turtle.Pen()
p.speed(10)
p.pencolor("#F4A460")
p.penup()
p.goto((-240), (-200))
p.pendown()
p.begin_fill()
p.fillcolor("#F4A460")
p.goto(240, (-200))
p.left(90)
p.goto(240, 50)
p.left(90)
p.goto((-240), 50)
p.left(90)
p.goto((-240), (-200))
p.penup()
p.goto((-200), 10)
p.end_fill()
p.pendown()
# 开始画窗户
p.pencolor("#000000")
p.begin_fill()
p.fillcolor("#FFFFFF")
for i in range(4):
p.forward(60)
p.left(90)
p.end_fill()
p.penup()
p.forward(30)
p.left(90)
p.pendown()
p.forward(60)
p.penup()
for i in range(2):
p.left(90)
p.forward(30)
p.left(90)
p.pendown()
p.forward(60)
p.penup()
# 开始画门
p.pencolor("#FFFFFF")
p.goto(60, (-200))
p.begin_fill()
p.pendown()
p.right(180)
p.pendown()
p.forward(150)
p.right(90)
p.forward(75)
p.right(90)
p.forward(150)
p.fillcolor("#FFFFFF")
p.end_fill()
# 画门把手
p.right(180)
p.forward(75)
p.penup()
p.left(90)
p.forward(10)
p.pendown()
# 画圆
p.begin_fill()
p.fillcolor("#000000")
p.circle(10)
p.end_fill()
p.penup()
p.goto((-240), 50)
p.pendown()
p.setheading(45)
p.pencolor("#808080")
p.begin_fill()
p.fillcolor("#808080")
p.forward(341)
p.right(90)
p.forward(341)
p.end_fill()
turtle.done()
总结
今天就到这了,OK~