Face
Program Plan:
face.py
- Import the required packages.
- Definition of main “init” method.
- Assign the size value, eye size, eye off, mouth size, mouth off, window value to the corresponding variables.
- Definition of “getCenter” method.
- Return the center value.
- Definition of “move” method.
- Call the method “undrawn()”.
- Call the method getCenter().
- Get the position of “x” and “y”.
- Get the center position.
- Check the condition for the face to smile.
- Call the method “smile()”.
- Check the condition for the face to wink.
- Call the method “wink()”.
- Check the condition for the face to Grim Face.
- Call the method “GrimFace()”.
- Call the method “mediate()”.
- Check the condition for the face to wink.
- Call the method “smile()”.
- Definition “initializeGrimFace” method.
- Create a circle.
- Call the function to open the left eye and right eye.
- Create an array for teeth.
- Call the method to draw the mouth.
- Call the method to draw the face.
- Definition of method “lineMouth()”.
- Call the method “clone()”.
- Condition to set the mouth.
- Call the method “clone()”.
- Call the method “Line()”.
- Return the line.
- Definition of method “rectMouth()”
- Get the position to place the mouth.
- Return the position.
- Definition of method “undrawn()”.
- Remove the head, left eye, right eye, teeth and mouth.
- Definition of method “drawFace()”.
- Draw the circle to place the outline of the face.
- Set the head to the window.
- Set the left eye to the window.
- Set the left eye to the window.
- Set the mouth to the window.
- Definition of “leftEyeOpen()”.
- Set the left eye to the circle.
- Condition to open and close the left eyes.
- Definition of “rightEyeOpen()”.
- Set the right eye to the circle.
- Condition to open and close the right eyes.
- Definition of “leftEyeWink()” method.
- Place the position of the left eye.
- Get the values of “x” and “y”.
- Condition to get the “leftWink”.
- Set the value to “leftWink”.
- Definition of “rightEyeWink()” method.
- Place the position of the right eye.
- Get the values of “x” and “y”.
- Condition to get the “rightWink”.
- Set the value to “rightWink”.
- Definition of “wink()”.
- Call the method “unDraw()”.
- Call the method “lineMouth()”, leftEyeOpen(), “rightEyeWink()”, “drawFace()”.
- Definition of “smile()” method.
- Call the method “unDraw()”.
- Call the method “rectMouth()”.
- Get the “xint” value.
- Condition to append the mouth.
- Traverse the loop till “i” reaches “8”.
- Call the method “Line()” to get the two points.
- Condition to append the teeth.
- Check the condition to place the teeth.
- Draw the tooth for the face.
- Call the method “rectMouth()”., “leftEyeOpen()”, “rightEyeOpen()”, “drawFace()”.
- Definition of “mediate()” method.
- Call the respective method to un draw the face, draw mouth, right and left eye and face
- Definition of “mediate()” method.
Main.py:
- Import the required packages.
- Definition of method “makeButtons()”.
- Create a button “wink()”.
- Create a button “mediate()”.
- Create a button “Smile()”.
- Crate a button “Quit”.
- Activate all the buttons.
- Return the values.
- Definition of method “main()”.
- Creating the interface.
- Call the method “getMouse()”.
- Check whether the “endGame” is clicked or not.
- Check whether the “wink” is clicked.
- Call the method “wink”.
- Call the method “getMouse()”.
- Check whether the “smile” is clicked.
- Call the method “smile()”.
- Call the method “getMouse()”.
- Check whether the “mediate” is clicked.
- Call the method “mediate()”.
- Call the method “getMouse()”.
- Close the window.
- Call the method “main()”.
- Check whether the “wink” is clicked.
Explanation of Solution
Program:
face.py
#Import required packages
from graphics import *
#Definition of class Face
class Face:
#Definition of init method
def __init__(self, window, center, size):
#Assign the size value
self.size = size
#Calculate the eye size
self.eyeSize = 0.15 * size
#Condition to close the eye
self.eyeOff = size / 3.0
#Condition of mouth size
self.mouthSize = 0.8 * size
#Condition to close the mouth
self.mouthOff = size / 2.0
#Set the interface to centre
self.center = center
#Assign the window value
self.window = window
#Call the method initializeGrimFace
self.initializeGrimFace()
#Assign the rightEye
self.rightEye
#Definition of getCenter method
def getCenter(self):
#Return the centre value
return self.center
#Definition of method move
def move(self, dx, dy):
#Call the method undraw
self.unDraw()
#Call the method getCenter
center = self.getCenter()
#Get the position of x and y
x = center.getX()
y = center.getY()
#Get the centre position
self.center = Point(x + dx, y + dy)
#Check the condition for the face to simile
if dx < 0 and dy < 0:
#Call the smile method
self.smile()
#Check the condition for the face to wink
elif dx < 0 and dy > 1:
#Call the method wink
self.wink()
#Check the condition for GrimFace
elif dx > 0 and dy > 0:
#Call the method initializeGrimFace()
self.initializeGrimFace()
#Otherwise, call the method mediate()
else:
self.meditate()
#Definition of method initializeGrimFace
def initializeGrimFace(self):
#Create a circle
self.head = Circle(self.center, self.size)
#Call the function to open the left eye
self.leftEyeOpen()
#Call the function to open the right eye
self.rightEyeOpen()
#Create an array for teeth
self.teeth = []
#Call the method to draw the mouth
self.lineMouth()
#Call the method to draw the face
self.drawFace()
#Definition of method lineMouth
def lineMouth(self):
#Call the method clone()
p1 = self.center.clone()
#Condition to set the mouth
p1.move(-self.mouthSize/2, self.mouthOff)
#Call the method clone
p2 = self.center.clone()
#Condition to set the mouth
p2.move(self.mouthSize/2, self.mouthOff)
#Call the method Line()
self.mouth = Line(p1, p2)
#Return the line
return Line(p1, p2)
#Definition of method rectMouth()
def rectMouth(self):
#Get the position to place the mouth
p1, p2 = self.mouth.getP1(), self.mouth.getP2()
x1, x2, y1, y2 = p1.getX(), p2.getX(), p1.getY(), p2.getY()
offset = self.eyeSize / 2
self.mouth = Rectangle(Point(x1, y1 - offset), Point(x2, y2 + offset))
#Return the position
return x2, x1, y1, y2, offset
#Definition of method unDraw()
def unDraw(self):
#Remove the head, left eye, right eye, teeth and mouth
self.head.undraw()
self.leftEye.undraw()
self.rightEye.undraw()
self.mouth.undraw()
for tooth in self.teeth:
tooth.undraw()
#Definition of method drawFace()
def drawFace(self):
#Draw the circle to place the outline of the face
self.head = Circle(self.center, self.size)
#Set the head to the window
self.head.draw(self.window)
#Set the left eye to the window
self.leftEye.draw(self.window)
#Set the right eye to the window
self.rightEye.draw(self.window)
#Set the mouth to the window
self.mouth.draw(self.window)
#Definition of leftEyeOpen()
def leftEyeOpen(self):
#Set the left eye to the circle
self.leftEye = Circle(self.center, self.eyeSize)
#condition to open and close the left eyes
self.leftEye.move(-self.eyeOff, -self.eyeOff)
#Definition of rightEyeOpen()
def rightEyeOpen(self):
#Set the right eye to the circle
self.rightEye = Circle(self.center, self.eyeSize)
#Condition to open and close the right eyes
self.rightEye.move(self.eyeOff, -self.eyeOff)
#Definition of leftEyeWink()
def leftEyeWink(self):
#Place the position of the left eye
center = self.leftEye.getCenter()
#Get the x and y value
x = center.getX()
y = center.getY()
#Condition to get the leftWink
leftWink = Line(Point(x - self.eyeSize, y), Point(x + self.eyeSize, y))
#Set the value leftWink
self.leftEye = leftWink
#Definition of rightEyeWink()
def rightEyeWink(self):
#Place the position of the right eye
center = self.rightEye.getCenter()
#Get the x and y value
x = center.getX()
y = center.getY()
#Condition to get the rightWink
rightWink = Line(Point(x - self.eyeSize, y), Point(x + self.eyeSize, y))
#Set the value rightEye
self.rightEye = rightWink
#Definition of wink()
def wink(self):
#Call the method unDraw()
self.unDraw()
#Call the method lineMouth(), leftEyeOpen(), rightEyeWink(), drawFace()
self.lineMouth()
self.leftEyeOpen()
self.rightEyeWink()
self.drawFace()
#Definition of method smile()
def smile(self):
#Call the method unDraw()
self.unDraw()
#Call the method rectMouth()
x2, x1, y1, y2, offset = self.rectMouth()
#Get xint value
xint = abs(x2 - x1) / 8
#Condition to append the mouth
self.teeth.append(self.lineMouth())
#Traverse the loop till i reaches 8
for i in range (8):
#Call the method Line() to get the two points
t2 = Line(Point(x1 + i * xint, y1 - offset), Point((x1 + i * xint), y2 + offset))
#Condition to append the teeth
self.teeth.append(t2)
#Check the condition to place the teeth
for tooth in self.teeth:
#Draw the tooth for the face
tooth.draw(self.window)
#Call the method reactMouth(), leftEyeOpen(), rightEyeOpen(), drawFace()
self.rectMouth()
self.leftEyeOpen()
self.rightEyeOpen()
self.drawFace()
#Definition of method mediate()
def meditate(self):
#Call the respective method to undraw the face, draw mouth, right and left eye and face
self.unDraw()
self.lineMouth()
self.leftEyeWink()
self.rightEyeWink()
self.drawFace()
Cbutton.py:
Refer the program “button.py” given in the “Chapter 10” from the text book. Add the method “update()” along with the given code.
#Define the method update
def update(self, win, label):
#Call the method undraw()
self.label.undraw()
#Assign the position to centre
center = self.center
#Assign the label
self.label = Text(center, label)
#Set active to false
self.active = False
#Call the method draw()
self.label.draw(win)
Main.py
#Import the required packages
from face import Face
from graphics import *
from cbutton import CButton
#Definition of method makeButton(0
def makeButtons(win):
#Create a button Wink
wink = CButton(win, Point(16, 17), 1, "Wink")
#Create a button Meditate
meditate = CButton(win, Point(12, 17), 1, "Meditate")
#Create a button Smile
smile = CButton(win, Point(8, 17), 1, "Smile")
#Create a button Quit
endGame = CButton(win, Point(4, 17), 1, "Quit")
#Activate all the buttons
wink.activate()
meditate.activate()
smile.activate()
endGame.activate()
#Return the values
return wink, meditate, smile, endGame
#Definition of method main()
def main():
#Creating the interface
win = GraphWin("Emoji Jawn", 600, 600)
win.setCoords(20, 20, 0, 0)
face = Face(win, Point(10,8), 7)
wink, meditate, smile, endGame = makeButtons(win)
#Call the method getMouse()
pt = win.getMouse()
#Check whether the endGame is clicked or not
while not endGame.clicked(pt):
#Check whther the Wink is clicked
if wink.clicked(pt):
#Call the method wink()
face.wink()
#Call the method getMouse()
pt = win.getMouse()
#Check whether the smile is clicked
elif smile.clicked(pt):
#Call the method smile()
face.smile()
#Call the getMouse() method
pt = win.getMouse()
#Check whether the meditate is clicked
elif meditate.clicked(pt):
#Call the method meditate()
face.meditate()
#Call the getMouse() method
pt = win.getMouse()
#Otherwise
else:
#Call the getMouse() method
pt = win.getMouse()
#close up shop
win.close()
#Call the method main()
main()
Output:
Screenshot of output
Clicking Wink button:
Screenshot of output
Clicking Mediate button:
Screenshot of output
Clicking Smile button:
Screenshot of output
Want to see more full solutions like this?
Chapter 10 Solutions
Python Programming: An Introduction to Computer Science, 3rd Ed.
- #python codeplease find the attached imagearrow_forward#python codeplease find the attached imagearrow_forwardComputer Science You are required to develop a small chatting application where two or more friends can communicate each other through messages. Create a class Message which has Date d, and message (string). Provide getters/setters, constructors, toString. Create a class Friend having String name, String contact, email and ArrayList of Messages provide getters/setters, constructors, toString addMessage(Message m) method which will add new message to the list. Provide following options to the user using JFrame. Login which will help user login to the application. View Friends (Display List of All Friends) View Messages ( This should display all message of a Friend) Send message (This should ask for friend name and message match the friend name and write that message to the array list).arrow_forward
- #this is a python programtopic: operation overloading, Encapsulation Please find the attached imagearrow_forwardPython: Fill in the blankarrow_forwardArea of a rectangle = length * width Create a Class that calculates and prints out the area of a rectangle. Then write code that creates an object of this Class in which given the length and width, it calculates and prints out the area of a rectangle. Your output should look like this: Area of rectangle: 87arrow_forward
- Create a class to represent a Farm object containing instances of the Animal objects Java codearrow_forwardpython: class Student:def __init__(self, first, last, gpa):self.first = first # first nameself.last = last # last nameself.gpa = gpa # grade point average def get_gpa(self):return self.gpa def get_last(self):return self.last class Course:def __init__(self):self.roster = [] # list of Student objects def add_student(self, student):self.roster.append(student) def course_size(self):return len(self.roster) # Type your code here if __name__ == "__main__":course = Course()course.add_student(Student('Henry', 'Nguyen', 3.5))course.add_student(Student('Brenda', 'Stern', 2.0))course.add_student(Student('Lynda', 'Robison', 3.2))course.add_student(Student('Sonya', 'King', 3.9)) student = course.find_student_highest_gpa()print('Top student:', student.first, student.last, '( GPA:', student.gpa,')')arrow_forwardPlease do it in JavaScript or C# 1) Design and implement the class structure for a drawing application. A drawing is made up of a canvas that contains a collection of three different shapes: circles, lines, and boxes. Each shape can be drawn by calling a Draw() method for that shape. The canvas class should also have a draw method that draws all of the shapes it contains. You don’t have to actually draw anything on a screen; you can simulate drawing by writing a message to the console.For example, the code snippet: canvas.Draw();Drawing a circle at...Drawing a line at...etc. (For each shape on the canvas) 2)(Bonus) Consider re-writing the above answer (#1) differently where the canvas does not contain the shapes, but is able to draw any of the three shapes passed to it. Re-design canvas.Draw() if you need to. Your main() program should ask for user input on what shape to draw. Ask once, draw, then exit.could produce something like the following output to the console:arrow_forward
- Giving the following code class Rectangle: definit__(self, 1, w): self.length=1 self.width = w def rectangle_area(self): return self.length*self.width def rectangle perimeter(self): return (self.length+self.width)*2 R1 = Rectangle(20, 12) print(R1.rectangle_area()) print(R1.rectangle_perimeter()) R2 Rectangle(200, 112) print(R2.rectangle_area()) Answer the questions 1) How many classes we have on the above example 2) What is the role of the method __init__() 3) How many methods are defined 4) How many objects are created 5) How we invoke any method. Cite an example from the above code 6) Instanciate 2 rectangles using your Rectangle class 2arrow_forward#python codeplease find the attached imagearrow_forwardPYTHON CLASSES AND OBJECTarrow_forward
- EBK JAVA PROGRAMMINGComputer ScienceISBN:9781337671385Author:FARRELLPublisher:CENGAGE LEARNING - CONSIGNMENTMicrosoft Visual C#Computer ScienceISBN:9781337102100Author:Joyce, Farrell.Publisher:Cengage Learning,