import stiftUndCo.*;
import java.awt.*;

public class StartPong
{
  public static void main(String[] s)
  {
    PongProgramm pongo = new PongProgramm();
    pongo.fuehreAus();
  }

}
class PongProgramm
{
  private Bildschirm bildschirm;
  private Tastatur tasty;
  private char taste;
  private int points1,points2;
  private boolean spiellaeuft;
  private PongBall ballo;
  private Wand wand1;
  private Wand wand2;
  private Stift stifty;

  void fuehreAus()
  {
    bildschirm = new Bildschirm(500,300);
    tasty = new Tastatur();
    spiellaeuft = true;
    wand1 = new Wand(1,130,6,170,20,bildschirm, Color.red);
    wand2 = new Wand(bildschirm.breite()-7,130,bildschirm.breite()-2,170,20,bildschirm, Color.blue);

    ballo = new PongBall(bildschirm.breite()/2,bildschirm.hoehe()/2,9,Hilfe.zufall(-70,70),8,bildschirm);
    ballo.setzeFuellFarbe(Color.yellow);
    stifty = new Stift();
    bildschirm.setzeHintergrundmodus(true);

    points1 = 0;
    points2 = 0;


    Hilfe.warte(2500);

    while(spiellaeuft && (points1 < 10) && (points2 < 10))
    {
	ballo.bewege();

   	if(tasty.wurdeGedrueckt())
	{
		taste = tasty.zeichen();

		if( taste == 'b')
		{
			stifty.normal();
			stifty.bewegeBis((bildschirm.breite()/2)-40,bildschirm.hoehe()/2);
			stifty.schreibe("Beenden? j/n");
			bildschirm.aktualisiere();
			while(!tasty.wurdeGedrueckt()){ }
			taste = tasty.zeichen();

			if(taste == 'j')
			{
				spiellaeuft = false;
			}
			stifty.radiere();
			stifty.bewegeBis((bildschirm.breite()/2)-40,bildschirm.hoehe()/2);
			stifty.schreibe("Beenden? j/n");
			bildschirm.aktualisiere();
		}

		if( taste == 'w')
		{
			wand1.loesche();
			wand1.Hoch();
		}
		else if( taste == 's')
	    	{
			wand1.loesche();
		    	wand1.Runter();
		}

		if( taste == 'o')
    		{
			wand2.loesche();
		    	wand2.Hoch();
	    	}
		else if( taste == 'l')
    		{
			wand2.loesche();
		    	wand2.Runter();
		}
	}

	//kollision

	if(ballo.checkL())
	{
		if(!(ballo.getY() > wand1.getY1() && ballo.getY() < wand1.getY2()))
		{
			ballo.SetzePos(bildschirm.breite()/2,bildschirm.hoehe()/2);
			ballo.SetzeRichtung(Hilfe.zufall(-70,70));
			ballo.bewege();
			stifty.bewegeBis((bildschirm.breite()/2)-90,bildschirm.hoehe()-30);
			stifty.schreibe("Rechter Spieler hat gepunktet!");

			stifty.radiere();
			stifty.bewegeBis((bildschirm.breite()/2)+30,20);
			stifty.schreibe(new Integer(points2).toString());

			points2++;

			stifty.normal();
			stifty.bewegeBis((bildschirm.breite()/2)+30,20);
			stifty.schreibe(new Integer(points2).toString());

			bildschirm.aktualisiere();
			Hilfe.warte(800);

			stifty.radiere();
			stifty.bewegeBis((bildschirm.breite()/2)-90,bildschirm.hoehe()-30);
			stifty.schreibe("Rechter Spieler hat gepunktet!");
			stifty.normal();

			bildschirm.aktualisiere();
		}
	}

	if(ballo.checkR())
	{
		if(!(ballo.getY() > wand2.getY1() && ballo.getY() < wand2.getY2()))
		{
			ballo.SetzePos(bildschirm.breite()/2,bildschirm.hoehe()/2);
			ballo.SetzeRichtung(Hilfe.zufall(110,250));
			ballo.bewege();
			stifty.bewegeBis((bildschirm.breite()/2)-90,bildschirm.hoehe()-30);
			stifty.schreibe("Linker Spieler hat gepunktet!");

			stifty.radiere();
			stifty.bewegeBis((bildschirm.breite()/2)-40,20);
			stifty.schreibe(new Integer(points1).toString());

			points1++;

			stifty.normal();
			stifty.bewegeBis((bildschirm.breite()/2)-40,20);
			stifty.schreibe(new Integer(points1).toString());

			bildschirm.aktualisiere();
			Hilfe.warte(800);

			stifty.radiere();
			stifty.bewegeBis((bildschirm.breite()/2)-90,bildschirm.hoehe()-30);
			stifty.schreibe("Linker Spieler hat gepunktet!");

			bildschirm.aktualisiere();
		}
	}

	wand1.zeige();
	wand2.zeige();

		stifty.normal();
		stifty.bewegeBis((bildschirm.breite()/2)-40,20);
		stifty.schreibe(new Integer(points1).toString());
		stifty.bewegeBis((bildschirm.breite()/2)+30,20);
		stifty.schreibe(new Integer(points2).toString());

	bildschirm.aktualisiere();
	Hilfe.warte(35);
    }

    bildschirm.gibFrei();
  }

}

