C++ Projektvorschläge (für Anfänger)?
Hallo gutefrage.net-Community!
Ich lerne momentan C++ und frage mich an welchen Projekten ich arbeiten könnte um mein Wissen anzuwenden.
Mein Wissen:
- if , else, for, while, switch, iostream, Pointer, Arrays, Funktionen, Klassen
Also Basics.
Zudem frage ich mich ob C++ eigentlich eine gute Wahl war.
Ich habe vor Videospiele zu programmieren und, dass das Programm schnell ausgeführt wird und wenig Rechenleistung braucht, ist mir sehr wichtig. Wäre C oder Rust besser gewesen? (Ich könnte jetzt wo ich noch nicht sonderlich viel in C++ gelernt habe noch wechseln).
C++ ist nicht meine erste Programmiersprache.
Danke im Vorraus und bitte alle 3 fett gedruckten Fragen beantworten nicht nur eine.
Welche Plattform?
Ich programmiere auf Windows mit C++ in VS Code mit dem GCC Compiler.
2 Antworten
"Pixie633Fragestellervor 6 Minuten
Ich programmiere auf Windows mit C++ in VS Code mit dem GCC Compiler."
C++ ist eine gute Wahl, sie kann alles, was man braucht.
Wäre C oder Rust besser gewesen?Nein, aber auch geeignet, und ähnlich schnell, teils schneller.
https://learn.microsoft.com/de-de/windows/uwp/gaming/e2e
Oder/und such dir Bücher, Tutorial wie:"C++ für Spieleprogrammierer: Für Windows"
https://www.youtube.com/watch?v=xF71szo9tcI
https://www.hanser-fachbuch.de/fachbuch/artikel/9783446446441
https://download.e-bookshelf.de/download/0003/9956/00/L-G-0003995600-0002509721.pdf
https://mediendb.hjr-verlag.de/vmi-buch/texte/leseprobe/9783826659539_leseprobe_02.pdf
Es gibt auch -- meist ältere -- PDFs kostenlos.
Ich denke C++ ist eine gute Wahl. Es ist extrem weit verbreitet und so ziemlich die Grundlage von sehr vielen anderen Programmiersprachen. Außerdem in der Videospiel Branche sehr gefragt da C++ schnell ist und man sehr genau und hardwarenahe arbeiten kann.
Ich persönlich mag C mehr als Rust aber das ist meine eigene Meinung dazu :D, C solltest du dir auch etwas anschauen wenn du Hardware programmieren willst wie z.B.: Mikrocontroller, Treiber,...
Projekt Ideen zum lernen der Sprache gibt es viele, ich persönlich hatte damals mit einem Snake-Spiel angefangen. Das umfasst sehr viel was man gebrauchen kann. Ansonsten kann ich noch folgende Ideen geben:
- Snake (wie erwähnt)
- Andere einfache Spiele wie Minesweeper, Tetris
- Password Manager (mit Verschlüsselung und Files)
- 2D Data Plotter (z.B.: Daten wie Geschwindigkeit über Zeitachse auf einem 2D Diagramm in der Konsole plotten)
- Algorithmen implementieren wie Dijkstra, PriorityQueue, Binary Trees (zum üben für rekursive operationen)
Wenn du dein Wissen allgemein erweitern willst dann würde ich auch empfehlen Grafiklibraries anzuschauen wie SDL, OpenGL
Falls es dich interessiert ebenfalls mithilfe der socket.h ein Client-Server Programm
Immer hilfreich sind Tools wie CMake und Git. Also wenn du dich im Bereich Projektmanagement und Versionsverwaltung an Wissen bereichern möchtest wären das auch gute Tipps :)
"Momentan hapert es daran ein simples Fenster zu erstellen."
OpenGL ist eine Bibliothek für hochwertige 3D-Grafik. Für die Programmierung von Fenstern, die mit Pushbuttons, Schiebereglern, Auswahllisten, Drop-down-Boxen, Textfeldern und Grafikwidgets ausgestattet sind, werden andere Bibliotheken verwendet.
Wenn C++ mit Linux verwendet wird (dafür ist ein Raspberry Pi völlig ausreichend!), ist Gtk-3 die übliche Bibliothek. Gtk-3 für C++ wird in den meisten Linux-Distributionen mit dem Paket libgtkmm-3.0-dev bereitgestellt.
Für Microsoft Windows würde man wohl noch stets die Microsoft Foundation Classes (MFC) verwenden, die zwar schon 25 Jahre alt sind, aber noch in Gebrauch stehen.
Interessant ist auch das Framework wxWidgets, das neuer als MFC ist und überdies sowohl für Windows als auch für Linux zur Verfügung steht.
Jede dieser Bibliotheken verlangt einen hohen Einarbeitungsaufwand und der erste kleine Erfolg ist nach meiner Erfahrung der schwerste. Zu bewältigen ist es aber und zwar auch im Selbststuidum. Du musst eben nur mit sehr einfachen Beispielen anfangen; z.B. mit einem Fenster, in dem ein PushButton und ein Label nebeneinander platziert sind. Das Label soll anzeigen, wie oft der Pushbutton angeklickt wurde.Einfacher geht es kaum, aber für den Anfänger ist selbst das schwer.
Mit Schiebereglern und Grafikfeldern lässt sich auch viel machen: Ein Schieberegler kann die Breite eines Strichs einstellen oder auch den Rotationswinkel eines Polygons.
Hier einTutorial für xwWidgets: https://zetcode.com/gui/wxwidgets/ und hier Tutorials für MFC: https://www.henkessoft.de/C++/MFC/MFC%20Tutorials.htm und https://www.tutorialspoint.com/mfc/index.htm. Ein Tutorial für Gtkmm (asllerdings Version 2.4) findest du hier: https://www.c-plusplus.net/forum/topic/126450/gtkmm-tutorial-teil-1
Momentan hapert es daran ein simples Fenster zu erstellen. Geht das mit OpenGL? Sollte ich es mir selbst programmieren?