[c++, DirectX] Erstes Spiel, kontrollieren

N

nummer_00

Hi,

ich möche gleich sagen bin noch nicht solange beim programmieren (habe bis jetzt ein buch gelesen und bischen internetrecherge gemacht)

habe jetzt mein erstes Spiel fertig, jedoch glaube ich das dies momentan noch nicht optimal ist.

Grafik und Gamplay sind mir nicht wirklich wichtig wollte nur das angelesene wissen anwenden.

wen ein erfahrener programmierer villicht lust und zeit hat sich mal den Code/das Programm anzuschauen und grobe programmier fehler raussuchen könnte so wie vielleicht verbesserungs vorschläge machen könnte wäre ich sehr verbunden.

wie gesagt nur das coding intressiert mich nicht grafik sound oder gamplay :) das weis ich das dies net unbedingt das beste ist.

am anfang bin ich sehr buch nah geblieben, leider bin ich dann ziemlich schnell im programmier chaos gelandet.

kommentiert habe ich dies leider nicht während ich am coden war habe aber versucht mindestens grob zu erklären was ich versucht habe.

so jetzt aber nicht zu lange jetzt schnell programm

http://rapidshare.com/files/281943214/1Versuch.zip

Die Zip-Datei ist 200kb groß
enthält den quell code
so wie grafik, sounds, und die ausführbare exe
außerdem noch 2 kleine readme datein


mit freundlichen grüßen nummer_001


kontakt (ausser übers forum): nummer_001@web.de oder alexanderkifft@yahoo.de
 
Hi,

werde mir das mal angucken,

aber da ich immoment nicht so viel Zeit hab könnte es Sonntag bis Montag werden.

Mich würde außerdem noch Interessieren welches Buch du hattest?

MfG
Anfänger
 
danke für die schnelle antwort und kein problem ich kann ruhig ein bischen warten :)

allso ich habe ne buch version gehabt von markt & technik: Spieleprogrammierung mit DriectX

http://www.mut.de/main/main.asp?page=home/bookdetails&productID=118102
(gute einführung aber nicht wirklich ausreichende erklärungen mitunter)

und hatte noch eine ebook version von c++ für spieleprogrammierer
habe dieses aber nur überflogen
(gutes buch gute erklärungen, leider kein directx teil, aberwirklich gute grundlagen erklärungen)

und natürlich je länger ich mich mit dem programm beschäftigt hatte destso mehr haben mir foren wie diese geholfen, internet tutorials, und natürlich die msdn :)

nochmals danke im voraus :)
 
Hi,

Also hab schonmal ein bisschen Feedback.
Hab mir bis jetzt nur 4 Dateien angeschaut und das Spiel natürlich:


Wenn man verloren hat kann man unten auf das Menü MANCHMAL nur sehr schlecht klicken.
Der Maus zeiger muss sich weit über der Schrift befinden damit es geht.

C++:
typedef std::vector<LPDIRECT3DTEXTURE9> vAnimation;
typedef std::vector<std::vector<LPDIRECT3DTEXTURE9>> vvAnimation;
in der Klasse:
std::vector<vAnimation>	m_vvAnimation;
Warum nicht:
C++:
vvAnimation m_vvAnimation;
?

FENSTER_HOEHE ist nen define und wird in der Sprite klasse benutzt.
Wie willst du so z.B. hinterher die Fenstergröße anpassen?
Auch wenn es viele nicht gerne hören:
Ich würde z.B. eine globale Variable benutzen um es nihct in jeder Klasse zu speichern.

SetFallgeschwindigkeit
Du mischt Englisch und Deutsch.
Gewöhn es dir so schnell wie möglich ab.
Ich habs auch am Anfang lange gemacht und erwische mich immernoch dabei (leider).
Hier ist es natürlich von Vorteil Englisch zu benutzen aber Deutsch geht auch.

