Wie geht es weiter in C++

madonion

Grünschnabel
Guten Abend,

nun da ich in moment nicht weiß wie ich weiter weiter komme, muss ich euch fragen.:confused:
Also ich bin seit ca 3 Monaten in der Sprache C++ eingestiegen und "denke" das ich die Grundkenntnisse besitze, für einfache Programme/2D spiele zu verstehen und coden.

Mein wissen, wo ich Grundkenntnisse beherrsche:
-funktionen
-schleifen
-abweisungen
-arrays
-pointer
-klassen

Aber wie mache ich weiter?Ich hab keine richtige Idee.
Einen Kühlschrank hatte ich zur Übung der OP-Programmierung erstellt(Konsolenanwendung).
Wie kann ich denn das erste 2D Spiel / leichtes Programm coden, oder was fehlt mir noch an Kenntnissen

Ich kann nicht genau erklären wie hoch oder niedrig mein Wissenstand zu C++ ist.:p

Wie habt ihr dies Bewältigt, hattet ihr eigene Projekte oder wie habt ihr euch aus diesen Grundkenntnissen weiterentwickelt
Ich hoffe ihr könnt mir helfen.:)

MfG onion
 
Was die Spieleprogrammierung angeht empfehl ich dir mal nach "OpenGL C++" und "DirectX C++" zu googeln.
Microsoft bietet z.B. das DirectX-SDK direkt für's Visual Studio an.
Und Tutorials solltest du dabei auch zu Hauf finden.

Aber du kannst auch einfach mal ein kleines Consolen-Spiel, wie Space-Invaders oder Autorennen schreiben.
Öhm... oder du arbeitest dich in die MFC ein und baust ein Spiel mit Windows-Fenster-Komponenten und eigenen Grafiken. (WIndows Forms wäre auch ne Option)

Also du siehst Möglichkeiten gibt's genug und Google hat dazu auch sehr viele Antworten
Mfg Pain-maker

BTW: Für welche Plattform willst du überhaupt entwickeln?

Da fällt mir noch ein:
HL bzw. HL2-Mods wären auch eine Möglichkeit. Da kannst du dich austoben und schon mal erste Erfahrungen sammeln.
(Oder du nimmst irgendein anderes Spiele-SDK)
 
Zuletzt bearbeitet:
Was die Spieleprogrammierung angeht empfehl ich dir mal nach "OpenGL C++" und "DirectX C++" zu googeln.
Microsoft bietet z.B. das DirectX-SDK direkt für's Visual Studio an.
Und Tutorials solltest du dabei auch zu Hauf finden.

Aber du kannst auch einfach mal ein kleines Consolen-Spiel, wie Space-Invaders oder Autorennen schreiben.
Öhm... oder du arbeitest dich in die MFC ein und baust ein Spiel mit Windows-Fenster-Komponenten und eigenen Grafiken. (WIndows Forms wäre auch ne Option)

Also du siehst Möglichkeiten gibt's genug und Google hat dazu auch sehr viele Antworten
Mfg Pain-maker

BTW: Für welche Plattform willst du überhaupt entwickeln?

Da fällt mir noch ein:
HL bzw. HL2-Mods wären auch eine Möglichkeit. Da kannst du dich austoben und schon mal erste Erfahrungen sammeln.
(Oder du nimmst irgendein anderes Spiele-SDK)

Danke für die Antwort!:)

Nun gut, Spaceinvaders hatte ich schon probiert, aber wie gehe ich da genau vor
Also müsste ich dann nur 3 Klassen erstellen
Es kann jetzt auch total falsch sein, aber ich hatte es aus meiner sicht so geschrieben.
Vielleicht könnte jemand mal drüber schauen und sagen ob ich auch das Ziel richtig ansteuere.

Code:
//gegner klasse
#include <string>
#include <iostream>


using namespace std;

class gegner
{
private:
	int xPos;
	int yPos;
	int healthpoint;
public:
	gegner()
		{
			xPos = 0;
			yPos = 0;
			healthpoint = 0;
		}

