收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

用python画漂亮的类似七巧板图形01:39

[复制链接]
6 Q K+ X6 V; A. d% M- Q
! _' S* o* b& i( O* j( ]; d: b
^" e; X+ R* Y1 |5 K
4 h& Q0 q* K! q/ e
01:39
0 N, G6 n7 D. w' P
: A2 g" j4 u7 m M
8 E2 \0 M* D9 Z# H3 f# V5 L
2 b& u; x% o' R, x$ b' n" v
5 h b" v- ]# }$ \3 e

用python画漂亮的类似七巧板图形,源码解释如下:

: b+ g$ _$ B& e9 T. W3 j) Z1 _
# C) q: ]- ^2 Y5 a) g& T
0 X6 c2 V- K5 b: b$ ^
用python画漂亮的类似七巧板图形
! L+ P1 u7 ^7 E: j- k$ `% Y8 K
( l/ f* o" g! n0 [- B; [
7 ? `0 }, T& c' j" P. S# v' v

import turtle as tu 调用turtle库

# ]# I T( s6 |% L& D2 c
% R5 L( r; h5 ^4 r! z
, h; Z d3 z1 x5 @) j6 ~& N; J

import colorsys 调用颜色

1 F( X D+ u! h8 e8 S/ B, P
9 @! G0 x& G: l# w) y
' a$ c; \5 _) X1 O) S9 I `

tu.Screen().bgcolor("black") 设置背景颜色

% r: _" {: b6 T) f& {: H
3 d% O+ |7 F% G t# k
, i; k& ^" {2 { d

t=tu.Turtle() 设置t作为运行主体

, I' O3 d: o9 Q) k% d
: q' Z! O9 o& q& b! ?6 n0 H
2 K9 \0 y6 G2 y) y5 L" ~# z6 o

h=0.3 设置色相

- z1 C) @5 ^& L- T- Q( b
# x# Z8 T6 Y0 j" i- z
: u- @5 u- \2 j

def aaa_coder(len,ang=0,cl="#000000",c="black"): 定义这个aaa_coder()函数

# l# T% e W3 A$ F6 v8 L9 T; e
3 [/ K5 C7 I. X1 v
: Q: J* u/ S6 w" `

t.seth(ang) 定义转向角度

% z# z6 _% B/ ]# m. ^ y0 x
, z5 R7 X+ q3 _4 V& k; i& E
; o( A) `) D( x r, J

t.fillcolor(cl) 填充颜色

; ^8 o) E) @6 U! `# Y/ N) p
2 Y) X/ K4 J: }8 y6 e
, e% A0 g5 T% s1 f

t.begin_fill() 开始填充

$ v8 ]/ L4 M3 P4 S, O
5 @0 J+ q( B# R5 V3 q- U
4 a3 x* C+ I3 x4 B2 }

t.forward(len) 向前走len个长度

8 S0 f# v, {# c$ Z4 p
3 [) f* v4 k2 H* X9 G/ f
+ `4 D0 ?: E9 b# ?* ?7 l) G. b

t.seth(60+ang) 旋转60+ang个度数

: K) T5 b0 m; V! g
1 L! E ~( S2 f; T' d. n; W
9 `( D/ J; i1 V5 l C- y4 T

t.forward((73/200)*len) 向前走这个长度

# b9 ~& k8 T( x
% Z9 R; v( O B [/ `2 @
& A' M M; v& X1 O( i1 R) J

t.seth(150+ang) 旋转这个角度

1 k7 v1 [0 s$ P, s
. [0 l/ A' V4 K; g5 W; C: Z4 v
% _7 v; J8 {# K. ~. R8 W4 k* r

t.forward((73/200)*len) 向前走这个长度

_* X+ i9 C+ R% R) A
2 `+ A2 Q2 `6 S
* p8 G8 W; H- F6 c

t.seth(210+ang) 旋转这个角度

& H$ i# s' g. T t3 g& j
' R% I. S- s7 r" ^9 ^) b9 Q. c
! x: |" m2 H7 d' G1 Z w# }- Z7 l

t.forward(len) 向前走len个长度

$ \' c5 r. ^3 [( I* Q
- C; V6 A4 U. b+ d7 D# u
; P0 [1 @4 o1 K9 R: F: w: s, v; t

t.end_fill 结束填充

" z5 A* _: Y( H% c' {
, _8 x7 F. T: D
; f6 H5 I0 v" v* s! v# s" R# `+ a

t.fillcolor(c) 填充颜色

; L+ S; r& p4 R, E
# o8 i. g/ l9 z9 E* B
. p8 `. j( e) s( u0 V

t.begin_fill() 开始填充

$ b" O# a3 j% {
7 ~- Z y3 O2 F
& y* U2 q- r' }. e) r

t.seth(ang+0.01) 旋转这个角度

`" f& t2 t- o. a1 q
! `! D' c5 a; W
: c- w8 h4 B6 ~; `) `

t.forward(len/2) 向前走这个长度

m) v' i( f* \ b2 s, a8 A
' B% H2 s, z( w' o, s1 U* b" F
. r1 k$ U) T. M$ f$ T; {

t.circle((13/200)*len,180) 画圆

& \9 l$ v+ ^) n
0 @+ E$ q9 x9 h8 h; e; @# e7 E& w7 y4 N8 B
) R% y; \0 i3 r6 F/ ?) } ^

t.seth(30+ang) 旋转角度

$ t+ N( R/ k% d3 D
1 x/ o0 e- W$ c& S4 E0 S
# W& n7 y, h0 S# \

t.circle((14/200)*len,180) 画圆

* c# D& r( O: |- c n
+ t. F' H7 P5 |- l
8 O( X6 r( i V) i# ^, @

t.forward(len/2) 向前走这个长度

4 l, W d2 H; R- W9 H: m9 W
) w* L# f) ^+ a0 F# f
* G# `0 i7 o2 ?1 u

t.end_fill() 结束填充

) x( C+ R2 e+ q; v; f# K ^, u O
' s$ t% ]8 `$ }3 z ^: o' U; g; z
8 v* V, i0 M) u, n, O; @ }3 a6 \2 K