C++:
void Sprite ::AddTexture(LPCSTR FileName, int Animation)
{ ...
MessageBox(NULL, "Fehler beim erstellen m_lpSprite->TEXTUREFROMFILE", "Fehler beim erstellen", MB_OK | MB_ICONEXCLAMATION);
Spätestens im Vollbild-Modus bekommste damit Probleme.
Und: Woher weiß das Sprite das es immer "m_lpSprite" heißt?
Wäre z.B. "Sprite::AddTexture -> TEXTUREFROMFILE" nicht besser?

Du benutzt einen Color-Key.
Besser ist es (meine Meinung) eine Textur mit Alpha-Kanal zu benutzen (TGA, PNG)

C++:
void Zeit ::berechneZeit()
{
	int i =(timeGetTime());
	if( i >= (m_Start + 1000) || m_Start==0)
	{
		m_Start = i;
		m_Sekunde++;
	}
	if(m_Sekunde >= 60)
	{
		m_Minute++;
		m_Sekunde = 0;
	}
	if(m_Minute >= 60)
	{
		m_Stunde++;
		m_Minute = 0;
	}
}
Warum müssen es z.B. 0 Sekunden sein wen es mehr als 60 sind?
C++:
SEKUNDE:
if(m_Sekunde >= 60)
{
	m_Minute++;
	m_Sekunde -= 60;
	goto SEKUNDE;
}
 
Zuletzt bearbeitet von einem Moderator:
schon mal danke für die guten Anmerkungen :)

das mit dem Menü da habe war so ne sache weil ich da nicht genau arbeiten konnte weil ja der xMaus, yMaus nicht hundertprozent von (x/y) des bei dem text angegebenen werten übereinstimmt. Ich schau aber mal das dürfte ja kein Problem sein hinzubekommen.


typedef std::vector<LPDIRECT3DTEXTURE9> vAnimation;
typedef std::vector<std::vector<LPDIRECT3DTEXTURE9>> vvAnimation;
in der Klasse:std::vector<vAnimation> m_vvAnimation;

Warum nicht:
cpp Code:
vvAnimation m_vvAnimation;


Das wollte ich sogar so machen (ursprünglich wollte icht map<vector> machen) gab aber unerklärliche Compilerfehler, keine Ahnung warum aber habe dann nicht länger drüber nachgedacht und es so stehen lassen.

wegen dem define FENSTER_HOEHE / BREITE wurde mir schon ans Herz gelegt ne const int zu benutzen, wenn ich dich richtig verstehe meinst du das so ähnlich?

Wegen dem Denglisch versuche ich zukünftig bischen mehr drauf zu achten, und versuchen nur Englisch zu schreiben, Problem ist ja nur da für 70% der variablen der englische name so eindeutig für mich ist wie in deutsch und 30% da fehlt einfach dann die Sprachkenntnis :)

Das Fehlerabfangen habe ich nur da immer eingesetzt wo nen Fehler war und ich nicht genau wusste wo, fehler Behandlung in dem kleinem Programm jetzt konnte ich dann ganz gut damit arbeiten, probier aber auch da etwas genauer zu werden.

allso das mit dem Colorkey war notwendig da ich für die Bildbearbeitung nur Paint, hatte :), die Charaktere habe ich leider auch nicht selbst gemalt und da ist dann ein Hintergrund schon dabei, Alpha-Kanal wäre mir auch lieber gewesen hätte mir sicher ein bischen zeit gespart :)

das mit der Zeit muss ja auf 0 gesetzt werden weil ich das später in ein char umwandle der dann auf dem Bildschirm ausgegeben werden soll

Stunden: Minuten : Sekunden

und wenn aus irgendeinem Grunde mal Sekunden über 60 geht oder in den - Bereich würde das komisch aussehen

so jetzt nochmal Danke für die Mühe die du dir bis jetzt schon gemacht hast und ich freue mich auch noch auf mehr :)

Gruß nummer_001
 
Hi,

es ist mir schon klar das man die Zeit umrechnen muss um nicht auf über 60 Sekunden zu kommen, aber was ist wenn zwischen einem Frame mal 2 Sekunden liegen und m_Sekunde auf einmal 62 ist? Dann hast du zwar eine Minute mehr aber die restlichen 2 Sekunden gehen verloren.
Das was ich da mit den Sekunden geschrieben habe muss natürlich auch noch für die Minuten gemacht werden.

MfG
Anfänger
 
ah daran habe ich gar nicht gedacht :) gut bei dem Spiel sollte es nicht vorkommen das ein Frame länger als ne Sekunde ist aber das kann ja noch kommen stehe ja noch ganz am Anfang :)

chears
 
Zurück