import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class Tilk1 extends Applet implements ActionListener,MouseMotionListener, Runnable{ Button nupp=new Button("Alusta mängu!"); Label la=new Label("Kinni püütud:"); Label la1=new Label(" 0 / 0 "); Label la2=new Label("Mängu eesmärgiks on püüda võimalikult palju kukkuvaid tilku."); int a, xk, aeg, suur, tase, counter; Thread loim; public Tilk1(){ setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10)); add(nupp); add(la); add(la1); add(la2); nupp.addActionListener(this); addMouseMotionListener(this); xk=100; suur=100; } public void mouseMoved(MouseEvent e){ //joonistab laua ja pane kuulama MouseEventit Graphics g=getGraphics(); g.setColor(Color.white); g.fillRect(xk, 450, suur, 10); xk=e.getX()-suur/2; g.setColor(Color.black); g.fillRect(xk, 450, suur, 10); } public void mouseDragged(MouseEvent e){} public void actionPerformed(ActionEvent e){ //kui vajutan nuppu a=0; //püütud tilgad counter=1; //tilgaloendur aeg=25; //kiirus tase=25; //ka kiirus, vahetab taset (loim=new Thread(this)).start(); // init(); //veebilehel initsiliseerimiseks esmakordsel avamisel la1.setText(" 0 / 0 "); //infotabloo nupp.setEnabled(false); //nupp pime la2.setVisible(false); //text pime } public void run(){ for(int w=1;;w++){ //mängu tsükkel Graphics g=getGraphics(); double vahe=0.5; double x=Math.random()*450; //tilga kukkumise koht if((w-a)>10){ //vigade arvu kontroll break; //ja katkestus } if(counter>10){ //iga 10 tilga järel vähendab laua laiust aeg=tase; suur=suur-10; repaint(); counter=1; //ja nullib counteri } if(suur<60){ //kui laud on v2iksem kui 60 suur=100; //muudab laua suureks tagasi tase=tase-3; //kuid tõstab taset (lisab tilkade kukkumise kiirust) } for(int y=35; y<460; y=(int)(y+vahe), vahe=vahe+0.2){ //tilga kukkumise joonistamine (animatsioon) g.setColor(Color.blue); joonistaTilk(g,(int) x, y); if(((y+35)>450) && (x>xk) && (x<(xk+suur))){ //tabamise kontroll g.setColor(Color.white); joonistaTilk(g,(int) x, y); y=550; a++; }//if try{Thread.sleep(aeg);}catch(Exception ex){} g.setColor(Color.white); joonistaTilk(g, (int) x, y); }//for la1.setText(a+" / "+w+" "); // a= tilku pyytud w= tilku kukkunud aeg=aeg-2; //iga j2rgnev tilk on eelmisest kiirem counter++; //tilga loendur (hiljem kasutame leveli muutmiseks) }//for nupp.setEnabled(true); la2.setVisible(true); la2.setText("Mäng kahjuks läbi! Proovi veel!"); la2.setAlignment(1); }//run static void joonistaTilk(Graphics g, int x, int y){ // klass tilga joonistamiseks Polygon p=new Polygon(); p.addPoint(x, y+5); p.addPoint(x+20, y+5); p.addPoint(x+10, y-10); g.fillPolygon(p); g.fillOval(x, y, 20, 20); } public static void main(String Arg[]){ Frame f=new Frame("Tilga püüdmise mäng"); f.add(new Tilk1()); f.setSize(500, 500); f.setVisible(true); f.setResizable(false); f.addWindowListener(new close()); } } class close extends WindowAdapter{ //windowsi akna sulgemiseks public void windowClosing(WindowEvent e){ System.exit(0); } }