C++ für Pandora Lernen


Also ich möchte mal einen Tipp abseits der Wahl der verschiedenen Programmiersprachen und technischen Hilfsmittel geben, und zwar einen kleinen Einblick darin, auf welche Art und Weise ich das Programmieren damals gelernt hab. Als konkrete Methode kann ich folgendes empfehlen:
Christoph.K said:
Mein Tipp: versuch nicht, es [das Buch, Anm.] von vorne nach hinten durchzulesen, sondern stöbere darin herum bis du etwas entdeckst, das für dich so klingt als könntest du Spaß an einer konkreten Umsetzung dessen haben. Und dann versuch dich an der Umsetzung, der Schwierigkeitsgrad ist erst einmal von untergeordneter Rolle, denn je schwieriger desto höher der potenzielle Wissensgewinn pro Codezeile. Das musst du dann ausloten, wie viel oder wenig Schwierigkeit für dich am besten ist, und das findest du mit der beschriebenen Methode dadurch heraus, dass es dir noch Spaß macht. Wenn es frustrierend wird, dann blättere einfach noch einmal im Buch umher und suche dir etwas anderes heraus. :)

Das ganze kannst du dann für deine erste veröffentlichte Software konkret ausweiten, indem du dir einen Satz an Voraussetzungen zulegst die du an deine eigene Software stellst. Ich z.B. habe beispielsweise Sicherheit eine hohe Priorität gegeben. Wenn ich mir also Wissen zu etwas aneigne, um daraus letztlich etwas schaffen zu können, das andere nutzen werden, dann verifiziere ich laufend, ob dieses Wissen mit sicherheitskritischen Problemen behaftet ist. (Deswegen sehe ich C auch längst als Medaille mit - Überraschung - ZWEI(!) Seiten. :) )

Das ist jedoch nur mein bescheidener persönlicher Senf und durchaus "with a grain of salt" (mit Skepsis) zu konsumieren (vorsicht, fantastulöses Wortspiel :) ).
foxblock said:
Ich lerne selber kaum mit Büchern, als mit Tutorials und Beispielprogrammen aus dem Netz.
Ich bin der Meinung, dass man am besten lernt, wenn man das direkt praktisch angeht, also man sich ein paar Grundkenntnisse holt und dann einfach mal loslegt (Hello World, der Standard, dann evtl ein kleines "Textadventure", dann was mit Grafiken, etc.) und sich so anhand einigen Beispielen nach und nach das aneignet was man braucht oder wissen will.
Zudem kann man sich etwas kompliziertere OpenSource Programme oder Spiele herunterladen und sich dann mal durch den Quelltext schlagen um zu gucken wie gewisse Strukturen umgesetzt wurden, etc.
So mach ich's auch meistens, ist auch für einen Einstieg eine gute Sache. Später können dann allerdings (gute!) Bücher das auf diese Weise erworbene Wissen teilweise hervorrangend komplementieren, nicht nur bei Programmiersprachen. Es kommt natürlich immer auf das konkrete Thema an, und wie gut die dazu erhältlichen Informationen in Büchern respektive dem Internetz letztlich sind. Spontan fällt mir da z.B. "The Art of Deception" und http://www.sicherheitskultur.at/social_engineering.htm#schutz ein.
Quelle: http://forum.gp2x.de/viewtopic.php?f=7&t=9723&start=30#p125249


------------------------------------------------------------------------

Für einen praktischen Einstieg in das Thema 3D-Spieleentwicklung empfehle ich noch immer das "3d-Gamestudio", mit dem auch ich damals meinen ersten Kontakt mit C (bzw. "C-lite", einer C-Untermenge) und virtuellem dreidimensionalen Raum gemacht habe.

Damit kann man zwar am Ende nicht viel anfangen (es ist kein echtes C, und für die Pandora entwickeln kann man damit schon mal gar nicht), der Beispielcode ist mittelgrausam (oder war es zumindest damals), aber es ist ein guter Einstieg, denn erst einmal muss man abstrakt verstehen, wie man z.B. im virtuellen dreidimensionalen Raum (oder auch im zweidimensionalen Raum) navigiert, wie einzelne Einheiten miteinander agieren, wie die Algorithmen hinter graphischen Effekten aussehen etc. (das ist genau das, was du, CF-Freakx, mit "mich interresirt wie man generellen den Sprung ins 2D game Progen. kommt ! Wo lernt man von der C++ tehorie in die 2D spiele Praxis zu springen?" meinst.)