for i in range(12): 设置循环i

6 h1 [" {* g" m6 s! L* t
8 t( D6 U& I3 b* h( ?) C
6 g5 ~! K- V& F7 z

c=colorsys.hsv_to_rgb(h,1,1) 设置c颜色

" y$ O9 C. H* |" v# r1 X8 ]
/ L7 P' H. o) [
8 m: z+ w1 Y% P& j

cl=colorsys.hsv_to_rgb(h+0.5,1,1) 设置cl颜色

8 R. b, h& D) u' c( e4 b" V
0 ^" P+ s& _" |% P& Z* q/ ^ S
+ j: |1 v7 \) q3 N4 T" ]3 q) S

t.pencolor(c) 设置画笔颜色

9 G( Y- M! m. o$ o& d
5 U; z+ p4 X. V$ x8 C
( C& f( f* d2 |6 p

aaa_coder(280,i*30,c,cl) 运行aaa_coder()函数

I% W: J% S9 p1 U$ H0 D
8 V3 d$ g8 E; o5 L* _$ Y2 L
* K" T L, p( H8 p: \* a

h+=0.15 设置色相

, F6 X" i. k6 e9 j
/ N4 L+ |( u6 w) w$ h
9 Q% n# Q1 F- S# O& w2 ~2 B

t.ht() 隐藏画图

) }8 k! b' b. c
; u5 ?# ^* k2 l7 n! R% c! C3 V" a
. X! O' F; ~7 m- ]& Q

tu.done() 结束

& z$ P6 V. W& P+ P3 F
- x6 H, A& f! y9 d* `* v; g7 ]
! M8 J" m4 X* W! X6 A$ _
' _. x! t) z5 {, y$ m# ] x
+ }4 a7 O8 A7 Z! o2 H
: |2 @, r9 k- K0 e5 A3 k) Y

源码如下:

- W" j$ @" X( A* J) |( ?" z1 I# J
% Q5 |# P& R. J* ~/ J( q
3 g& w2 J6 w. O0 G" _

import turtle as tu

7 i& r- s5 a5 {4 Z/ s- G
2 J9 L0 A1 w0 `( N/ O6 C) h, ^
6 |2 r4 }1 I1 X' P6 W2 f, F7 r4 n

import colorsys

5 p& _# q& x H; z4 p
/ O, N9 _3 n5 t k
+ l' g8 Q$ s$ h4 l; p8 v4 M

tu.Screen().bgcolor("black")

