Autorennen

[Startseite]


Vorwort ] Voraussetzungen ] JAVA ] Implementierung von Klassen ] Erste Programme ] Klassenbibliothek ] Installation ] Applets ] Mehr JAVA ] Inside stiftUndCo ] Beispiele ] Downloads ]
Programmgesteuertes Zeichnen
Freihandzeichnen
Das Ballprojekt
Autorennen
Weitere Beispiele
Der Zug
n-Damen-Problem
Drucken mit stiftUndCo
Türme von Hanoi
Autorennen

Zwei Spieler können gegeneinander antereten. Jeder fährt ein Auto. Der erste Spieler verwendet die Tasten a und s der zweite die Tasten k und l. Abwechselndes Drücken der Tasten bewegt die Autos vorwärts. Also: Auf die Plätze, fertig, Los!

Quelltexte:

/* Auto.java */
import stiftUndCo.*;

public class Auto
{
	private int zx,zy ;
	private char taste1,taste2,erwtaste;
	private BuntStift stift=null;

	public Auto(char t1, char t2, int y)
	{
		taste1=t1;
		taste2=t2;
		erwtaste=t1;
		zx=10;
		zy=y;
		stift = new Buntstift;
	}
	public Auto(char t1, char t2, int y, Malflaeche m)
	{
		taste1=t1;
		taste2=t2;
		erwtaste=t1;
		zx=10;
		zy=y;
		stift = new BuntStift(m);
	}

	public void zeige()
	{
		stift.hoch();
		stift.bewegeBis(zx,zy);
		stift.normal();
		stift.schreibe("o-o");
	}

	public void loesche()
	{
		stift.hoch();
		stift.bewegeBis(zx,zy);
		stift.radiere();
		stift.schreibe("o-o");
	}

	public void vor()
	{
		this.loesche();
		zx=zx+10;
		this.zeige();
	}

	public void werteTasteAus(char pt)
	{
		if (pt==erwtaste)
		{ 
			this.vor();
			if (taste1==erwtaste) {erwtaste=taste2;}
			else {erwtaste=taste1;}
		}
	}

	public int hPosition()
	{
		return zx;
	}

	public int vPosition()
	{
		return zy;
	}

	
	public void gibFrei()
	{
		if (stift != null)
		{
			stift.gibFrei();
			stift=null;
		}
	}
	
}

/*Autorennen.java */
    import stiftUndCo.*;


public class Autorennen

   private Bildschirm bildschirm;
	private BuntStift stift; 
	private Auto auto1, auto2;
	

	public Autorennen()
	{
		char z='#';
       bildschirm=new Bildschirm(400,200,"Autorennen");
		stift=new BuntStift();
		stift.setzeFarbe(Farbe.ROT);
		stift.bewegeBis(10,40);
		stift.schreibe("Start");
		stift.bewegeBis(350,40);
		stift.schreibe("Ziel");
		auto1=new Auto('a','s',60);
		auto2=new Auto('l','k',80);	
		
		auto1.zeige();
		auto2.zeige();
		
	    do
		{
			while ((auto1.hPosition()<350) &&(auto2.hPosition()<350) )
			
			{ 
				if (tastatur().wurdeGedrueckt())
				{
					z=tastatur().zeichen();
					auto1.werteTasteAus(z);
					auto2.werteTasteAus(z);
				}
			}
			stift.bewegeBis(10,100);
			
			if (auto1.hPosition()<350)
			{
				stift.schreibe("Auto 2 hat gewonnen");
			}
			else
			{
				stift.schreibe("Auto 1 hat gewonnen");
			}
		} while (! ende() );
		this.bildschirm().loescheAlles();
		Hilfe.warte(1000);
		stift.bewegeBis(bildschirm().breite()/2-60,bildschirm().hoehe()/2);
		stift.setzeSchriftGroesse(40);
		stift.schreibe("E n d e");
		this.gibFrei();
	}

	public boolean ende()
	{	
		char z='#';
		boolean hilf;
		stift.bewegeBis(10,stift.hPosition()+15);
		stift.schreibe("Nochmal ? (j/n)");
		hilf=false;
		while (!hilf)
		{
			while (!tastatur().wurdeGedrueckt()){;}
			z=tastatur().zeichen();
			hilf=(z=='n') || (z=='N') ||(z=='j') || (z=='J');
		}
		if ((z=='j') || (z=='J'))
		{
			auto1.gibFrei();auto1=null;
			auto2.gibFrei();auto2=null;
			this.bildschirm().loescheAlles();
			Hilfe.warte(2000);
			stift.bewegeBis(10,40);
			stift.schreibe("Start");
			stift.bewegeBis(350,40);
			stift.schreibe("Ziel");
			auto1=new Auto('a','s',60);
			auto2=new Auto('l','k',80);	
			
			auto1.zeige();
			auto2.zeige();

		}
		return z=='n' || z=='N';
	}
	
	public void gibFrei()
	{
      if( auto1 != null)
	  { 
		  auto1.gibFrei();
		  auto1=null;
	  }
     if( auto2 != null)
	  { 
		  auto2.gibFrei();
		  auto2=null;
	  }
 
	}
}		 
 

 


Seitenanfang

© Georg Dick