Genau dafür ist das Gamestudio als Komplettpaket hervorragend geeignet, und sonderlich teuer ist es auch nicht (Version 7.5 kostet momentan etwa 30 Euro, Version 8 erscheint wie ich gerade gesehen habe am 15. Oktober für 75 Euro, aber 7.5 reicht vollends aus, es geht hierbei ja nur um die abstrakten Mechanismen und nicht um eine opulente Grafikengine u.Ä.).


------------------------------------------------------------------------

Ein weiteres Problem besteht gerade bei Spielen darin, dass ein gut geschriebener Programmcode noch lange kein gutes Spiel macht (genau so, wie ein kompilierender Code noch lange nicht fehlerfrei ist).
Christoph.K said:
Viel problematischer als das reine Programmieren an sich ist allerdings, auch ein gutes Spielkonzept zu haben und am Ende mit einer Software dazustehen, die anderen auch tatsächlich SPAß bereitet. Ich weiß leider nicht mehr, wer es gesagt hat, wann oder wo, und kenne auch nicht mehr den genauen Wortlaut, aber irgendwann habe ich mal gelesen, ein bekannter Spieldesigner habe mal von sich gegeben (sinngemäß):
Ein Bekannter Spieldesigner said:
Your first 10 games will be horrible.
Besser kann man es eigentlich nicht ausdrücken. Bei mir hat es auch einiger Spiele bedurft, ehe etwas dabei herauskam das ich auch heute (also mit mehr Abstand) noch als spaßig bezeichnen würde. Denn es geht darum, herauszufinden was den BENUTZERN Spaß macht, und das stimmt nicht unbedingt intuitiv mit dem überein was den jeweiligen ENTWICKLERN am Spiel spaßig erscheint.

Ein guter Programmierer macht eben noch keinen guten Spieleentwickler. Solange man sich dessen bewusst ist und Spaß an der Sache hat kann man allerdings nicht viel falsch machen, denn wenn man motiviert bei der Sache ist und Rückmeldungen der Spieler analysiert, dann werden folgende Spiele immer besser.

Auch deshalb, und vor allem aber wegen dem hohen Programmieraufwand und der Komplexität, kann auch ich nur davon abraten, zu Anfang gleich ein größeres Projekt starten zu wollen. Ein Pong-Klon oder etwas ähnlich triviales ist für den Anfang genau das richtige, und dann ist es auch von eher untergeordneter Bedeutung, welche Komplexität die jeweils verwendete Programmiersprache und Werkzeuge vorweisen. :)
Quelle: http://forum.gp2x.de/viewtopic.php?f=7&t=9723&p=124972#p124972
 
WOW :juhu:
du hast dir echt richtig mühe gegeben, und wenn ich dein Beitrag so durchlese steht vieles drin was mir so nebenbei aufgefallen ist, sachen wie das wenn man nur perfect C++ kann, das man dann nicht zwingend gute spiele machen kann. Und das es besser ist das Buch durchzugehen und interresante sachen sich anzuschauen, diesen "effect" da ich sage "Wow, das ist interessant" hatte ich bis jetzt auch nur 2 mal in mittlerweile einem Drittel des Buches. Meine lieblings stelle ist relative am Anfang, wo mir das lesen richtig Spaß gemacht hat, das war das Kapitel über Schleifen, Konntrollstruckturen mit if - else etc .


Ich stell mir auch dem öfteren die Frage WIESO ich etwas lerne... da ich keinen großen Sinn dahintersehe, da ich dies wahrscheinlich nie brauchen werde, und das liegt nicht an dem Buch! Also das Buch ist "C++ von A-Z" von Galileo-Computing welches wie bereits gesagt hammer ist ;)

Was mir, wenn ich so vergehe wie du empfiehlst, fehlt wäre das wissen was alles nötig ist! Also welche sachen ich mir genau anschauen sollte und welche für die Spiele Entwicklung erstmal unnötig sind, Grundlagen wie Texte anzeigen lassen, welche vom Benutzter im Programm eingeben lassen (zum Beispiel eine zahl) und dann mit If-else überprüfen ob die eingabe fehlerhaft was (also ob es eine zahl war ;) ) sind relative selbsteklären wieso man sie braucht,
wozu ich Zeiger brauche verstehe ich auch gennerell nicht, kommt mir aber so vor als wäre das wichtig.... einfach das ganze zeugs...

Vllt kennt jemand eine Tutorial bei dem mit genau den sachen die man , in diesem fall für SDL Programierung, braucht lernt umzugehen, also einfach aus Theorie Praxis machen, da dies immer einfacher ist, das merkt man (ich) auch in der Schule, wenn der Typ vorne quaselt versteh ich das was er meint, wie ich das dann anwende versteh ich erst wenn wir ein paar aufgaben dazu machen.

