MiniGame Problem



  • Also, ich bekomme beim Start zwei Fehler, "Cannot open mp3" und "Cannot Start mp3", das Spiel startet dann aber.
    Zweitens: Wo ist das Futter? 🙂
    Drittens: Du solltest das Bild beim Game-Over stehen lassen damit man sieht wer wie gefailed hat.
    Viertens: Währe eine Steuerung über WASD für den einen Spieler und Pfeiltasten für den anderen Spieler nicht sinnvoller? Mir war nicht intuitiv klar in welche Richtung meine Schlange "abbiegt".
    Und fünftens finde ich das Spielfeld zu groß. Eventuell solltest du die Schlangen dicker bzw schneller machen.

    Aber du hattest ja gesagt dass das dein erstes Spiel ist und von daher: Es funktioniert, das ist erstmal die Hauptsache 🙂

    /Edit: hab die Musik mal manuell gestartet, die SuperMario Musik ist einfach legendär.



  • Ups, das mit der mp3 hab ich total vergessen..
    Es müsste funktionieren, wenn du die beiliegende mp3 (oder eine mit selben Namen) auf deine Festplatte 'D' verschiebst.

    Alles weitere werd ich mir nochmal angucken 😉
    Darüber hab ich mir noch nicht wirklich gedanken gamacht, aber die Vorschläge sind nicht schlecht..

    Gib es vllt. noch etwas am Code selbst was man besser machen kann?



  • NEO.PIXEL schrieb:

    Ups, das mit der mp3 hab ich total vergessen..
    Es müsste funktionieren, wenn du die beiliegende mp3 (oder eine mit selben Namen) auf deine Festplatte 'D' verschiebst.

    Gib doch den Pfad zu der MP3 relativ an, also ohne Laufwerksbuchstaben.



  • Hört sich gut an.. Wie macht man das denn? 😕



  • Naja du hast ja ein sogenanntes "Working Directory", also ein Arbeitsverzeichnis in dem deine .exe ausgeführt wird. Das taucht zum Beispiel in ner Verknüpfung auf als "Ausführen in". Wenn du jetzt einen relativen Pfad angibst, also zum Beispiel "music\supermario.mp3" dann hängt Windows diesen Pfad an dein Working Directory an.
    Wenn du deine .exe einfach so per Doppelklick ausführst dann ist das Working Directory das Verzeichnis in dem deine .exe liegt. Stell dir vor deine .exe liegt in "D:\CPP\ErstesSpiel", und du gibst als Pfad "music\supermario.mp3" an, dann muss deine MP3 dort sein: "D:\CPP\ErstesSpiel\music\supermario.mp3".



  • Achso danke.. Das is gut zu wissen 🙂

    Eine Frage hab ich aber noch..
    Ich hab in meinem Spiel die zwei Klassen (Haupt- und Spielklasse) dynamisch angelegt.. Ist das so sinnvoll oder legt man die besser automatisch oder so an??



  • Hat sich erledigt.. Hauptklasse besser automatisch und die Spielklasse dynamisch.. 🙂



  • Ist eigentlich total egal, außer du hast in deinem Construktor etwas eingebaut was von einer Initialisierung irgendwo anders abhängt. Und das währe IMHO nicht unbedingt ein guter Programmierstil.
    Ich mache das eigentlich immer so dass ich im Constructor nur die "einfachen" Variablen der Klasse initialisiere und ggf. den Basis-Construktor aufrufe.
    Für alle Initialisierungen die einen Funktionsaufruf oder ähnliches benötigen füge ich eine Init() Funktion hinzu welche zur Programmlaufzeit aufgerufen wird. In dieser kann man ja ggf. durch BasisKlasse::Init( <Argumente> ) die Init-Funktion der Basisklasse aufrufen.



  • Das mit dem Init() hab ich unter anderem schon eingebaut 😃

    Hab allerdings noch einen letzten Fehler gefunden und ich hab keine Ahnung wie ich den beheben könnte:
    Wenn man das Fester verschiebt oder die Größe ändert, funktioniert das Spiel nicht mehr, dh. es hat sofort beim Start ein Spieler verloren..
    Ich denke es hapert an meiner bIsPointInApp-Funktion:

    bool CGAME::bIsPointInApp(COORD corPixel)
    {
    	RECT rect;
    	GetWindowRect(hScreen, &rect);
    	if( corPixel.X >= rect.left-105 &&
    		corPixel.X <= rect.right-105 &&
    		corPixel.Y >= rect.top-130 &&
    		corPixel.Y <= rect.bottom-130)
    		return true;
    	else
    		return false;
    }
    

    PS:
    Die Größenänderung von rect (rect.top-130...) war auch nur eine Notlösung, da ich auch ohne Verschieben oder so das Problem schon hatte.

    Hat jemand eine Idee dazu?



  • 😕


Anmelden zum Antworten