C++ Projektvorschläge (für Anfänger)?

Tommentator  24.08.2023, 23:27

Welche Plattform?

Pixie633 
Fragesteller
 24.08.2023, 23:28

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.

Woher ich das weiß:Studium / Ausbildung – Dipl. Math., BOS, Elektronik/Elektriker, Lebenserfahrung

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 :)

Woher ich das weiß:eigene Erfahrung
Pixie633 
Fragesteller
 24.08.2023, 23:14

Momentan hapert es daran ein simples Fenster zu erstellen. Geht das mit OpenGL? Sollte ich es mir selbst programmieren?

0
byReaper  24.08.2023, 23:22
@Pixie633

Das geht mit OpenGL und SDL, ja. Leider sind Grafiklibraries recht kompliziert also da muss man sich erstmal gründlich einlesen und es braucht auch einiges mehr an Code um ansatzweise brauchbare Resultate zu erzielen.

0
BorisG2011  25.08.2023, 12:00
@Pixie633

"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

1