Dazu noch eine Liste mit Sachen die ich lernen sollte, dann würde mir das sehr stark helfen.



gruß ;)
 
CF-Freakx said:
diesen "effect" da ich sage "Wow, das ist interessant" hatte ich bis jetzt auch nur 2 mal in mittlerweile einem Drittel des Buches. Meine lieblings stelle ist relative am Anfang, wo mir das lesen richtig Spaß gemacht hat, das war das Kapitel über Schleifen, Konntrollstruckturen mit if - else etc .
Beim Erlernen von Schleifen und ähnlichem erhält man ja schnell ein erstes Erfolgserlebnis, da es um das Erlernen und Anwenden genau einer Technik geht die schnell umgesetzt ist. Das Ergebnis ist schnell da, und man erlebt wie das selbst geschaffene funktioniert.

Ich persönlich würde empfehlen, dass du am besten weitermachst, indem du dir ein ganz kleines Projekt ausdenkst und dieses umsetzt, damit sich das gelernte festigt.
CF-Freakx said:
Ich stell mir auch dem öfteren die Frage WIESO ich etwas lerne... da ich keinen großen Sinn dahintersehe, da ich dies wahrscheinlich nie brauchen werde [...]
Das ist auf jeden Fall wesentlich besser, als wenn man nur lernt damit man ein bestimmtes Ziel erfüllt. Neugierde und der Wunsch, etwas zu lernen, sind überaus hilfreich.
CF-Freakx said:
Was mir, wenn ich so vergehe wie du empfiehlst, fehlt wäre das wissen was alles nötig ist! Also welche sachen ich mir genau anschauen sollte und welche für die Spiele Entwicklung erstmal unnötig sind, Grundlagen wie Texte anzeigen lassen, welche vom Benutzter im Programm eingeben lassen (zum Beispiel eine zahl) und dann mit If-else überprüfen ob die eingabe fehlerhaft was (also ob es eine zahl war ;) ) sind relative selbsteklären wieso man sie braucht,
wozu ich Zeiger brauche verstehe ich auch gennerell nicht, kommt mir aber so vor als wäre das wichtig.... einfach das ganze zeugs...
Programmieren ist eine Tätigkeit, bei der man sehr von großer Kreativität profitieren kann. Viele Leute nennen Programmieren auch eine "Kunst". Das liegt daran, dass es in jeder Turing-Vollständigen Programmiersprache wahrhaftig unendlich viele Möglichkeiten gibt, ein- und dieselben Dinge zu erreichen.

Ich nehme mal an, dass dir "99 Bottles of Beer" (eine beliebte Schleifen-Übung) bereits etwas sagt. Auch hier gibt es in ein- und derselben Programmiersprache unendlich viele Möglichkeiten, den erwünschten Liedtext zu generieren. So kann man -- so man denn möchte -- z.B. die Flaschen auf 30 Schleifen aufteilen oder einfach ausschließlich print-Statements und gar keine Schleifen verwenden. Der ausgegebene Text ist dann zwar immer der gleiche, aber manche Implementationen sind schneller geschrieben, einfacher wartbar, effizienter. Je mehr Kreativität man in das Programmieren einfließen lässt, desto höher die Wahrscheinlichkeit, dass der am Enden eingeschlagene Lösungsweg möglichst nahe am imaginären Optimum liegt.

Was ich damit sagen will: Zeiger und ähnliches, das du noch nicht verstehst, benötigt man nicht zwingendermaßen (auch, wenn das dann unter Umständen kein guter Programmierstil ist). Früher oder später, sobald du das Grundlegendste verinnerlicht hast, wirst du allerdings durch Logik auch solche Beispielquellcodes verstehen, die du zuvor ganz einfach nicht verstehen konntest. Viele Dinge in diesen Beispielquellcodes wirst du erst einmal nach wie vor nicht verstehen, aber dadurch, dass dir dann die grundlegendsten Dinge in Fleisch und Blut übergegangen sein werden, wirst du automatisch mehr Hirn-Rechenleistung für diese Dinge übrighaben. So kannst du sie besser verstehen und in einem iterativen Prozess mehr und mehr dessen verinnerlichen, das dir jetzt noch nicht klar ist.

Eine konkrete Liste an Dingen, die du lernen solltest, kann ich dir leider nicht nennen. Ebenso wenig ein für dich passendes praktisches Tutorial (abgesehen vom bereits angesprochenen Gamestudio), tut mir Leid.
 
