JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Buchkritik zu "jetzt lerne ich DirectX9 und Visual C++&
Gehe zu Seite 1, 2, 3  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
alexm
Mini JLI'ler



Anmeldedatum: 20.11.2005
Beiträge: 15
Wohnort: Wien
Medaillen: Keine

BeitragVerfasst am: 24.11.2005, 09:33    Titel: Buchkritik zu "jetzt lerne ich DirectX9 und Visual C++& Antworten mit Zitat

Da ich mich mit dem Thema DX & C++ für Spieleentwicklung auseinandersetzen wollte, habe ich mich riesig gefreut, als ich dieses Buch entdeckte.
Bis zur Seite 140 war alles nachvollziehbar und auch gut erklärt.
Auf Seite 141 wird dann jedoch das erste mal für Verwirrung gesorgt.
Beispiel:
Bis dahin, wird der * jeweils vor die Zeigervariable gestellt. Ab Seite 141 wird gemischt:
Seite 141:
CPP:
int* pZahl = new int;

Seite 142:
CPP:
int *pIntFeld = 0;

Nach Stundenlangem suchen rief ich einen Freund an, der mir erklärte, dass das vollkommen egal ist, wo der Stern steht.
Sorry, aber da C++ einen sehr komplexen Eindruck macht, geht man davon nicht aus, dass soetwas egal ist.
Hier wäre eine kurze Dokumentation angebracht gewesen, warum ab hier (geht ja später im Buch genauso gemischt weiter) der Stern einmal so und einmal so verwendet wird.

Die nächste Sache die mich Stundenlang beschäftigt hat, ist das Kapitel 12.5 / 12.6 (Seite 192, 193).
Geht man so vor, wie in dem Buch beschrieben, also
"Win32-Anwendung"
"Leeres Projekt"
"Fertigstellen"
danach Ordner Quellcodedateien -> Neue Datei HelloWindows.cpp

so erhält man eben eine leere Datei und nicht wie im Buch beschrieben, eine Datei mit der WinMain() die anders als bei der Konsolenanwendung aussieht.

Ab dieser Seite sind die Beispiele für mich leider gar nicht mehr nachvollziehbar. Einzige Chance um zu sehen, was die Beispiele im Buch bewirken ist, wenn man die Beispieldateien auf der CD ansieht und mit dem Buch vergleicht.
Leider kommt man aber auch hier nicht unbedingt auf einen grünen Zweig, da im Buch sehr viel gar nicht angeführt wird.
So fehlen zb. includes, die dann jedoch im zugehörigen Beispiel auf der CD sehr wohl vorhanden sind.

Mit 25.70 EUR ist das Buch ja zum Glück in einem vernünftigen Preissegment unterwegs, aber ich finds dennoch schade, dass hier so Oberflächlich gearbeitet wurde.

Ich bin momentan ratlos, wie ich mit meinem "C++ und DX lernen" mithilfe dieses Buches weiterkommen soll.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 24.11.2005, 10:59    Titel: Antworten mit Zitat

Zu deinem ersten Problem / zu deiner erste Frage:
Es ist tatsächlich Egal, ob der Stern nach dem Typ oder vor der Variable zu finden ist.
Vom Logischem her finde ich aber, dass der Stern an den Typ gehört und nicht an die Variable, da:
CPP:
int* a;

oder um später eventuell besser arbeiten zu können
CPP:
int* pa;

eine Variable vom Typ "Pointer auf Int" erstellt und nicht "Int, aber ein Pointer"
Da man den Stern später zum dereferenzieren benötigt, hat der Stern an der Variable noch diese Bedeutung. Bsp:
CPP:
pa=new int;
*pa=42;

