import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class Tilk extends Applet implements Runnable, KeyListener{ int x=200; int y=570; int kaussx=50; int kaussy=2; int punktid=0; int tilkadearv=0; int moodalastud=0; boolean veel=false; int ooteaeg=1000; int tilgaalgusy=20; int tilgaalgusx; String st; int kuipaljutilku=1; public Tilk(){ addKeyListener(this); } public void start(){ new Thread(this).start(); } public void stop(){ veel=false; } void uusTilk(){ tilgaalgusx=(int)(375*Math.random())+15; new TilkLoim(tilgaalgusx, tilgaalgusy, getGraphics()).start(); } public void run(){ repaint(); veel=true; Thread.currentThread().setPriority(Thread.MIN_PRIORITY); while(veel){ if(punktid>(5*kuipaljutilku)){ kuipaljutilku++; } if(kuipaljutilku>(tilkadearv-punktid-moodalastud)){ uusTilk(); tilkadearv++; } try{Thread.sleep(ooteaeg);}catch(Exception e){} } } static void joonistaTilk(Graphics g, int tilkx, int tilky){ g.fillOval(tilkx, tilky, 10, 10); Polygon p=new Polygon(); p.addPoint(tilkx, tilky+5); p.addPoint(tilkx+10, tilky+5); p.addPoint(tilkx+5, tilky-10); g.fillPolygon(p); } public void paint(Graphics ekraan){ ekraan.drawRect(10, 10, 395, 600); ekraan.setColor(Color.red); ekraan.fillRect(x-25, y, kaussx, kaussy); ekraan.fillRect(x-24, y+2, kaussx-2, kaussy); ekraan.setColor(Color.green); ekraan.fillRect(x-23, y+4, kaussx-4, kaussy); ekraan.setColor(Color.red); ekraan.fillRect(x-22, y+6, kaussx-6, kaussy); ekraan.setColor(Color.yellow); ekraan.fillRect(x-20, y+8, kaussx-10, kaussy); ekraan.setColor(Color.red); ekraan.fillRect(x-18, y+10, kaussx-14, kaussy); ekraan.fillRect(x-16, y+12, kaussx-18, kaussy); ekraan.fillRect(x-14, y+14, kaussx-22, kaussy); ekraan.fillRect(x-13, y+16, kaussx-24, kaussy); if(veel==false){ st="Mäng on sinu jaoks kahjuks lõppenud. Tulemus "+punktid; } else { st="Tilkasid õhus: "+(tilkadearv-punktid-moodalastud)+" Püütud: "+punktid+" Püüdmata: "+moodalastud; } ekraan.setColor(Color.red); ekraan.drawString(st, 30, 10); } public void keyPressed(KeyEvent e){ int kood=e.getKeyCode(); if(kood==KeyEvent.VK_LEFT){ if(x>35){ x=x-30; } } if(kood==KeyEvent.VK_RIGHT){ if(x<375){ x=x+30; } } repaint(); } public void keyReleased(KeyEvent e){} public void keyTyped(KeyEvent e){} public static void main(String[] argumendid){ Frame f=new Frame(); Tilk t=new Tilk(); f.add(t); f.setSize(430, 650); f.setVisible(true); t.start(); } class TilkLoim extends Thread{ int tilkx; int tilky; Graphics g; public TilkLoim(int uustilkx, int uustilky, Graphics uusg){ tilkx=uustilkx; tilky=uustilky; g=uusg; } public void run(){ double vahe=0.5; for(int d=0; d<10; d+=2){ g.setColor(Color.blue); g.fillOval(tilkx, tilky, d, d); try{ Thread.sleep(30); }catch(Exception ex){} g.setColor(Color.white); g.fillOval(tilkx, tilky, d, d); } for(;tilky<590; tilky=(int)(tilky+vahe), vahe=vahe+0.2){ if(tilky>565){ if(tilkx>x-25 && tilkx2){ veel=false; } } } else { g.setColor(Color.blue); Tilk.joonistaTilk(g, tilkx, tilky); try{ Thread.sleep(30); }catch(Exception ex){} g.setColor(Color.white); Tilk.joonistaTilk(g, tilkx, tilky); } } for(int d=10; d>0; d--){ g.setColor(Color.blue); g.fillOval(tilkx, tilky, d, d); try{ Thread.sleep(30); }catch(Exception ex){} g.setColor(Color.white); g.fillOval(tilkx, tilky, d, d); } } } }