Seite 6 von 8

Re: konkrete Inhaltsfragen

Verfasst: Mo 29. Dez 2008, 14:36
von Chris087
Hey Leute,

Ich hab auch nochmal ein Problem mit der grafischen Darstellung bei Aufgabe 5:

Und zwar initialisiere ich zwei Fahrzeuge, ein fahrendes Auto und ein parkendes Fahrrad, das Auto auf Strasse1, das Fahrrad auf Strasse2.

Jetzt bewegt sich in der Map aber das parkende Fahrrad genauso wie das Auto von Anfang an über die Strasse, der Startzeitpunkt wird also anscheinend nicht beachtet.

Das komische daran ist, es wird beim Fahrrad die ganze Zeit angezeigt:
"Rel. Position auf Weg: 0.0"

Ich hab auch schon mittels Debugger überprüft, es geht alles mit rechten Dingen zu. Die Variablen "p_dAbschnittsstrecke" und "Rel_Position" bleiben NULL, bis der Startzeitpunkt erreicht wird. Und obwohl "bZeichneFahrrad" mit Rel_Position=0 aufgerufen wird, bewegt sich das Fahrrad.

Ich blicke da nicht mehr durch, hat jemand ne Idee?

Aus meiner main.cpp:

Code: Alles auswählen

void vAufgabe_5()
{
	bInitialisiereGrafik(1000,650);

	//Weg Weg1("Strasse1",500);
	//Weg Weg2("Strasse2",500);

	Weg* Strasse1 = new Weg("Strasse1",500);
	cout << *Strasse1 << endl << endl;

	Weg* Strasse2 = new Weg("Strasse2",500);
	cout << *Strasse2 << endl << endl;

	PKW* Auto = new PKW("Auto",150,10,40,60);
	cout << *Auto << endl << endl;

	Fahrrad* Rad = new Fahrrad("Rad",20);
	cout << *Rad << endl << endl;

	Strasse1->vAnnahme(Auto);
	Strasse2->vAnnahme(Rad);
	
	Auto->vNeueStrecke(Strasse1);
	Rad->vNeueStrecke(Strasse2,2);

	cout << *Strasse1 << endl;
	cout << *Strasse2 << endl;

	int koordinaten[32];

	koordinaten[0] = 680;
	koordinaten[1] = 40;

	koordinaten[2] = 680;
	koordinaten[3] = 300;

	koordinaten[4] = 680;
	koordinaten[5] = 570;

	koordinaten[6] = 850;
	koordinaten[7] = 570;

	koordinaten[8] = 970;
	koordinaten[9] = 500;

	koordinaten[10] = 970;
	koordinaten[11] = 390;

	koordinaten[12] = 850;
	koordinaten[13] = 300;

	koordinaten[14] = 170;
	koordinaten[15] = 300;

	koordinaten[16] = 70;
	koordinaten[17] = 250;

	koordinaten[18] = 80;
	koordinaten[19] = 90;

	koordinaten[20] = 200;
	koordinaten[21] = 60;

	koordinaten[22] = 320;
	koordinaten[23] = 150;

	koordinaten[24] = 320;
	koordinaten[25] = 420;

	koordinaten[26] = 350;
	koordinaten[27] = 510;

	koordinaten[28] = 500;
	koordinaten[29] = 570;

	koordinaten[30] = 680;
	koordinaten[31] = 570;
	
	bZeichneStrasse(Strasse1->p_sName,Strasse2->p_sName,500,16,koordinaten);
	vSleep(500);

	//cout << Weg1 << endl;
	//PKW Auto("Auto", 120, 8, 20, 50);
	//Fahrrad Rad ("Rad", 20);

	/*Auto.vNeueStrecke(&Weg1);
	Rad.vNeueStrecke(&Weg2,1);		//Parkendes Fzg
	cout << Auto << endl;
	cout << Rad << endl;
	cout << Weg1 << endl;
	cout << Weg2 << endl;*/


	
	for(dGlobaleZeit = 0; dGlobaleZeit <=5;dGlobaleZeit +=0.05)
	{
		vSetzeZeit(dGlobaleZeit);
		Strasse1->vAbfertigung();
		Strasse2->vAbfertigung();
		Auto->vZeichnen(Strasse1);
		Rad->vZeichnen(Strasse2);
		vSetzeZeit(dGlobaleZeit);
		cout << *Rad << endl;
		cout << *Auto << endl;
	}

	cout << *Strasse1 <<endl;
	vSleep(500);
}


Ps.: Noch eine kleine Frage: Wie schaffe ich es, dass Fahrzeuge, die angehalten haben oder noch garnicht losgefahren sind, nicht mehr bei der Abfertigung Sprit verlieren?

Danke schonmal

Re: konkrete Inhaltsfragen