Ok, ist was her.. aber eignet sich gut zum flamen..
JohnDavidson said:
Ne gute IDE (sozusagen ein Editor) wie NetBeans muss auch her. NetBeans ist einfach zu bedienen und ist einfach mit die besste IDE. Viele werden dir hier noch Eclipse andrehen wollen. Ich kann dazu nicht raten. Eclipse ist langsamer und Benutzer-Unfreundlich. Bis man da ein Projekt eingerichtet hat, hat man mit anderen IDEs schon sein erstes Programm entwickelt. Achja viele werden dir auch von C++ abraten. Da kann ich auch nicht zustimmen. Wenn de damit anfängst ist es genauso einfach wie mit anderen OO-Sprachen. C++ wird es aber auch noch in 10 Jahren geben, also machst de hier nichts falsch.
Ich weiss ja nicht wie du rumhantierst, aber mit Eclipse+CDT geht das Ruck Zuck, und wenn ich da an meinen (ersten und) letzten Netbeans-Versuch zurückdenke, dann fällt mir nur ein, dass man an allen Ecken und Enden gemerkt hat, dass Netbeans für Java äh Swing gedacht ist/war. Gegenüber Netbeans würde ich Code::Blocks oder CodeLite vorziehen. Oder doch Eclipse.
 
Evil Azrael said:
Ok, ist was her.. aber eignet sich gut zum flamen..

;)

Ich bin halt Pro-Netbeans, da musste ich das einfach aus Prinzip schreiben *g* Ne für mich ist Netbeans einfach die erste Wahl. Ist natürlich immer Geschmackssache. Aber Netbeans hat sich in den ganzen Jahren echt gemacht.
 
Evil Azrael said:
Ich weiss ja nicht wie du rumhantierst, aber mit Eclipse+CDT geht das Ruck Zuck, und wenn ich da an meinen (ersten und) letzten Netbeans-Versuch zurückdenke, dann fällt mir nur ein, dass man an allen Ecken und Enden gemerkt hat, dass Netbeans für Java äh Swing gedacht ist/war. Gegenüber Netbeans würde ich Code::Blocks oder CodeLite vorziehen. Oder doch Eclipse.

Bin genau der selben Meinung. Eclipse ist einfach die allerbeste IDE für Linux. Code::Blocks würde ich sogar lieber verwenden, aber da funktioniert sovieles nicht und an Eclispe habe ich mich schon gewohnt. Außerdem programmieren die meisten die ich kenne mit Eclipse...
 
A Pro pro Code::Blocks: hab mir mit Tipps aus dem englischen Forum den Pandora Cross Compiler bei Code::Blocks reingefummelt. Scheint auch erstmal zu funktionieren, aber umfangreiche Tests hab ich natürlich nicht gemacht.
 
Thrake said:
Außerdem programmieren die meisten die ich kenne mit Eclipse...

Was nicht heißt dass es ne gute IDE ist. Eclipse ist halt einfach die viel bekanntere IDE ;) Gibt aber allgemein einige ganz gute IDEs wie z.B. Kdevelop, Visual Studio, Xcode.

Oder für die ganz harten halt Vim :p
 
JohnDavidson said:
Thrake said:
Außerdem programmieren die meisten die ich kenne mit Eclipse...

Was nicht heißt dass es ne gute IDE ist. Eclipse ist halt einfach die viel bekanntere IDE ;) Gibt aber allgemein einige ganz gute IDEs wie z.B. Kdevelop, Visual Studio, Xcode.

Oder für die ganz harten halt Vim :p

kdevelop ist dreck, Visual Studio nur für Windows (und sogar besser) und Xcode kenn ich nicht wirklich...
 
Hi,

ich mag Code Blocks recht gern das gibt es für Windows, Mac und Linux.

Schönen Gruß
Rene
 
relei said:
Hi,

ich mag Code Blocks recht gern das gibt es für Windows, Mac und Linux.

Schönen Gruß
Rene

Zeig mir mal, wo ich für Code::Blocks ein Subversion und Qt Plugin herbekomme....
 
Thrake said:
relei said:
Hi,

ich mag Code Blocks recht gern das gibt es für Windows, Mac und Linux.

Schönen Gruß
Rene

Zeig mir mal, wo ich für Code::Blocks ein Subversion und Qt Plugin herbekomme....

Man brauch doch nicht unbedingt ein Qt Plugin, oder? Man kann Qt Projekte ja auch so anlegen und SVN/Git gibt es auch als externes Tool. Ich muss aber zugeben, dass ich kein großer Fan von Code::Blocks bin. Irgendwie wurde ich damit noch nie warm. Ich habe aber eh noch andere Vorstellungen an eine IDE. Die IDE muss neben C++ auch noch JavaScript, HTML, CSS, PHP, Phyton unterstützen. In der heutigen Zeit kommt man da eh nicht mehr drum rum.
 
