/** ekraanil liigub ring põrgates servadest. Lisaks sellele liigutab kasutaja * klahvidega kahte vertikaalset joont (kummagi joone jaoks eraldi klahvid). * Ring ka küljega vastu joont sattudes. */ /** Lahendusidee - teha ring objektina. kui puutub kokku ülemise servaga siis hakkata * if x=0 x++; if y=0 y++; if x=max x--; if y=max y--. lauad (2tk) */ import java.awt.*; import java.awt.event.*; import java.awt.event.KeyEvent; public class HillarpKodu2 extends Frame implements KeyListener,Runnable{ //- kui veebis siis Frame=applet static int ServX=500, ServY=700; //- raami parem serv ja alumine serv int RingX=100, RingY=50, RingR=15; //- ringi algkoordinaadid ja raadius int SammX=1, SammY=1; //- ringi liikumissamm x ja y suunas int menyyriba=20; //- raami menyyriba laius int Laud1X=ServX/2, Laud1Y=ServY-20, Laud1L=150, Laud1P=5, Laud1S=10; //- laud1 koordinaadid ja m66t ja samm int Laud2X=ServX/2, Laud2Y=menyyriba+10, Laud2L=150, Laud2P=5, Laud2S=10; //- laud2 koordinaadid ja m66t ja samm public HillarpKodu2(){ setTitle("Põrkav pall"); setSize(ServX,ServY); setVisible(true); addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); }//windowevent } //windowadapter ); //windowlistener addKeyListener(this); new Thread(this).start(); } public void run(){ while(true){ p6rka(); /** seni kuni takistusi ei ole */ RingX += SammX; RingY += SammY; /** servaga p6rkumisel SammX muutmine vastupidiseks */ if ((RingX - RingR + SammX < 0) || (RingX + RingR + SammX > ServX)) SammX = -SammX; /** servaga põrkumisel SammY muutmine Vasupidiseks*/ if ((RingY - RingR + SammY < 0+menyyriba) || (RingY + RingR + SammY > ServY)) SammY = -SammY; /** Laud1 kontroll ning SammX muutmine vastupidiseks */ if (((RingY-RingR+SammY==Laud1Y) || (RingY+RingR+SammY==Laud1Y)) && (RingX > Laud1X) && (RingX < Laud1X+Laud1L)) SammY = -SammY; /** Laud2 kontroll ning SammX muutmine vastupidiseks */ if (((RingY-RingR+SammY==Laud2Y) || (RingY+RingR+SammY==Laud2Y)) && (RingX > Laud2X) && (RingX < Laud2X+Laud2L)) SammY = -SammY; }//- 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); //- laud1 v2rv g.fillRect(Laud1X,Laud1Y,Laud1L,Laud1P); //- laua1 joonistamine g.setColor(Color.blue); //- laud2 v2rv g.fillRect(Laud2X,Laud2Y,Laud2L,Laud2P); //- laua2 joonistamine g.setColor(Color.black); //- palli v2rv g.fillOval(RingX-RingR, RingY-RingR, RingR*2, RingR*2); //- palli joonistamine try{ Thread.sleep(1); }//- try catch(Exception exp){ System.out.println("catch"); }//- catch } //-p6rka public void keyPressed(KeyEvent e){ int kood=e.getKeyCode(); /** Laud1 liigutamine*/ if((kood==KeyEvent.VK_LEFT) && (Laud1X > 0)) Laud1X=Laud1X-Laud1S; if((kood==KeyEvent.VK_RIGHT) && (Laud1X+Laud1L < ServX)) Laud1X=Laud1X+Laud1S; if((kood==KeyEvent.VK_UP) && (Laud1Y>0+menyyriba)) Laud1Y=Laud1Y-Laud1S; if((kood==KeyEvent.VK_DOWN) && (Laud1Y 0)) Laud2X=Laud2X-Laud2S; //- kood=a if((kood==83) && (Laud2X+Laud2L < ServX)) Laud2X=Laud2X+Laud2S; //- kood=s if((kood==87) && (Laud2Y>0+menyyriba)) Laud2Y=Laud2Y-Laud2S; //- kood=w if((kood==90) && (Laud2Y