00001
00006 #ifndef __SPUR_
00007 #define __SPUR_
00008
00009 #include <iostream>
00010 using namespace std;
00011
00012 class Fahrzeug;
00013 #include "Fahrzeug.h"
00014 #include "Koordinaten.h"
00015
00020 class Spur
00021 {
00022 public:
00023 Spur( );
00024 Spur(long int id, double laenge, int maximalGeschwindigkeit);
00025 int gibAnzahlFahrzeuge( );
00026 int gibAnzahlAbgefahrenerFahrzeuge( int typ = 0 );
00027 Fahrzeug *gibVorgaenger(Fahrzeug *fahrzeug);
00028 Fahrzeug *gibLetztes();
00029 double gibLaenge();
00030 long int gibId();
00031 void setzeNaechstesVerbindungselement(Spur *spur, int richtung, double wahrscheinlichkeit);
00032 double gibWahrscheinlichkeit(int richtung);
00033 void anmelden(Fahrzeug *fahrzeug);
00034 void abmelden(Fahrzeug *fahrzeug);
00035 Spur *gibNaechsteSpur(int richtung);
00036 double gibMaximaleGeschwindigkeit();
00037 void clear();
00038 void setzeGruen();
00039 void setzeGelb();
00040 void setzeRot();
00041 void setzeSackgasse();
00042 bool istGruen();
00043 bool istGelb();
00044 bool istRot();
00045 bool istSackgasse();
00046 int gibEndzustand( );
00047 Koordinaten gibKoordinaten();
00048 void setzeKoordinaten( Koordinaten koordinaten );
00049 int gibAusrichtung();
00050 void setzeAusrichtung( int ausrichtung );
00051 int gibRichtung();
00052 void setzeRichtung( int richtung );
00053 int gibAbbiegerichtung();
00054 void setzeAbbiegerichtung( int abbiegerichtung );
00055 long int gibNachfolgerId(int richtung);
00056 void setzeNaechstesVerbindungselement(int richtung, long int id, double wahrscheinlichkeit);
00057
00058 friend ostream &operator<< ( ostream &os, Spur *spur );
00059 private:
00060 long int id_;
00061 double laenge_;
00062 int maximalGeschwindigkeit_;
00063 int endzustand_;
00064 Spur *spur_[3];
00065 long int nachfolger_[3];
00066 double wahrscheinlichkeit_[3];
00067 Fahrzeug *fahrzeugListe_[1000];
00068 int anzahlFahrzeuge_;
00069 Koordinaten koordinaten_;
00070 int ausrichtung_;
00071 int richtung_;
00072 int abbiegerichtung_;
00073 int statistik_[4];
00074
00075 void setzeEndzustand(int zustand);
00076
00077 };
00078
00079 #endif