import java.io.*; import java.net.*; public class TenniseManguServer extends Thread{ Socket sc1, sc2; BufferedReader lugeja1, lugeja2; PrintWriter kirjutaja1, kirjutaja2; static final int PLATSILAIUS=300; static final int PLATSIKORGUS=300; static final int REKET1Y=10; static final int REKET2Y=PLATSIKORGUS-10; static final int REKETILAIUS=30; double reket1x=PLATSILAIUS/2-REKETILAIUS/2; //reketi vasak serv double reket2x=PLATSILAIUS/2-REKETILAIUS/2; double reket1samm=2; double reket2samm=2; double pallix=PLATSILAIUS/2; double palliy=REKET1Y; static final int PALLIRAADIUS=5; double pallixsamm=Math.random(); double palliysamm=5*Math.random(); boolean veel=true; public TenniseManguServer(Socket sc1, Socket sc2){ this.sc1=sc1; this.sc2=sc2; start(); } void ettevalmistus() throws IOException{ lugeja1=new BufferedReader(new InputStreamReader(sc1.getInputStream())); lugeja2=new BufferedReader(new InputStreamReader(sc2.getInputStream())); kirjutaja1=new PrintWriter(sc1.getOutputStream(), true); kirjutaja2=new PrintWriter(sc2.getOutputStream(), true); } void uuriSisend() throws IOException{ while(lugeja1.ready()){ String rida=lugeja1.readLine(); if(rida.startsWith(".vasakule")){reket1x-=reket1samm;} if(rida.startsWith(".paremale")){reket1x+=reket1samm;} } while(lugeja2.ready()){ String rida=lugeja2.readLine(); if(rida.startsWith(".vasakule")){reket2x-=reket2samm;} if(rida.startsWith(".paremale")){reket2x+=reket2samm;} } } void pallLiigub(){ double upx=pallix+pallixsamm; double upy=palliy+palliysamm; if(upy+PALLIRAADIUS>REKET2Y){ if(upx>=reket2x && upx<=reket2x+REKETILAIUS){ palliysamm=-Math.abs(palliysamm); } } if(upy-PALLIRAADIUS=reket1x && upx<=reket1x+REKETILAIUS){ palliysamm=Math.abs(palliysamm); } } pallix+=pallixsamm; palliy+=palliysamm; } void trykiAndmed(){ String andmestr=".asukoht "+(int)reket1x+" "+(int)reket2x+" "+ (int)pallix+" "+(int)palliy; kirjutaja1.println(andmestr); kirjutaja2.println(andmestr); } public void run(){ try{ ettevalmistus(); while(veel){ uuriSisend(); pallLiigub(); trykiAndmed(); Thread.sleep(100); } }catch(Exception ex){ex.printStackTrace();} } }