Frage zur Programmierung mit C++



  • Hey Leute,

    ich wollte jetzt mal ein wenig in die Spieleprogrammierung herein steigen.
    Das Problem ist das ich nicht weiß, wie man das Graphisch hin bekommt!

    Wenn ich mir Tutorials auf youtube o.ä. angucke, kommen zum Schluss cmd anwendungen bei raus.

    Bsp.:
    http://www.youtube.com/watch?v=D4IqwDgvS_Q

    Aber ich möchte erstmal ungefähr soetwas:
    http://www.youtube.com/watch?v=D4IqwDgvS_Q

    Ich hab schon in mehreren Foren nach Spieleprogrammierung gefragt und die meisten haben mich auf c++ hingewiesen.

    Ich denke ihr habt davon Ahnung und könnt mir ein paar Tipps/Tutorials geben!

    Danke im vorraus
    Kevinb



  • 1. C++ lernen (mit Buch)
    2. GrafikAPI lernen (SFML, OpenGL, DirectX, ORGE, ...)
    3. Spiele programmieren



  • Der Typ in den Videos hat selber keinen Plan. Der macht trial and error 😃

    👎



  • Wenn du Ovid lesen willst, musst du mit a- und o-Deklination anfangen. Wenn du ein 4-Sterne-Menü kochen willst, musst du mit Kartoffeln-kochen anfangen. Und wenn du eine C++-GUI-Anwendung schreiben willst, musst du mit cmd-Anwendungen anfangen.

    Wird sich leider (?) nicht vermeiden lassen!



  • Und wenn man schnell mal C++ lernt um möglichst schnell ein Spiel zu programmieren, ist man sowieso falsch.



  • Mir ist es ja nicht wichtig es so schnell wie möglich zu lernen.
    Ich finde blos, dass man bei cdm nicht allzu große Erfole sehen kann, bis auf Zahlen und Texte und das lässt einen nach einigen Monaten lustlos werden.
    Denke es ist durchhaltevermögen gefragt.
    Hoffe es ist der richtige weg



  • Meinst du hier wirklich "Erfolge *sehen*", oder vielleicht eher "Erfolge *anderen zeigen*", die von einer schnöden cmd-Anwendung wahrscheinlich wenig beeindruckt sind?

    (Beachte: Das ist keine Frage, auf die *ich* eine Antwort möchte, sondern eine Frage, die du dir *selbst* stellen sollst. Ich kenne das Gefühl nämlich aus eigener Erfahrung.)



  • Kevinb schrieb:

    Mir ist es ja nicht wichtig es so schnell wie möglich zu lernen.
    Ich finde blos, dass man bei cdm nicht allzu große Erfole sehen kann, bis auf Zahlen und Texte und das lässt einen nach einigen Monaten lustlos werden.
    Denke es ist durchhaltevermögen gefragt.
    Hoffe es ist der richtige weg

    Man muss eben klein anfangen. Und auch mit der Konsole kann man sehr viel Spaß haben. Und wenn man es nicht schafft eine Konsolenanwendung zu schreiben, dann wird man bei Spielen oder Dialog-Anwendungen erst recht scheitern. Gewisse Grundlagen muss man sich eben einfach aneignen.

    Und Durchhaltevermögen braucht man hier natürlich besonders viel. Aber über die Zeit wird man merken, das man immer besser wird und man immer mehr umsetzen kann.



  • Kevinb schrieb:

    Mir ist es ja nicht wichtig es so schnell wie möglich zu lernen.
    Ich finde blos, dass man bei cdm nicht allzu große Erfole sehen kann, bis auf Zahlen und Texte und das lässt einen nach einigen Monaten lustlos werden.
    Denke es ist durchhaltevermögen gefragt.
    Hoffe es ist der richtige weg

    Du meinst sicherlich die cmd!? 😉
    Ich finde das hat nicht sehr viel mit Durchhaltevermögen zu tun. Es kann sehr wohl auch sehr viel Spaß machen Sachen für die Konsole zu programmieren. Dabei kann man sich nämlich auf das wesentliche konzentrieren, anstatt gleich die ganze Konzentration dem GUI-Schnick-Schnack zu widmen. Man kann auch anspruchsvolle Programme für die Konsole entwickeln. Ich selber mache auch nicht sehr viel mit GUI, da es mir nicht so viel Spaß macht so viel Zeit in eine GUI zu investieren und da ich finde, dass ich so auch mehr lerne.

    Lg freeG





  • Das man anfangs immer zuerst mit der Console arbeiten muss ist ein bißchen Mainstreamdenken. Man kann auch C++ gleich mit GUI lernen. Solange man nur drawLine, drawPixel, drawPolygon und string out benützt, kann man sich wunderbar weiterhin auf C++ konzentrieren. Kommt auf das gleiche hinaus, solange man nicht unbedingt komplizierte Funktionen einer Bibliothek beimischt.

    Nur fehlt ein gutes Starttutorial dazu das so ausgelegt ist, dass man mit GUI bzw mit einer Grafikbibliothek sicher C++ lernen anfangen kann. Ich hab SDL genommen, später auf Qt umgestiegen und von da aus weiter C++ gelernt, als ich mit Zeigern teilweise zurechtkam. Ich bin der Ansicht dass Klassenprogrammierung, new/delete und Threads in der Konsole wenig Sinn macht.



  • Um C++ zu lernen eignet sich die SDL schon mal absolut gar nicht. Schließlich handelt es sich um eine C-Library. Für C++ wäre hier SFML besser geeignet. Aber wie soll ein Anfänger mit einer solchen Library klar kommen, wenn ihm die Grundlagen fehlen? Wie man es auch dreht und wendet. Es ist einfach keine gute Idee direkt so einzusteigen. Mag sein, das man damit scheinbar erfolgreich ist, aber man bringt sich auf diesen Weg viele falsche Dinge bei, da man die Hintergrundprozesse einfach nicht versteht. Auch für den eigenen Programmierstil und die Lösung diverser Probleme ist es sinnvoller, wenn man zunächst klein anfängt und sich ausschließlich darauf konzentrieren muss. Bei einer Anwendung mit GUI gibt es wohlmöglich unterschiedliche Threads und gewisse Aktionen lassen sich nur im Hauptthread ausführen, etc. Dann muss man Variablen noch von Dialog zu Dialog weiterreichen bzw. Erben, um gewisse Dinge zu erreichen. Undenkbar für einen Anfänger!



  • xBlackKnightx schrieb:

    Das man anfangs immer zuerst mit der Console arbeiten muss ist ein bißchen Mainstreamdenken. Man kann auch C++ gleich mit GUI lernen.

    Klar, aus Prinzip rebellisch sein und gegen den Strom schwimmen ist schliesslich auch cool. Aber ab und zu schadet es nicht, sich was sagen zu lassen 😉

    Hör auf ghjghj, er weiss wovon er redet.



  • xBlackKnightx schrieb:

    Man kann auch C++ gleich mit GUI lernen.

    Was hast du geraucht?



  • Versucht nicht mir das Recht meiner Intuition zu nehmen.

    Ich habe soeben ein Buch von Stroustrup gekauft und er hat es erkannt: Die GUI und Grafikausgabe mit Zeichnen von Linien und Punkten etc werden ZUERST behandelt bevor er weiter mit new, delete, this-funktion, Vektoren und Kopierkonstruktoren etc führt.

    http://books.google.com/books?id=MeezQYeenDkC&lpg=PA265&dq=Einführen in die Programmierung C%2B%2B&pg=PA420#v=onepage&q&f=false

    S. 420

    Qt ist zwar 'ne Nummer zu groß, aber damals wusste ich nix von anderen Möglichkeiten. Habe auch nicht gesagt dass man so anfangen soll. Jedoch mit einfacheren GUI könnte man Console ersetzen bzw erweitern. Indem Fall von Stroustrup hätten #include "Simple_window.h" und #include "Graph.h" genügt. Ob das mit Zeitschleife funktioniert weiss ich nicht. Aber man kann schon einen perfekten GUI für C++ Anfänger schreiben. Wieso sollte man mit einer Bibliothek nicht klarkommen? io_stream ist auch ne Bibliothek.
    Statt

    cout << "quak" << int_x;
    

    einfach

    Text t(Point(200,200), "quak" + int_x);
    

    oder so



  • xBlackKnightx schrieb:

    Ich bin der Ansicht dass Klassenprogrammierung, new/delete und Threads in der Konsole wenig Sinn macht.

    Das ist ja mal ne coole Ansicht... obwohl ich sie absolut nicht nachvollziehen kann. Was hat das mit der Art der Ein-/Ausgabe zu tun?
    Außerdem bin ich der Ansicht, dass new/delete und Threads keine sinnvolle Themen für einen C++ Einsteiger sind.
    Eigentlich ist es egal in welcher Umgebung man lernt, solange man sich in dieser auf das wesentliche konzentrieren kann. Auf die Konsole trifft das sicherlich zu. Für irgendein GUI Framework kenn ich zumindest kein gutes Einsteigerbuch oder -tutorial, i.d.R. sind diese sogar eher der absolute Schrott. Ich habe übrigens auch irgendwann mal mit so einem Müllbuch angefangen: "Klicken Sie auf 'Klassenassistent' um eine neue Klasse hinzuzufügen". Alles brav nachklickern und abtippern, aber keinen Plan was man da eigentlich macht.



  • Ich bin der Ansicht dass Klassenprogrammierung, new/delete und Threads in der Konsole wenig Sinn macht.

    Wie schön.
    Ich programmiere jetzt schon einige Zeit C++ und alle meine Programme sind rein konsolenbasiert, weil ich absolut kein Interesse habe, an GUIs zu arbeiten.



  • wenn man einen Server programmieren will...

    new und delete kommen später dran. Fängt man aber sobald damit an, ist es von Vorteil, wenn man schon eine Grafikausgabe hat. Das Ganze in einer Console herumexperimentieren lässt doch etwas lustlos werden. Möchte man mit einer Taste beliebige viele Objekte hinzufügen und rumschwirren lassen, geht das mit "new" ganz gut. In der Console müsste man abfragen welche Objekte noch zur Laufzeit vorhanden sind oder so ähnlich. Jedenfalls zu steril für die Mächtigkeit von "new" und um sie besser zu verstehen.

    Dass es keine guten C++ Einsteigerbücher mit GUI gibt, habe ich ja oben auch geschrieben. (Starttutorial) Aber es liegt nicht daran dass es nicht möglich ist, sondern dass sich drum keiner bemüht hat.


  • Mod

    Du hast komische Vorstellungen von Konsolen.

    Auch meine Anwendungen sind allesamt Konsolenanwendungen, sind keine Server, machen aber trotzdem allerlei sehr mächtiges Zeug. Und ich brauche sogar manchmal new und delete (wenn auch sehr selten). In der Regel auch voll objektorientiert und mit allen anderen Schikanen des Softwaredesigns die ich für die jeweilige Projektgröße für angebracht halte.

    Ich sehe überhaupt nicht, wie du den Zusammenhang zwischen Programmlogik, Design und Form der Ausgabe konstruieren willst.



  • Das kann ich nachvollziehen:

    Das Ganze in einer Console herumexperimentieren lässt doch etwas lustlos werden.

    Allerdings habe ich zuerst doch lieber eine Konsole, damit ich nicht von unwichtigen Sachen, wie Grafik abgelenkt werde, wenn ich einen neue Sprache lerne. GUI führt gleich zu mehr Aufwand bei der Installation läuft auch nicht unbedingt gleich von Anfang an. Aber das sind Sachen, womit sich ein Anfänger erst rumschlagen sollte, wenn er die Sprache mehr oder minder beherrscht.
    GUI wird ja erst interessant, wenn man einmal Buttons und das Event Handling hat. Dass das nichts für ein Anfänger ist, der noch nie programmiert hat ist denke ich klar. Und wo der Mehrwert einer schnöden Textausgabe im Vergleich in einem "GUI-Fenster" zu der Ausgabe in die Konsole sein soll weiss ich auch nicht "std::cout <<" ist ja nichts weiteres, als das:

    Text t(Point(0,0), "quak" + int_x);
    

    Einfach in standardisiertes C++ verpackt.. (das +int_x macht btw. nicht das, was du denkst.. ich hoffe das ist klar..).

    aber das hier verstehe ich nicht:

    xBlackKnightx schrieb:

    Möchte man mit einer Taste beliebige viele Objekte hinzufügen und rumschwirren lassen, geht das mit "new" ganz gut. In der Console müsste man abfragen welche Objekte noch zur Laufzeit vorhanden sind oder so ähnlich. Jedenfalls zu steril für die Mächtigkeit von "new" und um sie besser zu verstehen.

    🙄

    Ich verstehe nicht was die Diskussion Konsole<->GUI mit new zu tun hat.. 😕


Anmelden zum Antworten