In pa steht nun eine Speicheradresse, welche von new zurückgegeben wurde, Beispielsweise 0x1bff0240, und an dieser Speicheradresse befinden sich 4 Bytes (sizeof(int) ist 4) welche den Wert 42 enthalten.
Da du nun den Speicher mit new zugewiesen hast, darfst du nicht vergessen, ihn wieder freizugeben, sonst entstehen die gefürchteten Memoryleaks - Speicherlöcher. Das bedeutet im Prinzip nur, dass du auf mit new zugewiesenen Speicher nicht mehr rankommst, solltest du seine Adresse vergessen (z.B. in dem du pa einen neuen Wert zuweist:
CPP:
//Schlechte Idee:
pa=0x12345678;
Nun kennst du den Orginalpointer nicht mehr und kannst diesen Speicherbereich weder freigeben noch erneut mit new bekommen...
Freigeben geschieht mit delete, in diesem Fall also
CPP:
delete pa;


HTH, AFE-GmdG
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
fast hawk
Senior JLI'ler



Anmeldedatum: 15.07.2005
Beiträge: 237
Wohnort: Freiburg
Medaillen: Keine

BeitragVerfasst am: 24.11.2005, 14:02    Titel: Antworten mit Zitat

Das mit dem Sternchen ist wirklich ein bisschen verwirend für anfänger
aber so weit ich weiß steht im Text das es egal ist das wo Sternchen steht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Dr. Best
Senior JLI'ler


Alter: 35
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 24.11.2005, 14:49    Titel: Antworten mit Zitat

Das beides möglich ist hat aber auch seinen Grund.
AFE-GmdG hat ja schon gesagt, dass es eigentlich logischer ist das Sternchen an den Typ zu schreiben. Daher kann man das auch machen.
Aber wenn man mehrere Variablen gleichzeitig deklariert dann sollte man die Sternchen besser an die Variablen schreiben:
CPP:
int *a,b,*c;

Bei dieser Deklaration wären a und c Pointer auf int-Variablen, b wäre aber einfach eine int-Variable und kein Pointer.
Daher ist es in diesem Fall sinnvoller die Sternchen an die Variablen zu setzen.
Aus diesem Grund ist in C++ beides möglich.
_________________

Ich bin da, wer noch?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 24.11.2005, 16:55    Titel: Antworten mit Zitat

Der Code
CPP:
int *a, b, *c;
ist aber auch extrem schlechter Programmierstil - und ich bin mir nichtmal sicher, ob b in diesem Fall wirklich nur ein int ist... (will ich auch nicht unbedingt Nachtesten - wie gesagt, extrem schlechter Stil)
CPP:
int* a, b, c;
ist ebenfalls schlechter Stil, weil auch hier nicht genau gesagt werden kann, was b und c ist. (Pointer oder nicht Pointer - das ist hier die Frage)
Um weiter zu gehen, wie sieht es dann folgendermassen aus:
CPP:
typedef int* PINT;
PINT a, b, c;

Allein schon aus diesen Gründen habe ich bisher immer jede Variable extra Deklariert - nur dann gibt es keine "Interpretationsmöglichkeiten":
CPP:
int* a;
int  b;
int* c;

_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dr. Best
Senior JLI'ler


Alter: 35
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 24.11.2005, 17:20    Titel: Antworten mit Zitat

Also dass bei diesem Code b kein Pointer ist weiß ich mit Sicherheit.
Zumindest bei VC++ 6.0 und .net 2003 ist das der Fall.
Bei dem typedef wären glaube ich alle Variablen Pointer.
Aber hast schon Recht so ganz eindeutig ist die Sache nicht. Ich wollte es bloß mal erwähnt haben, da es erklärt weshalb beides möglich ist.
_________________

Ich bin da, wer noch?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 24.11.2005, 19:16    Titel: Antworten mit Zitat

ja, ich fands auch erst bisschen schweirig mcih in Windows einzuarbeiten, aber wenn du es mit dem Buch geschafft hast, hast du wirklich was gelernt, den selbsterarbeitetes vergisst man nciht so schnell wie beigebrachtes. Ich will damit nciht sagen das das so gut ist, sondern das es mit ein wenig Zeit durchaus möglich ist, alles zu verstehen.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
alexm
Mini JLI'ler



Anmeldedatum: 20.11.2005
Beiträge: 15
Wohnort: Wien
Medaillen: Keine

BeitragVerfasst am: 24.11.2005, 22:36    Titel: Antworten mit Zitat

Es freut mich, dass auf mein Posting ausschliesslich ernsthafte Antworten kommen. Hatte eigentlich vermutet, dass ich in der Luft zerissen werde.

zu dem Thema *

CPP:
int* a;
int  b;
int* c;

finde ich als eindeutige und sauberste Schreibweise und würde es auch in Actionscript so machen.

@fast hawk:
dass ich das überlesen hätte? hmm ... glaub ich aber fast nicht.

@Jonathan_Klein:
Das ist ja genau das was mich so ärgert.
Die Thematik des Buches ist ja echt super und eben genau das, was man sich für den Anfang wünscht.
Allerdings frage ich mich, wie ich je in dem Buch weiterkommen soll da ich einfach die art und weise nicht durchblicke, wie der Autor denkt, dass man die Beispiele verstehen soll ( könnts mir folgen was ich meine? ).

Habe heute zb. zum xten mal das Beispiel angesehen, wie man ein Window erstellt.
Jetzt allmählich hats glaub ich ein bissl gefunkt.
Anders als bisher im Buch werden hier vorab diverse Parameter erklärt und ganz zum Schluss folgt dann das eigentliche Beispiel, dass funktionieren sollte wenn manns abtippt.
Habs noch nicht probiert, werde das aber sicher demnächst mal machen und euch Berichten.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 24.11.2005, 23:46    Titel: Antworten mit Zitat

Es kann durchaus sein, dass die Art und Weise, mit der ich im Buch versuche C++/Windows/DirectX zu erläutern nicht zu deiner Art zu lernen/verstehen passt. Das mag zwar für dich unangenehm sein, da du das Buch mit bestimmten Erwartenungen gekauft hast, auf der anderen Seite muss ich aber auch sagen, dass es schon mehr als erstaulich wäre, wenn du Themengebietete wie Windows an einem Nachmittag oder in einer Woche verstehst. Dazu sind die Themen auch zu komplex. Versuche es doch mal mit etwas mehr Geduld.

Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
fast hawk
Senior JLI'ler



Anmeldedatum: 15.07.2005
Beiträge: 237
Wohnort: Freiburg
Medaillen: Keine

BeitragVerfasst am: 25.11.2005, 13:21    Titel: Antworten mit Zitat

Wie willst du es denn anders alexm erst den Quellcode und dann die Erklärung. Das ist die andere weiße die auch oft in Büchern ist.
Aber Windows ist so komplex das du da schon einen Monat einrechnen kannst(nur Grundlagen). Oft hilft es auch wenn du jeden Tag dir das einmal durchliest und dann mal darüber schläfst und am nächsten Tag nochmal liest dann kommt dir das oft viel Verständlicher vor. Vor allem nicht einfach über mache sachen nur so drüber lesen sonder Versuchen selber den Qellcode nachvollzeihen und ein bisschen damit spielen oder dir anschaust was passiert wenn du einen Wert veränderst einfach ein bisschen mit dem Code beschäftigen.Dann wird das mit der Zeit schon verständlich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 25.11.2005, 13:48    Titel: Antworten mit Zitat

Lol? Ein einziges Buch, dass C++, STL, WinAPI, DirectX in ihrer vollen Gänze abhandeln soll? Dir ist bewusst, dass jedes dieser Themen für sich gut und gerne 1-2 Bücher füllen kann?
Ich kann dir nur empfehlen dir weiteres Referenzmaterial zu den einzelnen Sachen zu besorgen, in deinem Falle am besten den Petzold.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
sp3cK-r0LL3
Senior JLI'ler


Alter: 34
Anmeldedatum: 18.06.2004
Beiträge: 275

Medaillen: Keine

BeitragVerfasst am: 25.11.2005, 22:53    Titel: Antworten mit Zitat

greven er soll einfach anfangen zu coden, learning by doing ist besser als stures bücherlesen xD kann ich aus iegener erfahrung sagen Rolling Eyes wenn er dann soweit ost soll er sich neue bücher holen, aber er weiß ja nicht mal, ob ihm proggen spaß macht (wird).
_________________
sex is updatedb; locate; talk; date; cd; strip; look; touch; finger; unzip; uptime; gawk; head; apt-get install condom; mount; fsck; gasp; more; yes; more; umount; apt-get remove --purge condom; make clean; sleep
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 25.11.2005, 23:12    Titel: Antworten mit Zitat

sp3cK-r0LL3
Na ja, aber für sowas Komplexes und Umfangreiches wie Win32API sollte man sich schon den Petzold zur Seite ziehen. Mit Learning By Doing ohne grundlegende Kenntnisse zerballert man sich damit schnell etwas.
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
fast hawk
Senior JLI'ler



Anmeldedatum: 15.07.2005
Beiträge: 237
Wohnort: Freiburg
Medaillen: Keine

BeitragVerfasst am: 25.11.2005, 23:17    Titel: Antworten mit Zitat

Learning by doing ist auch meiner meinung nach bei programmieren nicht unbedingt angebracht.
Weil vieles einfach Know-how ist.(Schreib mir mal ein Spiel in DirectX wenn du keinerlei Material hast und DX noch nie gesehen hast).
Aber mit dem Code dann zu arbeiten ist ganz wichtig. Man kann sich was viel leichter merken wenn man mal ein bisschen
rumproggt wie wenn man es nur im Buch liest.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
sp3cK-r0LL3
Senior JLI'ler


Alter: 34
Anmeldedatum: 18.06.2004
Beiträge: 275

Medaillen: Keine

BeitragVerfasst am: 25.11.2005, 23:19    Titel: Antworten mit Zitat

dann soll er erstmal was für konsole proggen, dann kann er an windows ran... mach halt n prog, dass dir pi ausrechnet.. nur so aus spaß: dann bekommste n bisschen gefühl für container etc., typecasten, std::cout/cin/etc. und algorithmen...
_________________
sex is updatedb; locate; talk; date; cd; strip; look; touch; finger; unzip; uptime; gawk; head; apt-get install condom; mount; fsck; gasp; more; yes; more; umount; apt-get remove --purge condom; make clean; sleep
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Gehe zu Seite 1, 2, 3  Weiter
Seite 1 von 3

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum