|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
题目:一个最优美的图案。
1 r" U' o2 X" D3 U程序分析:无。
4 B; v- P1 s( X& R" r- g- import math8 A! K g4 I: U) B" A' [
- from tkinter import *5 B! W, ]7 ~6 B1 J, N5 X
& s8 p) [# M0 [ l2 N# P- class PTS: s; C& n5 _- S: u. K7 M2 J0 R
- def __init__(self):
' ]! V1 T& F: ? - self.x = 0& R$ R, A8 F( ~" ]8 e+ m
- self.y = 0
' ?7 h! N! e5 F+ B - points = []; {# x0 A; R* z2 q
+ Z7 z$ ~% `0 d& L$ l4 z/ V& D- def LineToDemo():
1 j5 _% n. h- Q; ?: u+ `: { - screenx = 400
8 j" L, f1 G5 ~/ M+ E - screeny = 4003 x W" s; f4 @% J3 I! O/ `5 U5 G' r
- canvas = Canvas(width = screenx,height = screeny,bg = 'white')9 B; O% W9 j: Z5 m( J
- # R/ d) w9 @/ A' C7 J3 X
- AspectRatio = 0.85
5 g9 Z& {( O9 l+ x - MAXPTS = 15
1 w E6 ~# ~- w2 v6 [ - h = screeny8 _; _& {) T8 \3 T9 Q# N" t6 |
- w = screenx
$ Q( N& h( d" [' r. s. A - xcenter = w / 23 @' r1 S" r/ S. [. M' C
- ycenter = h / 2
* a1 d6 a: N/ F& s' a - radius = (h - 30) / (AspectRatio * 2) - 20/ W/ ~% q" l# l- A
- step = 360 / MAXPTS1 f& G* c( U. Q$ o/ X3 b' G/ A
- angle = 0.0
9 H8 ?6 j" Q) q' V0 @ - for i in range(MAXPTS):! s0 V- |1 `, }. z1 T2 c
- rads = angle * math.pi / 180.0
6 v q9 c& t/ L/ ^6 t- y8 I" ` - p = PTS()/ J1 |# b! B! A) g$ C* G
- p.x = xcenter + int(math.cos(rads) * radius)
7 n, y8 B# k( e9 |' g3 `1 f, H - p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)
% P& Y9 ^6 R2 L - angle += step
; g/ z; i$ R3 J J6 M2 `9 h6 g - points.append(p)# J* h6 E; x) G
- canvas.create_oval(xcenter - radius,ycenter - radius,
" r; A/ [: C4 k, v( w, B ?" s y3 f - xcenter + radius,ycenter + radius)2 m- X& f2 z. h' X" p5 e4 c4 s1 p
- for i in range(MAXPTS):% X' u0 Q; C7 W/ F
- for j in range(i,MAXPTS):
+ [( L3 |4 j5 n8 z* i - canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)
% ]3 V8 Z# i, @. ^' c. L3 z8 H - 8 y& A* {# r& g+ i
- canvas.pack()% \1 w# ^" r& a; K
- mainloop()8 u ~- y; \5 M; i, [$ c- t$ G
- if __name__ == '__main__':4 `8 P9 p4 c; W
- LineToDemo()
复制代码 |
|