-
Notifications
You must be signed in to change notification settings - Fork 186
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
A pet using Python. Below are the three features that our screen pet will perform: 1. Happy Face : When you will click on it with the mouse the screen pet will blush and it will look happy. 2. Cheeky Face : If you double-click it, then it will show its tongue to you. 3. Sad Face : If you ignore it then it will become sad and the point where you click then it will become happy again.
- Loading branch information
Showing
1 changed file
with
111 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
from tkinter import HIDDEN, NORMAL, Tk, Canvas | ||
def toggle_eyes(): | ||
current_color = c.itemcget(eye_left, 'fill') | ||
new_color = c.body_color if current_color == 'white' else 'white' | ||
current_state = c.itemcget(pupil_left, 'state') | ||
new_state = NORMAL if current_state == HIDDEN else HIDDEN | ||
c.itemconfigure(pupil_left, state=new_state) | ||
c.itemconfigure(pupil_right, state=new_state) | ||
c.itemconfigure(eye_left, fill=new_color) | ||
c.itemconfigure(eye_right, fill=new_color) | ||
|
||
def blink(): | ||
toggle_eyes() | ||
root.after(250, toggle_eyes) | ||
root.after(3000, blink) | ||
|
||
def toggle_pupils(): | ||
if not c.eyes_crossed: | ||
c.move(pupil_left, 10, -5) | ||
c.move(pupil_right, -10, -5) | ||
c.eyes_crossed = True | ||
else: | ||
c.move(pupil_left, -10, 5) | ||
c.move(pupil_right, 10, 5) | ||
c.eyes_crossed = False | ||
|
||
def toggle_tongue(): | ||
if not c.tongue_out: | ||
c.itemconfigure(tongue_tip, state=NORMAL) | ||
c.itemconfigure(tongue_main, state=NORMAL) | ||
c.tongue_out = True | ||
else: | ||
c.itemconfigure(tongue_tip, state=HIDDEN) | ||
c.itemconfigure(tongue_main, state=HIDDEN) | ||
c.tongue_out = False | ||
def cheeky(event): | ||
toggle_tongue() | ||
toggle_pupils() | ||
hide_happy(event) | ||
root.after(1000, toggle_tongue) | ||
root.after(1000, toggle_pupils) | ||
return | ||
|
||
def show_happy(event): | ||
if (20 <= event.x and event.x <= 350) and (20 <= event.y and event.y <= 350): | ||
c.itemconfigure(cheek_left, state=NORMAL) | ||
c.itemconfigure(cheek_right, state=NORMAL) | ||
c.itemconfigure(mouth_happy, state=NORMAL) | ||
c.itemconfigure(mouth_normal, state=HIDDEN) | ||
c.itemconfigure(mouth_sad, state=HIDDEN) | ||
c.happy_level = 10 | ||
return | ||
|
||
def hide_happy(event): | ||
c.itemconfigure(cheek_left, state=HIDDEN) | ||
c.itemconfigure(cheek_right, state=HIDDEN) | ||
c.itemconfigure(mouth_happy, state=HIDDEN) | ||
c.itemconfigure(mouth_normal, state=NORMAL) | ||
c.itemconfigure(mouth_sad, state=HIDDEN) | ||
return | ||
|
||
def sad(): | ||
if c.happy_level == 0: | ||
c.itemconfigure(mouth_happy, state=HIDDEN) | ||
c.itemconfigure(mouth_normal, state=HIDDEN) | ||
c.itemconfigure(mouth_sad, state=NORMAL) | ||
else: | ||
c.happy_level -= 1 | ||
root.after(5000, sad) | ||
|
||
root = Tk() | ||
root.title("Screen pet") | ||
c = Canvas(root, width=400, height=400) | ||
c.configure(bg='dark blue', highlightthickness=0) | ||
c.body_color = 'SkyBlue1' | ||
|
||
body = c.create_oval(35, 20, 365, 350, outline=c.body_color, fill=c.body_color) | ||
ear_left = c.create_polygon(75, 80, 75, 10, 165, 70, outline=c.body_color, fill=c.body_color) | ||
ear_right = c.create_polygon(255, 45, 325, 10, 320, 70, outline=c.body_color, fill=c.body_color) | ||
foot_left = c.create_oval(65, 320, 145, 360, outline=c.body_color, fill=c.body_color) | ||
foot_right = c.create_oval(250, 320, 330, 360, outline=c.body_color, fill=c.body_color) | ||
|
||
eye_left = c.create_oval(130, 110, 160, 170, outline='black', fill='white') | ||
pupil_left = c.create_oval(140, 145, 150, 155, outline='black', fill='black') | ||
eye_right = c.create_oval(230, 110, 260, 170, outline='black', fill='white') | ||
pupil_right = c.create_oval(240, 145, 250, 155, outline='black', fill='black') | ||
|
||
|
||
mouth_normal = c.create_line(170, 250, 200, 272, 230, 250, smooth=1, width=2, state=NORMAL) | ||
mouth_happy = c.create_line(170, 250, 200, 282, 230, 250, smooth=1, width=2, state=HIDDEN) | ||
mouth_sad = c.create_line(170, 250, 200, 232, 230, 250, smooth=1, width=2, state=HIDDEN) | ||
tongue_main = c.create_rectangle(170, 250, 230, 290, outline='red', fill='red', state=HIDDEN) | ||
tongue_tip = c.create_oval(170, 285, 230, 300, outline='red', fill='red', state=HIDDEN) | ||
|
||
cheek_left = c.create_oval(70, 180, 120, 230, outline='pink', fill='pink', state=HIDDEN) | ||
cheek_right = c.create_oval(280, 180, 330, 230, outline='pink', fill='pink', state=HIDDEN) | ||
|
||
c.pack() | ||
c.bind('<Motion>', show_happy) | ||
c.bind('<Leave>', hide_happy) | ||
c.bind('<Double-1>', cheeky) | ||
|
||
c.happy_level = 10 | ||
c.eyes_crossed = False | ||
c.tongue_out = False | ||
|
||
root.after(1000, blink) | ||
root.after(5000, sad) | ||
root.mainloop() | ||
|
||
#Coded with 💙 by Mr. Unity Buddy |