/** P6rkamine tasandil (5p) * Kaks ringi liiguvad Ristkülikukujulisel pinnal p6rgates vastu servi kui teineteist * arvestades fyysikaseadusi */ import java.awt.*; import java.awt.event.*; import java.awt.event.KeyEvent; public class HillarpEksam51 extends Frame implements Runnable{ //- kui veebis siis Frame=applet static int ServX=300, ServY=300; //- raami parem serv ja alumine serv int Ring1X=100, Ring1Y=50, Ring1R=30; //- ringi 1 algkoordinaadid ja raadius int Samm1X=1, Samm1Y=1; //- ringi 1 liikumissamm x ja y suunas int Ring2X=ServX-50, Ring2Y=ServY-50, Ring2R=30; //- ringi 2 algkoordinaadid ja raadius int Samm2X=1, Samm2Y=2; //- ringi 2 liikumissamm x ja y suunas int menyyriba=20; //- raami menyyriba laius int kiirus=5; //- uue pildi joonistamise kiirus public HillarpEksam51(){ setTitle("Põrkavad pall"); setSize(ServX,ServY); setVisible(true); addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); }//windowevent } //windowadapter ); //windowlistener new Thread(this).start(); } public void run(){ while(true){ p6rka(); /** seni kuni takistusi ei ole */ Ring1X += Samm1X; Ring1Y += Samm1Y; Ring2X += Samm2X; Ring2Y += Samm2Y; /** servaga p6rkumisel Samm1X Samm2X muutmine vastupidiseks */ if ((Ring1X + Samm1X < 0) || (Ring1X + Ring1R + Samm1X > ServX)) Samm1X = -Samm1X; if ((Ring2X + Samm2X < 0) || (Ring2X + Ring2R + Samm2X > ServX)) Samm2X = -Samm2X; /** servaga põrkumisel Samm1Y ja samm 2Y muutmine Vasupidiseks*/ if ((Ring1Y + Samm1Y < 0+menyyriba) || (Ring1Y + Ring1R + Samm1Y > ServY)) Samm1Y = -Samm1Y; if ((Ring2Y + Samm2Y < 0+menyyriba) || (Ring2Y + Ring2R + Samm2Y > ServY)) Samm2Y = -Samm2Y; /** Ringi 1 kontroll Ringi 2 suhtes ylevalt ja alt */ if (((Ring1Y+Ring1R >= Ring2Y) && (Ring1Y <= Ring2Y+Ring2R)) && ((Ring1X < Ring2X+Ring2R) && (Ring1X+Ring1R > Ring2X))) Samm1Y = -Samm1Y; if (((Ring2Y <= Ring1Y+Ring1R) && (Ring2Y+Ring2R >= Ring1Y)) && ((Ring2X < Ring1X+Ring1R) && (Ring2X+Ring2R > Ring1X))) Samm2Y = -Samm2Y; /** Kontrollime ringide x koordinaate */ if (((Ring1X+Ring1R >= Ring2X) && (Ring1X <= Ring2X+Ring2R)) && ((Ring1Y < Ring2Y+Ring2R) && (Ring1Y+Ring1R > Ring2Y))) Samm1X = -Samm1X; if (((Ring2X <= Ring1X+Ring1R) && (Ring2X+Ring2R >= Ring1X)) && ((Ring2Y < Ring1Y+Ring1R) && (Ring2Y+Ring2R > Ring1Y))) Samm2X = -Samm2X; }//- while }//- run public void p6rka(){ Graphics g=getGraphics(); g.setColor(Color.white); //- tausta v2rv g.fillRect(1,1,ServX,ServY); //- Tausta joonistamine g.setColor(Color.green); //- ring1 v2rv g.fillOval(Ring1X, Ring1Y, Ring1R, Ring1R); //- ringi 1 joonistamine g.setColor(Color.red); //- ring2 v2rv g.fillOval(Ring2X, Ring2Y, Ring2R, Ring2R); //- ringi 2 joonistamine try{ Thread.sleep(kiirus); }//- try catch(Exception exp){ System.out.println("catch"); }//- catch } //-p6rka public static void main(String argumendid[]){ new HillarpEksam51(); } //- main } //- class