python programming exercise facemove

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
from graphics import*
from math import*
from random import*
 
class Face:
    def __init__(self,win,center,size):
        self.eyeSize = 0.15*size
        self.eyeOff = size/3.0
        mouthSize = 0.8*size
        mouthOff = size/2.0
        self.size = size
        self.center = center
        self.win = win
        self.head = Circle(self.center,self.size)
        self.head.draw(win)
        self.leftEye = Circle(self.center,self.eyeSize)
        self.leftEye.move(-self.eyeOff,-self.eyeOff)
        self.rightEye = Circle(self.center,self.eyeSize)
        self.rightEye.move(self.eyeOff,-self.eyeOff)
        self.leftEye.draw(win)
        self.rightEye.draw(win)
        p1 = self.center.clone()
        p1.move(-mouthSize/2,mouthOff)
        p2 = self.center.clone()
        p2.move(mouthSize/2,mouthOff)
        self.mouth = Line(p1,p2)
        self.mouth.draw(win)
 
    def moveface(self,x,y):
        self.head.move(x,y)
        self.leftEye.move(x,y)
        self.rightEye.move(x,y)
        self.mouth.move(x,y)
        self.center.move(x,y)
    
         
    def getCenter(self):
        return self.center
         
    
    def flinch(self):
        self.leftEye.undraw()
        self.leftEye = Line(Point(self.center.getX()-self.eyeSize,self.center.getY()),Point(self.center.getX()+self.eyeSize,self.center.getY()))
        self.leftEye.move(-self.eyeOff,-self.eyeOff)
        self.leftEye.draw(self.win)
        self.rightEye.undraw()
        self.rightEye = Line(Point(self.center.getX()-self.eyeSize,self.center.getY()),Point(self.center.getX()+self.eyeSize,self.center.getY()))
        self.rightEye.move(self.eyeOff,-self.eyeOff)
        self.rightEye.draw(self.win)
 
    def unflinch(self):
        self.leftEye.undraw()
        self.rightEye.undraw()
        self.leftEye = Circle(self.center,self.eyeSize)
        self.leftEye.move(-self.eyeOff,-self.eyeOff)
        self.rightEye = Circle(self.center,self.eyeSize)
        self.rightEye.move(self.eyeOff,-self.eyeOff)
        self.leftEye.draw(self.win)
        self.rightEye.draw(self.win)
 
 
 
 
 
 
def main():
    win = GraphWin("",300,300)   
    center = Point(150,150)
    size = 20
    face = Face(win,Point(280*random(),280*random()),size)
    i = 0
    x = 0.1
    y = 0.2
    face.flinch()
    win.getMouse()
    face.unflinch()
 
    for i in range(100000):
        face.unflinch()
        face.moveface(x,y)
        center = face.getCenter()
        if center.getX() +size>=300 or center.getX() -size<=0:
            x = -x
            face.flinch()
        if center.getY() +size>=300 or center.getY() -size<=0:
            y = -y
            face.flinch()
        win.flush()
 
    
 
main()