JohnDavidson said:
Man brauch doch nicht unbedingt ein Qt Plugin, oder? Man kann Qt Projekte ja auch so anlegen und SVN/Git gibt es auch als externes Tool. Ich muss aber zugeben, dass ich kein großer Fan von Code::Blocks bin. Irgendwie wurde ich damit noch nie warm. Ich habe aber eh noch andere Vorstellungen an eine IDE. Die IDE muss neben C++ auch noch JavaScript, HTML, CSS, PHP, Phyton unterstützen. In der heutigen Zeit kommt man da eh nicht mehr drum rum.

Doch, weil du ein paar Probleme mit der erstellung von SIGNALS und SLOTS bekommst, denn für die braucht man die sogenannten moc-Dateien und die erstellt Code::Blocks nicht automatisch.
Subversion genauso: Ich nutze nen Subversion Plugin für Eclipse und ist natürlich total praktisch. Mergen ist da auch kein Problem mehr und commiten und so ein zeug muss ich nichtmehr per Console machen. Das hat mich an Code::Blocks genervt, weil ich kein Subversion Plugin finden konnte. Würde gerne auch mal versuchen, damit zu programmieren, aber mei...
 
Thrake said:
Zeig mir mal, wo ich für Code::Blocks ein Subversion und Qt Plugin herbekomme....

Was ist z.B. mit http://sourceforge.net/projects/tortoisesvn/ ? Hab ich damals mal genommen...
 
ButterBrot said:
Thrake said:
Zeig mir mal, wo ich für Code::Blocks ein Subversion und Qt Plugin herbekomme....

Was ist z.B. mit http://sourceforge.net/projects/tortoisesvn/ ? Hab ich damals mal genommen...

Bitte lerne richtig lesen... danke.
Für Eclipse gibt es z.b. Subclipse für Subversion... sowas meine ich.
 
Hi,

also ein Subversion Plugin soll es wohl für Code::Blocks geben und ich kann auch ein QT Projekt anlegen, jedoch habe ich noch nichts mit QT gemacht (außer zu meiner Zauruszeit :)).

Schönen Gruß
Rene
 
Thrake said:
Bitte lerne richtig lesen... danke.
Für Eclipse gibt es z.b. Subclipse für Subversion... sowas meine ich.

Erstmal redest du total am Thema vorbei und wenn ich mich auf die Problematik SVN+Code::Blocks beziehe, willst du unbedingt ein plugin :juhu: Wenn CF-Freakx mal zu Code::Blocks und SVN kommt würde er er sehr wohl mit Code::Blocks arbeiten können. Das war nur EIN Beispiel.

Code::Blocks ist gerade für Linuxneulinge gut. Er lässt sich einfacher bedienen als die "überfüllten" IDEs die es sonst so gibt. Und da CF-Freakx gerne unter Linux arbeitet finde ich Code::Blocks eine gute Wahl. Und weil SDL auch bald ein Thema sein wird.
 
Ich benutze auch Codeblocks, viele Sachen nerven dabei allerdings auch und es gibt einige nervige Bugs. Aber was besseres hab ich bis jetzt noch nicht gefunden und wenn man sich erstmal drann gewöhnt hat ist es schwer los zu kommen ;).
Thrake said:
ButterBrot said:
Thrake said:
Zeig mir mal, wo ich für Code::Blocks ein Subversion und Qt Plugin herbekomme....

Was ist z.B. mit http://sourceforge.net/projects/tortoisesvn/ ? Hab ich damals mal genommen...

Bitte lerne richtig lesen... danke.
Für Eclipse gibt es z.b. Subclipse für Subversion... sowas meine ich.
Aber was ist der Sinn so eines Plugins? Tortoise macht das ganze viel besser und IDE unabhängig. Da musst auch nichts auf der Konsole machen.

Btw: Ich würde übrigens eher Git als SVN nehmen.
 
Jan-Nik said:
Aber was ist der Sinn so eines Plugins? Tortoise macht das ganze viel besser und IDE unabhängig. Da musst auch nichts auf der Konsole machen.

Btw: Ich würde übrigens eher Git als SVN nehmen.

So nen Plugin kann halt viel komfortabler sein. Tortoise ist aber tatsächlich ein sehr gutes Programm für SVN ;) Zum Thema SVN / GIT. Manchmal ist man halt an SVN gebunden, weil es viel verbreiteter ist, und der Chefe es vorschreibt ;)
 
Back
Top