Volkard Tutorial: Lektion 26
-
volkard schreibt ganz unten in lektion 26: "man könnte darüber nachdenken...". das habe ich versucht, habe aber das prinzip der vererbung und des polymorphismus wohl noch nicht gecheckt. kann mir jemand zeigen, wie diese klasse "spiel" konkret aussehen könnte und ich damit ein beliebiges spiel starten kann?
besten dank im voraus.
-
maersk schrieb:
kann mir jemand zeigen, wie diese klasse "spiel" konkret aussehen könnte und ich damit ein beliebiges spiel starten kann?
class CMyGame : public Crysis.exe { //... }

-
volkard schrieb zwar extra, dass dies eine andere geschichte sei, aber bitte schön:
#include <iostream> using namespace std; class Spiel { public: virtual ~Spiel() {} void einSpielDurchfuehren() { starteSpiel(); while (true) { zugRechner(); if (gewonnen()) { cout << "Ich habe gewonnen!" << endl; return; } zugMensch(); if (gewonnen()) { cout<<"Sie haben gewonnen!"<<endl; return; } } } protected: virtual void starteSpiel() = 0; virtual void zugRechner() = 0; virtual void zugMensch() = 0; virtual bool gewonnen() = 0; }; class NimmSpiel : public Spiel { protected: void zugRechner() { int wunschZug = m_anzahlDerMuenzen % 4; if (wunschZug == 0) m_anzahlDerMuenzen = m_anzahlDerMuenzen - 1; else m_anzahlDerMuenzen = m_anzahlDerMuenzen - wunschZug; } void zugMensch() { int ergebnis; cout << "Jetzt liegen " << m_anzahlDerMuenzen << " Muenzen auf dem Tisch." << endl; cout << "Wieviele moechten Sie nehmen? "; cin >> ergebnis; m_anzahlDerMuenzen = m_anzahlDerMuenzen - ergebnis; }; bool gewonnen() { return m_anzahlDerMuenzen == 0; }; void starteSpiel() { cout << "Mit wievielen Muenzen fangen wir an? "; cin >> m_anzahlDerMuenzen; }; private: int m_anzahlDerMuenzen; }; int main() { Spiel *s = new NimmSpiel; s->einSpielDurchfuehren(); delete s; }
-
LOL... do you know stack...
int main()
{
Spiel *s = new NimmSpiel;
s->einSpielDurchfuehren();
delete s;
}
-
LOL^^ schrieb:
LOL... do you know stack...
int main()
{
Spiel *s = new NimmSpiel;
s->einSpielDurchfuehren();
delete s;
}Das ist doch ein Game-Coder da ist die CMyGame Klasse tausende von MBs groß und muss deshalb auf den Heap. Hast du noch nie ein (schlechtes) Buch über Spieleprogrammierung gelesen?
Wenn es eines gibt was die nicht könnnen, dann sinnvoll mit C++ arbeiten.*
*Dies muss nicht zwangsweise auf alle zutreffen, aber wer pauschalisierte denn nicht gerne

-
LOL^^ schrieb:
LOL... do you know stack...
LOL... do you know kleines beispiel für laufzeitpolymorphie...