Spacemines 3D

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

  • Hi,

    ich habe mich im verregneten Sommer auch mal an die OGL-Materie rangewagt. Herausgekommen ist ein Bildschirmschoner, in welchem sich ein kleines Raumschiff seinen Weg durch vermintes Gebiet freischiesst.

    [Blockierte Grafik: http://www.wolfgang-picheta.de/saver.jpg]

    Über ein Konfigurationsmenü kann die Anzahl der Objekte sowie die Geschwindigkeit voreingestellt werden. Diese Einstellungen kann man während des Programmablaufs jederzeit verändern. Die Tastaturbelegung dafür erreicht man über die Taste "Space". Beendet werden kann der Saver mit "ESC".

    Und hier der Download: Spacemines 3D Screensaver

    Viel Spaß beim ausprobieren.

  • Toll gemacht, ganz meine Kragenweite! Läuft auf meinem Netbook völlig problemlos. Bin schon jetzt auf dein erstes Spiel dieser Art gespannt. :-)


    Nur als kleine Anregung: Die Wave-Dateien würde ich gar nicht extra im Programmordner auslagern. Einige API können sie direkt aus dem Speicher heraus oder als Resource abspielen, z.B. sndPlaySound().

  • Danke für die Feedbacks.

    Jonathan
    Der Code ist nur spärlich kommentiert, da würdest du dich mit Sicherheit nicht durchwuseln können.

    Frank
    Für jede Rakete gibt es je zwei verschiedene Explosionsgeräusche für Explosionen, die weiter links oder mittig, bzw. weiter rechts oder mittig stattfinden. Für die Satelliten gibt es drei (links, mittig, rechts).
    Wenn nun theoretisch drei mittige Explosionen mit ein und derselben Sounddatei gleichzeitig ablaufen, geht das auch über die API's, ohne dass es dabei Konflikte gibt? Und was spricht dagegen, die Dateien im Programmordner abzulegen, eventuell nur Schutz vor Missbrauch?

  • Zitat von Vento;875894

    da würdest du dich mit Sicherheit nicht durchwuseln können.



    Ach, komm schon ;)... Ich hab schon Programme mit >2500 Zeilen geschrieben (auch fast nicht kommentiert)... Mich würd's halt mal interessieren :-)


    Zitat von Vento;875894

    Wenn nun theoretisch drei mittige Explosionen mit ein und derselben Sounddatei gleichzeitig ablaufen, geht das auch über die API's, ohne dass es dabei Konflikte gibt? Und was spricht dagegen, die Dateien im Programmordner abzulegen, eventuell nur Schutz vor Missbrauch?



    Konflikte wegen gleichzeitig ablaufenden Sounds sollte es keine geben. Ein Vorteil wäre, dass dein Bildschirmschoner dann auch noch ruckelfrei läuft, wenn im Hintergrund sowas wie ein Updater auf der Festplatte rumschreibt, was ja vorallem bei Bildschirmschonern recht häufig vorkommt.


    Gruß
    Jonathan

  • Zitat

    Wenn nun theoretisch drei mittige Explosionen mit ein und derselben Sounddatei gleichzeitig ablaufen, geht das auch über die API's, ohne dass es dabei Konflikte gibt?


    Da bin ich grad überfragt. Kann sein, dass neuere OS ein Flag in der API dafür bieten. Ich selbe benutzte sonst DirectSound. Ich vermute, du verwendest MCI?


    Zitat

    Und was spricht dagegen, die Dateien im Programmordner abzulegen, eventuell nur Schutz vor Missbrauch?


    Weniger, aber das kann ab Vista Probleme machen, Stichwort UAC: Benutzerkontensteuerung ? Wikipedia
    Nimm also besser den Appdata- oder Tempordner.

  • Richtig, ich realisiere das über MCI. Aber bevor ich einen anderen Ordner nehme, würde ich das dann doch lieber per Api machen. Nur habe ich damit zu wenig Erfahrung. Aus reinen Beschreibungen der API's bin ich nicht in der Lage, lauffähigen Code zu entwickeln. Soweit gehen meine Kenntnisse noch nicht. D.h., ich brauche immer ein kleines Beispiel, dass ich mir dann an meine Bedürfnisse anpassen kann. Deshalb lasse ich den Schoner auch erstmal so wie er ist. Bei einem neuen Projekt ähnlicher Art würde ich das dann natürlich berücksichtigen.

  • Um einen Klang im Speicher abzuspielen, lade die Klangdatei als Binärdatei in den Speicher. Dann sndPlaySound(Adresse, snd_Memory+snd_ASync) zum Abspiel aufrufen. Der Speicher darf erst disposed werden, wenn das Abspiel beendet ist. Um das Programm jederzeit beenden zu können, kannst Du den Klang abbrechen, indem Du als Adresse in sndPlaySound 0 angibst. Kopierst Du alle Klänge nacheinander in eine Datei, brauchst Du die Datei nur einmal laden. Als Adresse gibst Du bei jedem Klang Ladeadresse + Offset des gewünschten Klanges als Adresse an.
    Um Klänge als Ressourcen aus der Exe (oder einer DLL) zu verwenden, benötigst Du FindResourceEx, LoadResource und LockResource. Die Funktionen sind recht einfach gestrickt, sollte damit keine Probleme geben. Einfach mal nach diesen Namen googlen. Im Regelfall erster Treffer, bei MSDN.


    Gruß Volkmar