Verfasst: Mo 29. Dez 2008, 18:05
von Darkmaster
bau in deine abfertigung ne if anweisunng ein in der du das verhalten abfragst (mit getverhalten() funktion).
aber eig wird der tankverbrauch ja über die gefahrene strecke berechnet und da parkende autos nicht fahren, ist das dann wohl auch nicht ganz richtig in deinem programm.

Re: konkrete Inhaltsfragen

Verfasst: Di 30. Dez 2008, 15:54
von Chris087
Ok bin doch noch selbst dahintergekommen!

Es ist garnichts falsch, ich hab das Losfahren und das Anhalten nur noch garnicht implementiert... bin ja erst bei A5!! So kanns gehen wenn man mal 4 Wochen nicht programmiert... :roll: Leider total den Überblick verloren sorry.

Und das Tankentleeren ist jetzt an die tatsächlich gefahrene Strecke und nicht an (MaxGeschwindigkeit*vergangeneZeit) gekoppelt... danke für den Tipp.

Re: konkrete Inhaltsfragen

Verfasst: Mo 5. Jan 2009, 12:21
von p-jakob

Code: Alles auswählen

 void vAktualisieren()
      {
         list <LazyAktion<T>*>::const_iterator itL;

         if ( bChanged )
         {
	         // ausstehende Aktionen durchfuehren
	         for (itL=p_ListeAktionen.begin(); itL != p_ListeAktionen.end(); itL++ )
	         {
	         // Aktion ausführen
		        (*itL)->vAusfuehren();
            // Zeiger auf Action-Element löschen
				//p_ListeAktionen.erase(itL);
	         }
	         // Liste der Aktionen leeren
				p_ListeAktionen.clear();

	         bChanged = false;
         }
      }

also ich habe keine idee, wie ich den Zeiger auf Action-Element löschen kann

Wenn das Fahrzeug den Weg verlässt (in Aufgabe 6), wieso wird es dann noch gezeichnet? (ist jedenfalls bei mir so)
Hilfe!  :D

Re: konkrete Inhaltsfragen

Verfasst: Mo 5. Jan 2009, 17:38
von Jochen
probiers mal mit delete(*itL) statt p_ListeAktionen.erase(itL);

;)

Re: konkrete Inhaltsfragen

Verfasst: Fr 9. Jan 2009, 11:12
von p-jakob
hauptsache der praktikumsbetreuer hat mich heute blöd angemacht, weil ja eine falsche musterlösung rumginge, aber er nicht wüßte wie die aussähe, aber mein programm war wohl auch an einigen stellen falsch und er will aber nichts falsches vermuten...

weiß jemand etwas von einer falschen musterlösung?

Re: konkrete Inhaltsfragen

Verfasst: Fr 9. Jan 2009, 13:57
von midrantos
Amüsant diese Heinis, dass muss man sagen.

Ne ehrlich, zum jetzigen Zeitpunkt sind schon so viele Leute fertig, dass es meiner Meinung nach für jeden möglich wäre, sich eine korrekte Musterlösung zu beschaffen. Das das nicht sinnvoll ist, weil die Testate ja schon sehr gründlich abgenommen werden, (und natürlich auch wegen dem Lerneffekt ;) ) steht auf einem anderen Blatt. Dann ein Theater anzufangen wegen falscher Musterlösung ist schon witzig von den Betreuern.

Re: konkrete Inhaltsfragen

Verfasst: Di 13. Jan 2009, 12:12
von JohnWayne
edit [..]

Re: konkrete Inhaltsfragen

Verfasst: Do 15. Jan 2009, 10:21
von [MD]
Die Typecasts stehen nicht explizit im Text, aber um die letzte Aufgabe zu lösen sind sie notwendig. Man muss beim erstellen der Welt ja die Daten aus der Datei auslesen und anhand dieser Wege, Kreuzungen und Fahrzeuge erstellen. Dabei mussten die Daten aus der Kreuzung in Daten für die Wege umgewandelt werden und hierbei musste man den Typecast explizit angeben, da es sich um verschiedene Klassen handelt. Ich weiß das jetzt nicht mehr ganz genau, aber irgendwie so war das (ist halt schon etwas länger her...)

Re: konkrete Inhaltsfragen

Verfasst: So 29. Nov 2009, 10:11
von King_Fuck
Hallo

Ich weiß mittlerweile dass man am Anfang jedes c++ Programms #include <iostream> using namespace std; schreibt.
In der ersten Zeile wird die Standardbibliothek eingebunden. Was bewirkt die zweite Zeile? Was sind überhaupt namspaces und was std? Auf solche Fragen geben mir die Betreuer entweder keine Antwort oder sagen "Lies dir zum Thema das Buch xy durch"

Ich möchte schon gerne die C++ Sprache verstehen, aber die RWTH hat es mir nach einem Jahr immer noch nicht beigebracht. Vielleicht hilft mir ja das Forum.

mfg