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;
}
}
}
|