#

#the bug is like a praying mantis
#a cat's most characteristic features, I think, are its ears and tail
#a bird is most identified with wings
#dogs bark

#the large space gives room to have different interactive areas going on

#it's a ZOO! :)


import math
g.norefresh()

def bug(mouse1, mouse2):     
  g.paper(0)
  g.pen(70)
  g.line(30, 20, mouse2, mouse1)
  g.line(mouse2,mouse1, abs(20-mouse2),abs(30-mouse2))
  g.line(abs(20-mouse2), abs(30-mouse1), 60, 90)
  g.line(60, 90, abs(30-mouse1), abs(70-mouse2))
  g.line(abs(30-mouse1),abs(70-mouse2), 30, 20)

def bounce (a, n, h):
 n=100/n
 for x in range (0, 100):
  y=int(abs(a*math.sin(math.pi/n*x))+h)
  g.refresh()
  g.line(120,40,x,y)  
  
def cat(mouse1, mouse2):  
  g.paper(30)
  g.pen(100)
 #ear
  g.line(162,60,166,66)
  g.line(166,66,171,59)
 #ear
  g.line(180,61,186,68)
  g.line(186,68,190,60)
 #nose
  g.line(175,47,180,42)
  g.line(176,42,181,47) 
 #tail
  g.line(120,40,mouse1-10,mouse2+3)

def leftwings(e,f):
 g.line(e,f,e-5,f+5)
 g.line(e-2,f+1,e-7,f+6)
 g.setPixel(e-7,f+5,100)
 g.setPixel(e-7,f+4,100)
 g.setPixel(e-6,f+3,100)
 g.setPixel(e-6,f+2,100)
 g.setPixel(e-5,f+1,100)
 g.setPixel(e-4,f,100)
 g.setPixel(e-5,f-1,100)
 g.line(e-6,f-1,e-8,f+1)
 g.setPixel(e-8,f,100)
 g.line(e-8,f-1,e-1,f-5)
  
def rightwings(c,d):
 g.line(c,d,c+5,d+5)
 g.line(c+2,d+1,c+7,d+6)
 g.setPixel(c+7,d+5,100)
 g.setPixel(c+7,d+4,100)
 g.setPixel(c+6,d+3,100)
 g.setPixel(c+6,d+2,100)
 g.setPixel(c+5,d+1,100)
 g.setPixel(c+4,d,100)
 g.setPixel(c+5,d-1,100)
 g.line(c+6,d-1,c+8,d+1)
 g.setPixel(c+8,d,100)
 g.line(c+8,d-1,c+1,d-5)

def wings(x,y):
 leftwings(x,y)
 rightwings(x+20,y)

def bird(mouse1, mouse2):     
  g.paper(10)
  g.pen(80)
  wings(mouse1,mouse2)

def circle(xpos, ypos):
 for i in range(0,360):
  radians=(math.pi*i)
  r1 = 7 + math.cos(radians)
  r2 = 7 + math.sin(radians)
  x= int(r1 * math.cos(i))
  y= int(r2 * math.sin(i))
  g.setPixel(xpos+x,ypos+y,0)
 for i in range(0,360):
  radians=(math.pi*i)
  r1 = 7 - math.cos(radians)
  r2 = 7 - math.sin(radians)
  x= int(r1 * math.cos(i))
  y= int(r2 * math.sin(i))
  g.setPixel(xpos+x,ypos+y,0)
  
def bark(mouse1,mouse2):
 #b
 circle(mouse1+17,mouse2+3)
 g.line(mouse1+13,mouse2-4,mouse1+13,mouse2+18)
 g.line(mouse1+12,mouse2-4,mouse1+12,mouse2+18)
 g.line(mouse1+11,mouse2-4,mouse1+11,mouse2+18)
 #a
 circle(mouse1+35,mouse2+3)
 g.line(mouse1+43,mouse2-4,mouse1+43,mouse2+7)
 g.line(mouse1+44,mouse2-4,mouse1+44,mouse2+7)
 g.line(mouse1+45,mouse2-4,mouse1+45,mouse2+7)
 #r
 g.line(mouse1+48,mouse2-3,mouse1+48,mouse2+8)
 g.line(mouse1+49,mouse2-3,mouse1+49,mouse2+8)
 g.line(mouse1+50,mouse2-3,mouse1+50,mouse2+8)
 g.line(mouse1+50,mouse2+3,mouse1+57,mouse2+6)
 g.line(mouse1+50,mouse2+4,mouse1+57,mouse2+7)
 #k
 g.line(mouse1+60,mouse2-4,mouse1+60,mouse2+17)
 g.line(mouse1+61,mouse2-4,mouse1+61,mouse2+17) 
 g.line(mouse1+62,mouse2-4,mouse1+62,mouse2+17)
 g.line(mouse1+62,mouse2+4,mouse1+70,mouse2+9)
 g.line(mouse1+62,mouse2+4,mouse1+70,mouse2+8)
 g.line(mouse1+62,mouse2+4,mouse1+70,mouse2+7)
 g.line(mouse1+64,mouse2+4,mouse1+71,mouse2-5) 
 g.line(mouse1+65,mouse2+5,mouse1+71,mouse2-5)
 g.line(mouse1+65,mouse2+6,mouse1+71,mouse2-6)
  
 
def dog(mouse1, mouse2):
  g.paper(100)
  g.pen(0)  
  if g.getMouse(3)==100:
   bark(mouse1,mouse2)
  
  
  
while 1:
 mouse2 = g.getMouse(2)
 mouse1 = g.getMouse(1)
 if g.getMouse(1) < 100 and g.getMouse(2) <100:
  bug(mouse1,mouse2)
  g.refresh()
 else:
  if g.getMouse(1) < 200 and g.getMouse(2) < 100:
   g.refresh()
   g.paper(30)
   cat(mouse1,mouse2)
  else:
   if g.getMouse(1) < 100 and g.getMouse(2) < 200:
    g.refresh()
    g.paper(10)
    bird(mouse1+10,mouse2+12)
   else:
    if g.getMouse(1) > 100 and g.getMouse(2) > 100:
     g.refresh()
     g.paper(100)
     dog(mouse1,mouse2)