	void setzewerte(int x1Pos, int y1Pos, int healthpoint1)
		{
			xPos = x1Pos;
			yPos = y1Pos;
			healthpoint = healthpoint1;
		}
			int get_xPos() {return(xPos);}
			int get_yPos() {return(yPos);}
	};

//spielerklasse
class spieler
{
private:
	int xPos;
	int yPos;
	int highscore;
	int level;
	string spielername;
public:
		spieler()
	{
	int yPos = 0;
	int xPos = 0;
	int highscore = 0;
	string spielername ="Player1";
	int level = 0;
	}


	void setzewerte(int highscore1, int level1, int x1Pos, int y1Pos, string spielername1)
	{
		highscore = highscore1;
		level = level1;
		xPos = x1Pos;
		yPos = y1Pos;
		spielername = spielername1;
	}
	
		int get_highscore()		{return(highscore);}
		int get_level()			{return(level);}
		int get_xPos()				{return(xPos);}
		int get_yPos()				{return(yPos);}
		string get_spielername()	{return(spielername);}
	
	};
	

//spielfeld

class spielfeld
{
private:
	int xPos;
	int yPos;
public:
	spielfeld()
	{
		int xPos = 0;
		int yPos = 0;
	}

	void setzewerte(int x1Pos, int y1Pos)
	{
		xPos = x1Pos;
		yPos = y1Pos;
	}

	int get_xPos() {return(xPos);}
	int get_yPos() {return(yPos);}
};
 
Aber wie mache ich weiter?Ich hab keine richtige Idee.
Nun da gibt es verschiedenste Sachen. Du kannst dich ersteinmal mit GUI-Programmierung (Qt, MFC, ...) beschäftigen. Bei umfangreicheren Spielen sind mehr Kenntnisse erforderlich, allerdings schadet es ja auch nicht, sich hohe Ziele zu stecken, soweit man nicht erwartet, die innerhalb kürzester Zeit zu erreichen. Allerdings sollte ein kleines 2D oder auch einfaches 3D Spiel auch nicht zu schwierig sein, überall ist natürlich Motivation vorausgesetzt. Ich selbst habe mir C++ selbst beigebracht (hat auch lange gedauert), allerdings hatte ich nie das Problem, dass ich nicht wusste, was ich als nächstes machen soll, sondern eher umgekehrt...

Bei allem ist wichtig, einen gewissen Wissensstand zu haben, d. h. nicht ein 300-Seiten Büchlein, sondern eines der Standardwerke sind immer eine gute Idee.

Gruß,

badday
 
Mit der 3D programmierung, was könnt ihr mir vorschlagen?
Was ich kenne:
-Qt
-opengl
-direkt x
-und was ist mit web-gl

Könnt ihr mir vielleicht ungefähr sagen was da empfehlenswert ist / einsteigerfreundlicher :p.

Ich weiß das opengl für mehrere Plattformen nutzbar ist windows, linux usw.
Webgl ist glaube ich auch für mehrere Plattformen möglich , siehe Quakelive.

MfG onion

Danke für deine Antwort.
 
Mit der 3D programmierung, was könnt ihr mir vorschlagen?
Was ich kenne:
-Qt
-opengl
-direkt x
-und was ist mit web-gl

Könnt ihr mir vielleicht ungefähr sagen was da empfehlenswert ist / einsteigerfreundlicher :p.

Ich weiß das opengl für mehrere Plattformen nutzbar ist windows, linux usw.
Webgl ist glaube ich auch für mehrere Plattformen möglich , siehe Quakelive.

MfG onion

Danke für deine Antwort.

QuakeLive benutzt kein WebGL sondern ist ein ganz normales Programm/Bibliotek, welche(s) du vorher über den Browser (ich glaube als Plugin tarnt es sich, oder?) herunterlädst... Das hat nichts mit WebGL zu tun.

Ich würde dire restmal von 3D komplett abraten und wenn ich deine Klassen da oben sehe, dann solltest du erstmal bei Konsolen Applikationen bleiben. Implementier doch mal ein paar bekannte Algorithmen, das hilft dir die Denkweise zu lernen an solche Programmierprobleme ranzugehen.
 
