import java.applet.*; import java.awt.*; public class tide1 extends Applet implements Runnable{ Image pilt, sahver; Graphics piltg, sahverg; int tase=2, koht=1; //Color c1=new Color(0, 120, 0), c2=Color.blue, c3=Color.red; laik l1, l2, l3; Thread tr; Label lb=new Label("Ship held up by 'law tide' - no tide token"); String teade[]=new String[11]; public void init(){ pilt=createImage(450, 200); piltg=pilt.getGraphics(); sahver=createImage(450, 200); sahverg=sahver.getGraphics(); l1=new laik(piltg, new Color(0, 150, 0)); l2=new laik(piltg, Color.blue); l3=new laik(piltg, Color.red); joonista_pilt(piltg); this.setBackground(Color.white); this.setLayout(new BorderLayout()); add("South", lb); sahverg.drawImage(pilt, 0, 0, this); teade[1]="Ship held up by 'law tide' - no tide token"; teade[2]="At the end of 'law tide' tokens more to respective queues"; teade[3]="Ship can now gain access to tide token"; teade[4]="Ship enters dock and tide token returns to queue"; teade[5]="During high tide any ship can pass"; teade[6]="During high tide any ship can pass"; teade[7]="During high tide any ship can pass"; teade[8]="At the end of the 'high tide' activity the token is released"; teade[9]="Avaliable of both tide tokens allows low tide activity to recommence"; teade[10]="Ship are again held by 'low tide'"; } public void start(){ tr=new Thread(this); tr.start(); } public void run(){ while(tr!=null){ liigu(); try{tr.sleep(10);}catch(Exception e){} if(++koht>100){koht=0; if(++tase>9)tase=1; lb.setText(teade[tase]); } } } public void stop(){ tr=null;} void liigu(){ piltg.drawImage(sahver, 0, 0, null); if(tase==1){ l1.joonista(30, 10); if(koht<30)l2.joonista(190, 100+koht); else if(koht<72)l2.joonista(190-(koht-30), 130); else l2.joonista(148, 130-(koht-72)); if(koht<80)l3.joonista(230, 100+koht); else l3.joonista(230+2*(koht-80), 180); } if(tase==2){ if(koht<10)l1.joonista(30, 10); else l1.joonista(30, koht); if(koht<10)l2.joonista(145-2*koht, 100); else if(koht<40)l2.joonista(113, 110-koht); else if(koht<67)l2.joonista(113-2*(koht-40), 70); else if(koht<70)l2.joonista(60, 70); else l2.joonista(60, 70+(koht-70)); if(koht<50)l3.joonista(270+(koht*8)/5, 180); else l3.joonista(350, 180-((koht-50)*8)/5); } if(tase==3){ l1.joonista(30, 100+(koht*9)/10); if(koht<30)l2.joonista(60, 100+koht); else if(koht<83)l2.joonista(60+(koht-30), 130); else l2.joonista(113, 130-((koht-83)*30)/17); l3.joonista(350, 100); } if(tase==4){ l1.joonista(30, 190-(koht*18)/10); l2.joonista(113, 100); l3.joonista(350, 100); } if(tase==5){ if(koht<10)l1.joonista(30, 10); else l1.joonista(30, koht); if(koht<30)l2.joonista(113, 100-koht); else if(koht<70)l2.joonista(113-((koht-30)*52)/40, 70); else l2.joonista(60, koht); l3.joonista(350, 100); } if(tase==6){ l1.joonista(30, 100+(koht*9)/10); if(koht<30)l2.joonista(60, 100+koht); else if(koht<83)l2.joonista(60+(koht-30), 130); else l2.joonista(113, 130-((koht-83)*30)/17); l3.joonista(350, 100); } if(tase==7){ l2.joonista(113, 100); if(koht<50)l3.joonista(350, 100-(koht*80)/50); else l3.joonista(350-((koht-50)*80)/50, 20); } if(tase==8){ if(koht<10)l2.joonista(115+2*koht, 100); else if(koht<30) l2.joonista(148, 100+((koht-10)*30)/20); else if(koht<70) l2.joonista(148+((koht-30)*42)/40, 130); else l2.joonista(190, 130-(koht-70)); if (koht<40)l3.joonista(270-koht, 20); else l3.joonista(230, 20+((koht-40)*8)/6); } if (tase==9){ // l1.joonista(30, 10); l2.joonista(190, 100); l3.joonista(230, 100); } if (tase==10){ l1.joonista(30, 10); l2.joonista(190, 100); l3.joonista(230, 100); } repaint(); } void joonista_pilt(Graphics g){ g.setColor(Color.black); g.drawOval(10, 0, 40, 40); g.drawString("Q1", 17, 25); g.drawLine(30, 40, 30, 80); g.drawRect(0, 80, 70, 40); g.drawString("Main", 16, 95); g.drawString("Activity", 12, 115); g.drawLine(60, 120, 60, 130); g.drawLine(60, 130, 113, 130); g.drawLine(113, 130, 113, 120); g.drawLine(113, 118, 110, 122); g.drawLine(113, 118, 116, 122); g.drawLine(60, 80, 60, 70); g.drawLine(60, 70, 113, 70); g.drawLine(113, 70, 113, 82); g.drawLine(60, 80, 57, 77); g.drawLine(60, 80, 63, 77); g.drawLine(147, 118, 147, 130); g.drawLine(147, 130, 190, 130); g.drawLine(190, 130, 190, 120); g.drawLine(147, 118, 144, 121); g.drawLine(147, 118, 150, 121); g.drawLine(147, 82, 147, 70); g.drawLine(147, 70, 190, 70); g.drawLine(190, 70, 190, 80); g.drawLine(190, 80, 187, 77); g.drawLine(190, 80, 193, 77); g.drawLine(30, 120, 30, 160); g.drawOval(10, 160, 40, 40); g.drawString("Q2", 17, 185); g.drawOval(105, 75, 50, 50); g.drawString("Tide", 115, 92); g.drawString("hold", 115, 108); g.drawRect(180, 80, 60, 40); g.drawString("Tide", 190, 92); g.drawString("low", 190, 108); g.drawOval(250, 0, 40, 40); g.drawString("Q3", 259, 25); g.drawOval(250, 160, 40, 40); g.drawString("Q4", 259, 185); g.drawRect(320, 80, 60, 40); g.drawString("Tide", 330, 92); g.drawString("high", 330, 108); g.drawLine(230, 120, 230, 180); g.drawLine(230, 180, 250, 180); g.drawLine(250, 180, 247, 177); g.drawLine(250, 180, 247, 183); g.drawLine(230, 80, 230, 20); g.drawLine(230, 20, 250, 20); g.drawLine(230, 80, 227, 77); g.drawLine(230, 80, 233, 77); g.drawLine(290, 20, 350, 20); g.drawLine(350, 20, 350, 80); g.drawLine(290, 20, 293, 17); g.drawLine(290, 20, 293, 23); g.drawLine(290, 180, 350, 180); g.drawLine(350, 180, 350, 120); g.drawLine(350, 120, 353, 123); g.drawLine(350, 120, 347, 123); } public void paint(Graphics g){ liigu(); g.drawImage(pilt, 0, 0, this); } public void update(Graphics g){paint(g);} } class laik{ Color c; Graphics g; laik(Graphics gr, Color co){ c=co; g=gr; } public void setColor(Color col){c=col;} public void setGraphics(Graphics gr){g=gr;} public void joonista(int x, int y) { g.setColor(c); g.fillOval(x-5, y-5, 10, 10);} }