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.
- class Point: """ A point in a two-dimensional coordinate plane """ def __init__(self, x, y): """ Create a point with an x and y coordinate """ self.x = x self.y = y def __str__(self): """ Generate a string representation of a point """ return "(" + str(self.x) + "," + str(self.y) + ")" ############################# Part 1 - Rectangle Class############################class Rectangle: """ A rectangle in a two-dimensional coordinate plane """ def __init__(self, bottom_left_x, bottom_left_y, top_right_x, top_right_y): """ Create a rectangle defined by its bottom left and top right corner coordinates """ self.bottom_left = Point(bottom_left_x, bottom_left_y) self.top_right = Point(top_right_x, top_right_y) def __str__(self): """ Generate a string representation of a rectangle """ return ("Rectangle with…arrow_forwardJAVA Include Code Comments create a public class named ArrayUtility In ArrayUtility class, create a public static method toString that receives an array of int's, a start string, a separator string and an end string. It returns a String starting with the start string, followed by the array elements separated by the separator and ending with the end string. create a public class named ArrayUtilityTest In ArrayUtilityTest class, create a public static method toStringTest that prints the results for the following 5 lengths of arrays, using different types of brackets and separators for each: empty, singleton, two elements, 5 elements and 20 elements. Call only this class in the main method and check the results. In ArrayUtility class, create a public static method equals that receives two arrays of int's and returns true if they have the same length and equal corresponding elements. In ArrayUtilityTest class, create a public static method equalsTest that prints the results for the…arrow_forwardUsing java Hamburger ClassWrite a Hamburger class with the following six attributes:• bun - the type of bun the burger will be on• patties - the number of patties on the burger• cheese - whether or not the burger will have cheese• price - the price of the burger• toppings - an array of five toppings; it will need to start empty Write getters/setters for all attributesexcept the toppings array.Your constructor should create a single on white with no cheese and no toppings with a price of $2.99.Your class should include the following methods in this order, please: addCheese - this method has noparameters that adds cheese to the burger and increases the price by 75 centssuperSizeIt - this method has no parameters and adds a patty to the burger and increases the price by 1.50addToppings - this method would present the user with at least five toppings (your choice) stored in an array of Stringobjects. If the user indicates the wants the item, store the String in the toppings array. There…arrow_forward
- The following is the specification for the constructor of a EmailFolder class: /*** Creates a new EmailFolder with the given label** @precondition label != null AND !label.isEmpty()* @postcondition getLabel()==label*/public EmailFolder(String label) Assume the variable folders is an array list of EmailFolder objects. Write code that gets the number of items in the list, assigning them to an appropriate variable.arrow_forwardThe following is the specification for the constructor of a EmailFolder class: /*** Creates a new EmailFolder with the given label** @precondition label != null AND !label.isEmpty()* @postcondition getLabel()==label*/public EmailFolder(String label) Assume the variable folders is an array list of EmailFolder objects. Write code that gets the tenth item in the list, assigning it to an appropriate variable. (java)arrow_forwardIn java language Deeper Class Design - the Square, Circle, Picture Class he Bigger Picture – The ObjectList (or ArrayList (v1.0)) Class A picture is simply a composition of shapes, and in this last section, we’ll build a class used to manage such a picture. We’ll create this new class by reusing code from an existing piece of software. We’ll create an Picture class that will contain, amongst other state items (data), an array (or list) of Objects that are the Squares and Circles in the Picture to be drawn. Picture.java will be a simple abstraction here, and will just “draw” shapes to the console in the order that they appear in the list –ignoring the coordinate pairs stored in each Shape for now. Again, note the static storage restriction of only 100 shapes per picture; in future sections, we’ll learn how to dynamically resize our arrays. Aside: when we get to working with any of the Java graphics framework classes and/or swing, then a simple use of this Picture class (called a…arrow_forward
- Create a class Animal Create a class Cat, and a class Dog, and a class Bearded Dragon which extend Animal. Add to your Animal class: Member: name Methods: Public Animal (String name) //constructor public void makes Sound () with the implementation printing out a generic animal sound. Next, override (add) the makes Sound() method to your Cat and Dog class, with the implementation specific to each animal (i.e, cat says purr..). Do not override the makesSound() for your Dragon (bearded dragons don't make sounds!) Note, you'll also need a constructor in each of your subclasses which calls super(name) to initialize the common 'name' member of Animal. Next (in your test harness) create a List of different Animals ( a couple cats, a dog, a dragon... ) and add these Animals to your list. Iterate through your list & call makeSound on each. (you should observe the makeSound method called will be: cat -> from Cat class, dog-> from Dog class, bearded Dragon -> from Animal class ) EC:…arrow_forwardUsing Java You will write the code to perform the following operations using the ArrayList class: Implement a Shoe class, encapsulating the concept of a shoe A shoe has a color, size, and brand. Implement a ShoeStore class, encapsulating the concept of a shoe store. Use the ArrrayList of Shoe objects. Fill the ArrayList object with Shoe objects. Implement a ShoeSearchEnginge class Print Shoe objects in the ArrayList. color: white size: 11 brand: Anne Klein color: yellow size: 13 brand: Calvin Klein color: black size: 9 brand: COACH color: blue size: 5 brand: CLARK color: black size: 7 brand: Cole Han color: blue size: 15 brand: FitFlo color: red size: 9 brand: CLARK Find all Shoe objects with CLARK as a brand in the ArrayList. Find the largest size of a Shoe object in the ArrayList.arrow_forwardREFER TO IMAGE (JAVA) a. Write a Java statement that increments the value of count by 1. b. Write a Java statement that outputs the value of count. c. Write the 6 definitions of the constructors and the methods of the class MyClass as described in its definition. d. Write a Java statement that declares myObject1 to be a MyClass object and initializes its instance variable x to 5. __________________________________________________________________ e. Write a Java statement that declares myObject2 to be a MyClass object and initializes its instance variable x to 7. __________________________________________________________________ f. Identify each of the following statements as either valid or invalid (tell why it is invalid). Assume that myObject1 and myObject2 are declared as in parts (d) and (e). myObject1.MyClass( ); ____________________________________ myObject2.setX(50); ____________________________________ MyClass.printCount( );…arrow_forward
- Create a Point classCreate a Point class as we did in the class. We'll use this to create Point objects that hold x,y coordinates of locations where we'll want to draw. Draw DotsWrite a drawDots(points) function that takes a list points as input and draws a dot on the drawing window for each Point. For example, you should be able to call your function as follows: >>> p = Point(10, 20) >>> q = Point(20, 30) >>> points = [p, q] >>> drawDots(points)arrow_forwardAssume Student and GradeBook classes are defined as follows: public class Student { int id; double testsMarks[]; public double getAverage(){ double sum = 0; for(double marks : testsMarks) { sum+=marks; } return sum/testsMarks.length; } } import java.util.ArrayList; public class GradeBook { String subject; ArrayList<Student> students; public Student getStudentWithMinAverage(){ } } Define the body of getStudentWithMinAverage method that shall return the student object from students ArrayList who got minimum average marks in the class. (Please write minimum code and make use of provided code, making no change in classes' structure)arrow_forwardin java A class Book is designed to model a book written by one author. It contains: Four private instance variables: name (String), price (double) static, and qty (int); Two constructors: public Book (String name, double price) { ...... } public Book (String name, double price, int qty) { ...... } getters/setters methods getName(), getPrice(), setPrice(), getQty(), setQty(). A toString() that returns book values. A class called Author is designed to model a book's author. It contains: Four private instance variables: name (String), email (String), and gender (char of either 'm' or 'f') and arrayList of Books. One constructor to initialize the name, email and gender with the given values; public Author (String name, String email, char gender) {......} public getters/setters. A toString() method that returns author object. A method addBook(Book b) which will add book in the Arraylist of books. A removeBook(String name)…arrow_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