Hi,
wenns Spiele sein sollen, versuch doch einmal Reversi(5 gewinnt), Schiffe versenken oder ähnliche "kleinen" Spiele zu schreiben.
Qt ist meiner Meinung nicht unbedingt dazu gedacht Spiele zu machen, sondern eher um GUIs zu entwickeln. Jedoch eignet es sich definitiv dafür um Spiele, die du für die Konsole entwickelt hast auf einem anderen Niveau darzustellen. Tetris und Billiard sind dort noch recht einfach möglich.
 
Wie es weiter geht in C++ ?

Diese Frage lässt sich zweiteilen. Du hast quasi 2 Möglichkeiten in die du laufen kannst, sobald grundlegendes Wissen vorhanden ist: Von der Hardware weg oder zu ihr hin (Dazu unten mehr).

Ich glaube - wenn ich mir deine Klassen oben anschaue -, dass du noch nichtmals das "Konzept C++" an der Oberfläche gekratzt hast.
Wenn ich mir deinen Programmierstil anschaue, würde ich persönlich vermuten, dass du gewohnter Java/.NET Programmierer bist.

Des weiteren scheint es mir, dass dir Unterschiede zwischen z.B. STL Strings (welche du in deinem Codebeispiel genommen hast) und c-style Strings nicht bewusst sind.

Und noch so vieles mehr.
Ich habe natürlich keineswegs vor dich in irgendeiner Weise durch den Dreck zu ziehen, ich will einfach ausdrücken, dass bevor man sich allgemein an Spieleprogrammierung heranwagt man von Algorithmen und Programmkern-Architekturen wörtlich träumen sollte, und auch noch mehr Wissen mit an den Start bringen sollte, worunter besonders das "Denken in C++" fällt (wenn du nicht verstehst, was ich damit meine, ist das der beste Anhaltspunkt dafür, dass du noch nicht bereit bist). Ich schließe mich also OnlyFoo an.

Nun nach all der Kritik will ich dir nun auch ein paar Türen der C++ Welt zeigen, und dabei nicht an Spieleprogrammierung anlehnen, sondern auf den von mir oben geschriebenen Satz über die Hardware ... Du erweckst nämlich den Eindruck zu glauben, dass Spiele das komplizierteste an C++ seien und auch jeder Pfad dort hin führe.

Dem ist nicht so! Es gibt so viele interessante Sachen in C++, die rein überhaupt nichts mit Spiele am Hut haben, zum Beispiel:
  • Libraries
  • (inline)Assembler
    • In diesem Forum darf ich gewisse Unterpunkte zu Assembler aufgrund böser Absichten gar nicht auflisten, oder ? :suspekt: Mist das klaut mir ne Menge Listen-punkte *grins*
    • Protektoren (Crack-Schutz) *puh wieder geradegebogen ^.^*
  • Betriebsysteme
  • Algorithmen
  • Und noch viel mehr, denke nur mal an Programme, die du täglich selbst benutzt (außer Spiele).


Wenn du trotzdem unbedingt Spiele programmieren möchtest, ist das natürlich deine Entscheidung, doch wirst du früher oder später kräftig auf die Nase fallen wenn du versuchst Sachen wie z.B. DirectX zu benutzen, ohne wirklich zu verstehen was passiert ;)
 
Du müsstest zwischen der Spieleprogrammierung und der Programmierung von Office-Programmen unterscheiden. Aber es gibt auch Sonderfälle:

Anbrix hat gesagt.:
:D
Naja, es kommt darauf, ob es eine kleine Spielerei sein soll oder eher eine ernste Sache.
Ich finde, dass Spiele zu programmieren schwieriger ist (Ansichtssache), vor allem, weil sich die "Spielewelt" schnell verändert und du somit dein Programm immer den Anforderungen der Spieler anpassen "musst".

Wenn du aber Office-Programme bzw. GUI's entwickeln willst, würde ich dir unbedingt eine GUI-Framework empfehlen (ich benutze der Zeit wxWidgets).
 
Zurück