// Lutz Tautenhahn (c) 1995, 1999 #include #include #include #include #include #include #include "aqua3d.h" #include void Staub::Vorsetzen(void) { while (X<0) X+=Periode; } void Staub::Ruecksetzen(void) { while (X>Periode) X-=Periode; } void Staub::Zeichnen(void) { _setcolor(Farbe); _setpixel(X, Y); } void Staub::ReiheZeichnen(void) { int ii; int TempX; int TempPeriode; TempX = GetX(); TempPeriode = GetPeriode(); for (ii=-1; X<540+100; ii++) { X=TempX+ii*TempPeriode; Zeichnen(); } X=TempX; } void Staub::Bewegen(float dX) { ReiheZeichnen(); Verschieben(dX, 0); if (dX < 0) Vorsetzen(); if (dX > 0) Ruecksetzen(); } Koerper::Koerper(int InitX, int InitY, int InitPeriode, int InitGroesse, int InitFarbe) :Staub(InitX, InitY, InitPeriode, InitFarbe) { Groesse = InitGroesse; } //void Koerper::Zeichnen(void) //{ //}; Fisch::Fisch(int InitX, int InitY, int InitPeriode, int InitGroesse, int InitFarbe, int InitZweitFarbe, int InitTyp) :Koerper(InitX, InitY, InitPeriode, InitGroesse, InitFarbe) { ZweitFarbe = InitZweitFarbe; Typ = InitTyp; } void Fisch::Zeichnen(void) { int ii; if (Typ==0) { _setcolor(Farbe); for (ii=0; ii<=Groesse; ii++) { _moveto(X+4*Groesse, Y+Groesse); _lineto(X+2*Groesse, Y+ii); _moveto(X-4*Groesse, Y+Groesse); _lineto(X-2*Groesse, Y+ii); } _ellipse(_GFILLINTERIOR, X-3*Groesse, Y-Groesse, X+3*Groesse, Y+Groesse); _setcolor(ZweitFarbe); _moveto(X-4*Groesse,Y+Groesse); _lineto(X+4*Groesse,Y+Groesse); } if (Typ==1) { _setcolor(Farbe); for (ii=-2*Groesse; ii<=2*Groesse; ii++) { _moveto(X-14*Groesse, Y+ii); _lineto(X-8*Groesse, Y); } _ellipse(_GFILLINTERIOR, X-9*Groesse, Y-3*Groesse, X+9*Groesse, Y+3*Groesse); _setcolor(ZweitFarbe); _moveto(X-3*Groesse,Y+Groesse); _lineto(X,Y); _moveto(X+6*Groesse,Y-Groesse); _lineto(X+7*Groesse,Y-Groesse); _moveto(X+6*Groesse,Y+Groesse); _lineto(X+8*Groesse,Y+2*Groesse); } if (Typ==-1) { _setcolor(Farbe); for (ii=-2*Groesse; ii<=2*Groesse; ii++) { _moveto(X+14*Groesse, Y+ii); _lineto(X+8*Groesse, Y); } _ellipse(_GFILLINTERIOR, X-9*Groesse, Y-3*Groesse, X+9*Groesse, Y+3*Groesse); _setcolor(ZweitFarbe); _moveto(X+3*Groesse,Y+Groesse); _lineto(X,Y); _moveto(X-6*Groesse,Y-Groesse); _lineto(X-7*Groesse,Y-Groesse); _moveto(X-6*Groesse,Y+Groesse); _lineto(X-8*Groesse,Y+2*Groesse); } if (Typ==2) { _setcolor(ZweitFarbe); for (ii= -2*Groesse; ii<=2*Groesse; ii++) { _moveto(X-14*Groesse, Y+ii); _lineto(X-8*Groesse, Y); } _rectangle(_GFILLINTERIOR,X-3*Groesse,Y-6*Groesse,X+3*Groesse,Y-5*Groesse); _setcolor(Farbe); _ellipse(_GFILLINTERIOR, X-9*Groesse, Y-5*Groesse, X+9*Groesse, Y+5*Groesse); _setcolor(ZweitFarbe); _moveto(X-3*Groesse,Y+Groesse); _lineto(X,Y); _moveto(X+6*Groesse,Y-Groesse); _lineto(X+7*Groesse,Y-Groesse); _moveto(X+6*Groesse,Y+Groesse); _lineto(X+8*Groesse,Y+2*Groesse); } if (Typ==-2) { _setcolor(ZweitFarbe); for (ii=-2*Groesse; ii<=2*Groesse; ii++) { _moveto(X+14*Groesse, Y+ii); _lineto(X+8*Groesse, Y); } _rectangle(_GFILLINTERIOR,X-3*Groesse,Y-6*Groesse,X+3*Groesse,Y-5*Groesse); _setcolor(Farbe); _ellipse(_GFILLINTERIOR, X-9*Groesse, Y-5*Groesse, X+9*Groesse, Y+5*Groesse); _setcolor(ZweitFarbe); _moveto(X+3*Groesse,Y+Groesse); _lineto(X,Y); _moveto(X-6*Groesse,Y-Groesse); _lineto(X-7*Groesse,Y-Groesse); _moveto(X-6*Groesse,Y+Groesse); _lineto(X-8*Groesse,Y+2*Groesse); } } Alge::Alge(int InitX, int InitY, int InitPeriode, int InitGroesse, int InitFarbe) :Koerper(InitX, InitY, InitPeriode, InitGroesse, InitFarbe) { srand( (unsigned)time( NULL ) ); for (int ii=0; ii<4; ii++) { for (int jj=0; jj<5; jj++) Zweig[ii][jj] = rand()%8-4; } } void Alge::Zeichnen(void) { short ii; short jj; short XTemp; short YTemp; _setcolor(Farbe); for (ii=0; ii<4; ii++) { XTemp = X; YTemp = Y; for (jj=0; jj<5; jj++) { _moveto(XTemp,YTemp); XTemp += Groesse*Zweig[ii][jj]; YTemp -= (6*Groesse+ii); _lineto(XTemp,YTemp); } } } void Alge::Bewegen(void) { int ii; int jj; for (ii=0; ii<4; ii++) { for (jj=0; jj<5; jj++) Zweig[ii][jj] = rand()%8-4; } }