Grafische Spiele in C programmieren?

3 Antworten

Dazu würde ich den Qt-Creator empfehlen. Das ist eine komplette C und C++ Entwicklungsumgebung mit Editor, Debugger, Formdesigner und der plattformunabhängigen Qt-Bibliothek. Diese enthält Funktionen wie Netzwerk, Zugriff auf die Schnittstellen (z.B. USB, Bluetooth), grafische Oberflächen/Darstellung (Formdesigner), Multimediafunktionen und vieles mehr. Damit kann man Programme für Windows, Mac und Linux entwickeln ohne den Quellcode ändern zu müssen. Das ganze gibt es sowohl als kostenlose Open Source Lizenz oder kostenpflichtige propritäre Lizenz. Der Funktionsumfang ist bei beiden Lizenzen identisch.

Hier die benötigten Downloads:

für Windows:

für Mac:

Linux-Nutzer installieren die GCC Compiler und den Qt-Creator über die Paketverwaltung der Distribution. Diese Lizenz ist die Open Source Lizenz. Das Qt Installer Framework gibt es nicht für Linux, dort erzeugt man mit den Bordmitteln je nach Distribution deb oder rpm Programmpakete.

Dann verwendet man eine Gaming-Engine die plattformunabhängig ist. Die kann man dort auch einbinden. Zum Beispiel MonoGame: https://www.monogame.net/ Diese kann man dann auch in den C Code im Qt Creator einbinden. Dazu muss MoneGame in der Windows PATH Umgebungsvariable eingetragen sein. Bei Mac und Linux geht das automatisch.


regex9  24.11.2020, 01:17

MonoGame ist ein Spieleframework für C#. Seit wann wird die Entwicklung mit C unterstützt, ohne dafür Umwege (wie Platform Invocations) gehen zu müssen?

1

So die ganz harte Tour, außer Du nimmst DOS-Graphik, was aber dazu führt, dass Du entweder bei jedem Move das Bild neu zeichnen musst oder aber kräftig Assembler einbinden darfst, um auf dem Bildschirm frei rumlaufen zu dürfen.

Nimmst Du die Windows-Graphik, also kein Konsolenprogramm, sondern bist ein Frame-Owner, dann viel Spaß mit WIN32API und dem Korrespondierenden bei Linux.

C ist eigentlich weniger geeignet für so etwas, kann man machen, aber dann ist man richtig gut.

Diese Buch durchlesen

Rheinwerk Computing :: C von A bis Z (rheinwerk-verlag.de)

und dann sprechen wir nochmal ...

Woher ich das weiß:eigene Erfahrung – Hobby und teilweise beruflich

bluebird5  23.11.2020, 18:25
Diese Buch durchlesen
Rheinwerk Computing :: C von A bis Z (rheinwerk-verlag.de)
und dann sprechen wir nochmal ...

Lieber nicht, dieses Buch hat (in der Auflage, die da online) ist, einen extrem schlechten Ruf unter C-Programmierern, weil es ohne Ende fehlerbehaftet ist.

https://www.c-plusplus.net/forum/topic/272350/warnung-b%C3%BCcher-von-j%C3%BCrgen-wolf-zu-c-und-c-zum-lernen-ungeeignet-weil/14

https://www.amazon.de/gp/customer-reviews/R2ZZQZM0ZLLLHZ

Meiner Ansicht nach sollte man für die grafische Entwicklung eher Frameworks bzw. Libraries nehmen, und diese geben dann auch an, welches Tutorial man sich angucken sollte. Wobei man sich mMn. mit C das Leben nur unnötig schwer macht, dafür gibt es geeignetere Sprachen.

Die Frage liest sich aber auch so'n bisschen wie "Hallo, Ich möchte ein Mehrfamilienhaus bauen, weis aber nicht, wie ich anfangen soll".

0
DawXtreme2020 
Beitragsersteller
 23.11.2020, 17:54

wie funktioniert das mit der dos grafik?

0
nobytree2  23.11.2020, 17:59
@DawXtreme2020

DOS-Graphik einfach mit printf Zeichen auf der Konsole ausspucken. Man kommt nur nicht wieder hoch, außer Du nimmst in C einen Inline-Assembler bzw. so was hier asm_{} oder ähnlich, dann kannst Du maschinennah den Bildschirm adressieren, also direkt via Port und Adresse frei auf dem Bildschirm arbeiten. Das ist aber schon recht anspruchsvoll, dafür musst Du Assembler können.

0

Zum einen solltest du natürlich mit C vertraut sein und eine passende Entwicklungsumgebung eingerichtet haben. Des Weiteren solltest du ein Game Concept definieren (lies dazu hier), damit du genau planen kannst, was du noch so brauchst. Unüberlegt in ein Projekt zu stürzen, wäre nicht gerade das, was ich empfehlen würde.

Um deine 2D-Grafiken zu rendern, benötigst du ein Zeichentool / eine Schnittstelle zu Bibliotheken, die dies für dich übernehmen. Mit C könntest du da direkt auf Vulkan, OpenGL, o.ä. zugreifen (dazu später), doch empfehlen würde ich eher die Nutzung von Bibliotheken, die deutlich abstrahieren und vielleicht auch noch weitere Funktionen (z.B. eine Sound API) für eine einfache Handhabung bereits implementiert haben. In meiner Antwort von hier habe ich schon einmal ein paar solcher Tools aufgezählt, die sich da gut eignen würden.

Ansonsten findest du hier noch eine Tutorialserie von jemanden, der sich mit Hilfe der Raylib eine kleine Engine geschrieben hat. Über diese Serie kannst du ein wenig über eine mögliche Vorgehensweise und Grundarchitektur für kleine Spiele erfahren.

Wenn du wiederum sehr daran interessiert bist, auf tieferen Ebenen herumzuwerkeln, könntest du dir ebenso OpenGL-Tutorials suchen (schau beispielsweise direkt ins OpenGL-Wiki; ein Manual für Vulkan findest du hingegen hier), um eine eigene Rendering Engine zu entwickeln. Allerdings verlangt dies auch einigen Implementationsaufwand von deiner Seite (du entfernst dich also auch etwas weiter von deinem Endziel) und es kann schnell kompliziert werden.

Zuletzt noch eine kleine Anregung für später: Wie du an meiner (verlinkten) Tool-Liste gemerkt haben dürftest, sind mehrere Bibliotheken (SDL, SFML, ...) auch oft auf die Entwicklung mit C++ ausgerichtet. C++ liefert zwar nochmals neue Komplexität, bietet jedoch auch den Vorteil, dass Konzepte der objektorientierten Programmierung sprachlich fest integriert sind. Diese können die Entwicklung von komplexeren Anwendungen vereinfachen.