' u6 {: C* x+ \, @% Z: X, `
7 v! _9 V( z( V/ _% U$ }4 q9 p* d
" [5 a5 p# N$ h1 A( C; P

t=tu.Turtle()

5 B* Z$ \( \ A& B, I
' C1 l- ?; R/ `: l
. s0 o5 ]$ f$ r# m' i' e# ^

h=0.3

2 `' ?, `8 p" |; H' H7 M
6 N/ H3 r, E5 }. S& M9 @) L3 X
7 g$ ]* g% Q( n x

def aaa_coder(len,ang=0,cl="#000000",c="black"):

) d& {8 f* n- O( I! s2 `
7 m' s/ F. ^3 a k# v
. c. `% k, l1 V8 U% k! ^

t.seth(ang)

0 p% X- D) w, K6 @
# {- \: i" w) V4 D2 q' Q% i
! L0 a3 `3 T, t5 N2 e

t.fillcolor(cl)

- {" }! @# s2 i# V2 p5 J
8 ?2 K- u4 T! T1 k0 q; d' _
7 L6 J8 j% P& P G4 x1 A

t.begin_fill()

5 i4 S. L, s4 w; z$ m
5 k5 o! ]0 }: g ?7 W4 _
* I9 o1 {0 r/ z& i9 Z& f

t.forward(len)

2 O" i1 ?) }1 r/ G r$ E
# }) C5 N5 c- \' U$ `
3 M( ~0 J+ M! I8 T5 e& ~2 T7 ?1 b

t.seth(60+ang)

- d- W( I* A3 w8 Z. d( |
' |2 t3 M2 t1 k; p5 \% X2 l, D
8 ?$ K& |7 p% {) `

t.forward((73/200)*len)

% \% R r: T; f' K- n
% H: U/ D6 f3 |; z1 ?/ v g5 A
: D; C+ K/ d9 ]* m# {( v

t.seth(150+ang)

( B3 b# e: ?# f) j0 G! H
$ m$ n- e: c' l1 V5 a) z
8 k7 o0 R# l: a6 v& N

t.forward((73/200)*len)

2 C& p( T- [. P; h; U2 [) d# E3 z
' \: d6 b3 c3 |& E- c b( @; x- `
( G3 Q' z1 [$ R7 l

t.seth(210+ang)

% `$ ~0 y4 L& d, G, y
' f+ s r. d% p! x f
3 t0 l& J3 U5 o: E7 b( T6 c

t.forward(len)

" e) {* h9 ]# k3 G! s% Y
4 ^1 u# J) @* T& j6 s* L
# l% p* v3 ], }/ E8 @5 J3 M

t.end_fill

* Z | d# D: T& R4 z' k! s, ?
0 U. N6 p2 d8 J2 J; x' A9 n. ?+ M- Z
4 l- L4 s, K: b0 e$ h

t.fillcolor(c)

; q0 J4 t2 v& f; _8 r
7 Y. T% b4 N, t; ^2 ?
; W) Y/ q8 F% W2 N

t.begin_fill()

' Y/ Q/ @ ^* P
% m1 T; F5 P, \# K+ T3 @2 ^* U% ~
2 i% j1 S. t p. C* x

t.seth(ang+0.01)

: d" w; ]% X9 T6 e4 P9 W4 n
1 V- b- s$ l9 P1 Y- G
0 F9 D# r; O# [, _ s1 C

t.forward(len/2)

8 _8 F' f6 C+ M$ a$ r
$ h6 d3 Q" v& ^& d
4 N/ K" a, q( x1 g4 M

t.circle((13/200)*len,180)

5 l! ~5 |. w1 b; d' F& b
]. W- S2 O) }/ O5 F* b8 D
# W$ @4 d4 q9 s) D( J: J; O% m

t.seth(30+ang)

5 _1 Y$ n% O! {
0 z0 X4 }9 g6 w4 x
# ^& D' k2 D, }* c* G

t.circle((14/200)*len,180)

s9 `. y0 t) n5 [! L2 ~
1 o. v* B- ]3 w8 ]7 D6 U. o
8 M6 d8 h$ C+ c7 {0 D

t.forward(len/2)

. ~: M# q7 L. o$ M3 @3 \
/ x; v8 X$ Q) B( k
* w- i1 r4 k5 D- |* h1 U4 R: y

t.end_fill()

, {; g2 m) Y8 W+ ?
y; g: @/ n; h% Q+ e
( i9 ?- }: H- K' P5 O) V

for i in range(12):

& F5 Q$ }1 D5 @' V/ K: M" G
, U: s- c5 ?. Q- c- u
% B7 G: A$ l" W' X

c=colorsys.hsv_to_rgb(h,1,1)

; p' T* S' u. t
$ I6 g' G+ m+ |6 K: G x
" C: U3 X4 g8 e) K$ ~( A% c0 \: c

cl=colorsys.hsv_to_rgb(h+0.5,1,1)

6 \5 H8 V! |2 e* h( a
1 r* V! z. ^9 u/ D1 u: r- l z
9 R U1 U! S) ?7 ^6 J* w5 i) y

t.pencolor(c)

9 ^5 E" g" L: H( C. t8 Q0 \
) {# p* G% ]" Y4 I
0 z( r3 J8 m$ F l; r7 y0 m

aaa_coder(280,i*30,c,cl)

0 j% g" ]) J; k% b2 A
6 Q' Q# M. _3 X
+ ?! t) K! x0 F' \: f5 O3 j; S7 S$ P

h+=0.15

/ `4 z' [/ [: k( B( [& I+ C$ `
+ O+ h% I+ z. U# _+ O. C' a$ Q
4 S' v2 B$ ~7 D

t.ht()

# O4 {" K* m5 K7 h/ x3 l
# {9 n0 [! D; \4 z( d0 d
8 N J* M% b0 R) k

tu.done()

$ m, h! }) g! n" I0 M/ I2 g U# }2 m
6 D% a( A4 B+ i
/ o' A5 R' v2 v! a7 @) m( ~
6 D+ r- E5 S6 u9 ~% I
' p' s- P+ H" g( {6 z
/ d; _. ~/ I$ _ v
举报/反馈
: ]% t. n8 K1 T2 [7 ?, F
. i: Y' `4 O5 t* B 7 j2 \ {& A; y/ J* V$ ~ * c7 D8 d# M2 Y( C$ ?1 _$ B/ W2 C $ X/ O" z# }6 F4 e5 A1 g: f1 P2 Y* d# J2 m4 f! U" l0 t1 W
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
文星雨
活跃在3 天前
快速回复 返回顶部 返回列表