Wednesday, 25 February 2015

[C++] Spieleprogrammierung: Sound, wenn Maus über Button (Logikkenntnisse) topx







Hallo,

ich habe ein kleines Problem, bei dem ich auf der Schnelle nicht weiterkomme, deswegen suche ich mir mal hier Rat :)

Ich entwickle also ein Spiel und bin gerade beim Hauptmenü, welches 7 Buttons (im Beispiel ein Rechteck-Array) beinhaltet. Nun habe ich bereits einen Mouse-Hover-Effekt geschrieben, der die Farbe des Buttons, auf dem die Maus gerade ist, von Grün auf Gelb verändert, und wenn man raus fährt wieder auf Grün. Das sieht im Pseudo-Code so aus:



PHP-Code:







Funktion Update() //Diese Funktion wird ständig aufgerufen

{

    
Schleife(int i 0i kleiner 7i++)

    {

        
rechteck[i].setzeFarbe(Grün);//Standardmäßig jedes Rechteck Grün 

        
wenn Mauszeiger in rechteck[iliegt

        
{

            
rechteck[i].setzeFarbe(Gelb);//Rechteck, wo Maus drin ist soll Gelb sein

        
}

    }












Nun zum Problem: Ich mcöhte nun, dass eine Art "Blub" (Sound) abgespielt wird, wenn die Maus in einen Button kommt (kein Klick, nur Hover). Die Funktion ist ganz simpel:



PHP-Code:







soundobjekt.spiele("sound.wav"); 










Wenn ich das jetzt einfach mit in die obige Wenn-Bedingung einfüge, also unter der Farbänderung, habe ich das Problem, dass der Sound immer wieder abgespielt wird, auch wenn er bereits spielt. (Da die Update Funktion immer wiederholt wird.) Das klingt dann schrecklich. Deswegen gibt es folgende Möglichkeit:



PHP-Code:







wenn soundobjekt nicht gerade etwas abspielt

{

    
sound.spiele("sound.wav")












Auch das reicht noch nicht zum Erfolg.
Nun vertraue ich eurer Vorstellungskraft: Angenommen, der Sound geht 0,2 Sekunden und ich bleibe mit meiner Maus 2 Sekunden in einem der Buttons. Dann wird der Sound zwar nun nicht jedes mal abgespielt, also nicht, wenn er schon läuft, sondern alle 0,2 Sekunden, obwohl die Maus noch im selben Button ist.

Deswegen meine Frage, die fast mehr Logik- als Programmierkenntnisse verlangt: Wie müsste ich den Code basteln, damit der Sound nur einmal pro Button abgespielt wird?
Irgendwelche Hilfsvariablen und wo müsste ich die setzen?

Wer den Code genau sehen will, bitte Bescheid geben, ist in C++ geschrieben. Und ich beantworte gerne weitere Fragen, um schnell zur Lösung zu gelangen ;)

Danke für eure Antworten

LG









No comments:

Post a Comment