Suchergebnisse
Suchergebnisse 1-20 von insgesamt 24.
Zitat von »Hello_Kitty!« Golden_Boy, ich denke nicht, dass du dich um den Lernerfolg betrügst, wenn du dir die Lösungen ansiehst. Ganz im Gegenteil, programmieren lernst du am besten, wenn du viel Code liest und dir Gedanken über dessen Funktionsweise machst, anstatt darüber zu Rätseln, was der Autor dir nicht vermitteln kann / will. Die Erklärungen im Buch sind ja eigentlich nur als Krücke gedacht, weil der Programmtext alleine für einen Lernenden noch keine Bedeutung hat. Entsprechend sollte ...
Ja, das Problem hatte ich so ähnlich auch. Anscheinend kriegt das Rect anfangs die Höhe und Breite des gesamten Spritesheets und nicht der einzelnen Animationsphase.
Oh ja, da hattest du Recht, danke. Mitdenken ist angebracht
Soo, jetzt hat sich leider ein neues Problem aufgetan... Im Release funktioniert alles einwandfrei, nur der Debugmodus spuckt mir immer noch die oben genannten Fehler aus:s Das zweite Problem ist, dass das Spiel über den Compiler als Release compiliert zwar problemlos läuft, wenn ich aber die exe von Hand starte, sich das Fenster nur kurz öffnet und direkt wieder schließt. Ich kann auch den kompletten Quelltext posten wenn das weiterhilft aber ist ja im Grunde nur der aus dem Buch.
Hat sich schon erledigt Habe die SDL 1.2.5 neu von der Website geladen, da die Version auf der CD anscheinend Probleme bereitet. Jetzt funktioniert alles einwandfrei
Hey, Ich habe mal wieder ein Problemchen Bin jetzt mit dem Buch durch(2. Auflage) und habe mal das Spiel aus Kapitel 12 abgetippt und vorher schön alles eingebunden wies im Buch steht. Habe die Version der SDL genommen die auf der CD war. Jetzt bekomme ich leider folgende Fehlermeldungen beim kompilieren: Debug: Fehler 3 error LNK1120: 1 nicht aufgelöste Externe F:\C++\Projekte\Asteroide\Debug\Asteroide.exe 1 1 Asteroide Fehler 2 error LNK2001: Nicht aufgelöstes externes Symbol "__imp___CrtDbgRe...
Ok, danke ich denke ich hab es verstanden. d.h wenn ich die Funktion jetzt so definiert hätte: C-/C++-Quelltext 1 void Textout(const char Text) könnte ich nur ein einzelnes Zeichen übergeben und so: C-/C++-Quelltext 1 void Textout(const char *Text) habe ich praktisch ein Array, da das erste Zeichen den Anfang des Speicherbereiches markiert und alle weiteren Zeichen dahintergehängt werden?
Hi, ich bin neu im Forum und schlage mich jetzt schon zu lange mit meinem Unverständnis im Bezug auf Zeiger rum. So jetzt zu meiner Frage/Fragen... Wenn eine Funktion einen Zeiger in der Parameterliste hat wird doch normalerweise beim Aufruf dieser Funktion eine Adresse einer Variable erwartet. Das würde dann so aussehen. C-/C++-Quelltext 1 2 3 4 5 6 7 8 // Funktionsprototyp // void Function(int *pPointer); // Aufruf der Funktion // Function(&Variable); // Hier wird die Adresse der Variable über...
Oh mann bin ich blöd! Ich habe bei der Definierung vergessen :: zu verwenden alos nicht so bool CPlayer:et_Enhanced_options(...) sondern so bool Set_Enhanced_options(..) Trotzdem danke
Hab jetz wieder Probleme mit dem ObjektArray Und zwar hab ich aufm Heap ein Objekt Array aus Instanzen erzeugt(den Konstruktor mit Parametern erstmal weggelassen). Die KlassenInstanzen die ich eben erzeugt habe, sind von einer anderen Klasse abgeleitet. Das Problem ist jetzt, das ich die Funktionen der Abgeleiteten Klassen nicht aufrufen kann, da gibt dann ein Zugriffsproblem. C-/C++-Quelltext 1 2 3 public: bool __thiscall CEnhancedPlayer::Set_Enhanced_Options(int,int)" (?Set_Enhanced_Options@CE...
jo, bin noch nicht so weit. Aber trotzdem danke für die Antworten. Werds wohl erstmal rauslassen weil ich nochn relativ großes Programm zu den vorherigen Kapiteln schreiben wollte bevor ich weitermache.
Hallo, Hab mal wieder ne Frage. Wenn ich ein Array aus Objekten mit dem Heap erzeuge und einen Konstruktor mit Paramterleiste dranhängen will spuckt mir der Compiler immer ne Fehlermeldung aus. ist es irgendwie möglich einen Konstruktor mit Parameterleiste trotzdem zu verwenden ? danke im voraus
Danke für die Antworten ham mir echt geholfen
Ah ok. Soweit verstanden, aber beim Listing7.9 ist es ja so das keine der beiden arten benutzt wird sondern C-/C++-Quelltext 1 pSpielerliste[i].Init() Wenn mann also ein Array aus Instanzen mit dem Heap erzeugt geht nur diese schreibweise. was ja eigentlich ein bisschen wiedersprüchlich ist weil dann beide schreibweisen zusammengewürfelt werden.
Hey, Ich habe nach langer Pause mal wieder angefangen zu programmieren und hab mich nochmal durch das Buch C++ für Spieleprogrammierer gelesen. In Kapitel 7 wird ja der Umgang mit dem Heap erklärt. Jetzt habe ich mich 2 Sachen gefragt: Nachdem Speicher auf dem Heap reserviert wurde und die Adresse in einem Zeiger gespeichert wurde. 1. Warum wird das * weggelassen obwohl man eine Variable verändert. Normalerweise würde man so doch auf die Adresse zugreifen. C-/C++-Quelltext 1 pSpieler->m_Energie ...
Macht euch nichts draus ic hab ne 5 in Mathe und versteh trotzdem was Vektoren sind. Ich mein es kommt nicht auf die Note an sondern darauf wie motiviert mann ist das zu lernen
Um nochmal auf die erste Frag zurückzukommen Ich weis nicht genau ob das in der Praxis genauso gemacht wird aber im Buch steht das mann Referenzen hauptsächlich dazu benutzen sollte große werte zu übergeben aber nicht zu ändern
meinte Byte sorry verwechsle die immer Auf die Idee einfach pointer += 8 oder so hab ich schon probiert dann schmiert das Programm ab und der debugger sagt dass es ne Zugriffsverletzung gibt. Müsste aber eigentlich doch gehen, weil ich ja mit tbMemAlloc speicher reserviert habe. In meinem Fall jetzt 8000 bytes. Dann müsste es doch ohne Zugriffsverletzung gehen bis 8000 zu erhöhen oder?
Bin da völlig falsch rangegangen glaube ich. hab jetzt das geschrieben C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 tbInit(); int *PWerte_1 = NULL; int *PWerte_2 = NULL; int *bla = NULL; PWerte_1 = reinterpret_cast<int*>(tbMemAlloc(8000)); PWerte_2 = reinterpret_cast<int*>(tbMemAlloc(8000)); for(int i=0;i < 999;i++) { *PWerte_1 = tbIntRandom(1,5000); *PWerte_2 = tbIntRandom(1,5000); PWerte_1 += 1; PWerte_1 += 1; } tbWriteToLog("PWerte_1 %int*", *PWerte_1); TB_SAFE_ME...