![Python Programming: An Introduction to Computer Science](https://www.bartleby.com/isbn_cover_images/9781590282779/9781590282779_largeCoverImage.gif)
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.
![Check Mark](/static/check-mark.png)
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
- whats for dinner? pleasearrow_forwardConsider the follow program that prints a page number on the left or right side of a page. Define and use a new function, isEven, that returns a Boolean to make the condition in the if statement easier to understand. ef main() : page = int(input("Enter page number: ")) if page % 2 == 0 : print(page) else : print("%60d" % page) main()arrow_forwardWhat is the correct python code for the function def countWords(string) that will return a count of all the words in the string string of workds that are separated by spaces.arrow_forward
- Consider the following program that counts the number of spaces in a user-supplied string. Modify the program to define and use a function, countSpaces, instead. def main() : userInput = input("Enter a string: ") spaces = 0 for char in userInput : if char == " " : spaces = spaces + 1 print(spaces) main()arrow_forwardWhat is the python code for the function def readFloat(prompt) that displays the prompt string, followed by a space, reads a floating-point number in, and returns it. Here is a typical usage: salary = readFloat("Please enter your salary:") percentageRaise = readFloat("What percentage raise would you like?")arrow_forwardassume python does not define count method that can be applied to a string to determine the number of occurances of a character within a string. Implement the function numChars that takes a string and a character as arguments and determined and returns how many occurances of the given character occur withing the given stringarrow_forward
- Consider the ER diagram of online sales system above. Based on the diagram answer the questions below, a) Based on the ER Diagram, determine the Foreign Key in the Product Table. Just mention the name of the attribute that could be the Foreign Key. b) Mention the relationship between the Order and Customer Entities. You can use the following: 1:1, 1:M, M:1, 0:1, 1:0, M:0, 0:M c) Is there a direct relationship that exists between Store and Customer entities? Answer Yes/No? d) Which of the 4 Entities mention in the diagram can have a recursive relationship? e) If a new entity Order_Details is introduced, will it be a strong entity or weak entity? If it is a weak entity, then mention its type?arrow_forwardNo aiarrow_forwardGiven the dependency diagram of attributes {C1,C2,C3,C4,C5) in a table shown in the following figure, (the primary key attributes are underlined)arrow_forward
- What are 3 design techniques that enable data representations to be effective and engaging? What are some usability considerations when designing data representations? Provide examples or use cases from your professional experience.arrow_forward2D array, Passing Arrays to Methods, Returning an Array from a Method (Ch8) 2. Read-And-Analyze: Given the code below, answer the following questions. 2 1 import java.util.Scanner; 3 public class Array2DPractice { 4 5 6 7 8 9 10 11 12 13 14 15 16 public static void main(String args[]) { 17 } 18 // Get an array from the user int[][] m = getArray(); // Display array elements System.out.println("You provided the following array "+ java.util.Arrays.deepToString(m)); // Display array characteristics int[] r = findCharacteristics(m); System.out.println("The minimum value is: " + r[0]); System.out.println("The maximum value is: " + r[1]); System.out.println("The average is: " + r[2] * 1.0/(m.length * m[0].length)); 19 // Create an array from user input public static int[][] getArray() { 20 21 PASSTR2222322222222222 222323 F F F F 44 // Create a Scanner to read user input Scanner input = new Scanner(System.in); // Ask user to input a number, and grab that number with the Scanner…arrow_forwardGiven the dependency diagram of attributes C1,C2,C3,C4,C5 in a table shown in the following figure, the primary key attributes are underlined Make a database with multiple tables from attributes as shown above that are in 3NF, showing PK, non-key attributes, and FK for each table? Assume the tables are already in 1NF. Hint: 3 tables will result after deducing 1NF -> 2NF -> 3NFarrow_forward
- EBK JAVA PROGRAMMINGComputer ScienceISBN:9781337671385Author:FARRELLPublisher:CENGAGE LEARNING - CONSIGNMENTMicrosoft Visual C#Computer ScienceISBN:9781337102100Author:Joyce, Farrell.Publisher:Cengage Learning,EBK JAVA PROGRAMMINGComputer ScienceISBN:9781305480537Author:FARRELLPublisher:CENGAGE LEARNING - CONSIGNMENT
- C++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage LearningProgramming Logic & Design ComprehensiveComputer ScienceISBN:9781337669405Author:FARRELLPublisher:CengageC++ for Engineers and ScientistsComputer ScienceISBN:9781133187844Author:Bronson, Gary J.Publisher:Course Technology Ptr
![Text book image](https://www.bartleby.com/isbn_cover_images/9781337671385/9781337671385_smallCoverImage.jpg)
![Text book image](https://www.bartleby.com/isbn_cover_images/9781337102100/9781337102100_smallCoverImage.gif)
![Text book image](https://www.bartleby.com/isbn_cover_images/9781305480537/9781305480537_smallCoverImage.jpg)
![Text book image](https://www.bartleby.com/isbn_cover_images/9781337102087/9781337102087_smallCoverImage.gif)
![Text book image](https://www.bartleby.com/isbn_cover_images/9781133187844/9781133187844_smallCoverImage.gif)