// ama.java --- by tsaiwn@csie.nctu.edu.tw
import java.awt.*;
public class ama extends MyApplet {
   public static void main(String[ ] args) {
      Animal a = new Animal(1); Animal m = new Mankind(3);
         print("Animal talking...");
      a.talk( ); println("");
      Cat cat = new Cat(2); cat.init( );
      Frame f = new Frame("Mankind");
      f.add(cat); f.setSize(300,300); f.validate( ); f.setVisible(true);
      cat.talk( );
      try { Thread.sleep(568); } catch (Exception e) {}
      print("Hit Return ...");
      int c = 0; try{ c=System.in.read();} catch (Exception e) {}
      if(c!=13) try{ c=System.in.read();} catch (Exception e) {}
   ///
      f.remove(cat); m.init( ); f.add(m);
      f.setSize(300,300); f.validate( ); f.setVisible(true);
      print("Then, Mankind m talk:");
      m.talk( );  println("");
      try { Thread.sleep(568); } catch (Exception e) {}
      print("Hit Return ...");
      try{ c=System.in.read();} catch (Exception e) {}
      if(c!=13) try{ c=System.in.read();} catch (Exception e) {}
      newPlayFile("bye.au");
      try { Thread.sleep(988); } catch (Exception e) {} System.exit(0);
   } // main
} // ama

class Animal extends MyApplet {    // Animal is-a MyApplet (is-a Applet)
   protected int n = 0;
   public Animal(int n) { this.n = n; }
   void talk( ) {
      for(int i=1; i <= n; ++i) { beep(); newPlayFile("chichi.au"); }
   }
}

class Cat extends Animal {
   public Cat(int n) { super(n); }
   public void init ( ) {
      PicturePanel p = new PicturePanel("images/cat.gif", true);
      setLayout( new GridLayout(1,2));
      add(p);
      Panel p23 = new Panel(new GridLayout(2,1));
      PicturePanel p2a = new PicturePanel("images/cat1.gif", false);
      PicturePanel p2b = new PicturePanel("images/cat2.gif", false);
      p23.add(p2a); p23.add(p2b);
      add(p23);
   }
    // new talk( ) for Cat, 若不寫, 則會用原先 Animal 的 talk
   void talk( ) {
      print("Cat .. talking ...");
      for(int i=1; i <= n; ++i) newPlayFile("meow.wav"); 
   }
} // Cat

class Mankind extends Animal {
   public Mankind(int n) { super(n); }
   public void init ( ) {
      PicturePanel p = new PicturePanel("images/mypic.jpg", true);
      setLayout( new GridLayout(1,1));
      add(p);
   }
    // new talk( ) for Mankind, 若不寫, 則會用原先 Animal 的 talk
   void talk( ) {
      print("Mankind .. talking ...");
      for(int i=1; i <= n; ++i) {
         newPlayFile("yahoo.au"); 
         try { Thread.sleep(123); } catch (Exception e) {}
      }
   } // talk
   void talk(String what) { newPlayFile(what); }  // talk(String)
} // Mainkind

