Flash Glückspiel Logik Problem
Gerd H.
- programmiertechnik
0 mati0 JürgenB0 Alexander (HH)
Hallo Forum,
mir glüht die Birne ;) Komme an einem Punkt meines Flash-Spiels nicht weiter.
Es geht darum, dass ein Glüccksrad per Button gedreht wird und irgendwann stehen bleibt und ein Zeiger auf ein Feld zeigt. Was dabei passiert ist, dass in PHP eine Zufallszahl zwischen 0 und 359 generiert und an Flash übergeben wird. (Das wäre der Winkel wo es dann stehen bleibt)
Dabei werden 2 Frames hintereinander abgespielt und ein Zähler dekrementiert bis der Winkel erreicht ist.
Klappt auch wunderbar. Was ich jetzt aber möchte ist, dass das Rad sich beim Knopfdruck schnell dreht und abbremst. Das kann man anhand des Winkels ja direkt einstellen - es muss eine 2.Variable "speed" mit rein. "Speed" wird nehmen wir an um 1 dekrementiert bei jedem Durchlauf der zwei Frames.
Und da baut sich ne Blockade in meinem Kopf auf :) Denn es steht ja bereits vorher schon fest wo das Rad stehen bleiben soll. Also muss man die Anzahl der Durchläufe im vorneherein berechnen.
Zusätzlich wärs natürlich auch interessant, dass sich das Rad nicht maximal 1 mal dreht sondern auch mehrere Male...
Hat jemand einen Denkanstoß um die Anzahl der Wiederholungen zu ermitteln und damit die Geschwindigkeit mit einbezogen wird`?
hi,
ich bin jetzt aus Flash schon mehrere Jahre raus, aber kann ich im ActionScript nicht sagen (mal Bildlich gesprochen):
Spiele diesen Film erst mit Geschwindigkeit x zweimal ab, dann mit Geschindigkeit y noch 1x und beleib dann an der Position stehen die Dir PHP gibt!
?
Gruß
mati
Hallo Gerd,
nur eine Idee:
sei die Startgeschwindigkeit Vs=40 und nehme sie 1 pro Schritt ab, dann ist der zückgelegte Weg S=40+39+38+...+2+1=(40*41)/2=820, oder allgemein S=(Vs*(Vs+1))/2; wenn du das Ziel kennst, kannst du den Startpunkt leicht bestimmen. Das Ganze berechnest du dann noch mit dem entsprechenden Modulowert.
Gruß, Jürgen
Vielen Dank für die Nachricht. Ich habe es jetzt so gemacht (Funktioniert noch nicht ganz wie gewünscht):
//Zeitpunkt 1:
wiederholungen = phpzufallswinkel;
speed = 10;
anfangsspeed = 10;
//Zeitpunkt 2(drehen):
setProperty("/drehrad", _rotation, winkel);
speed -= anfangsspeed/phpzufallswinkel;
if(winkel<360) winkel += speed;
else winkel = 360-winkel+speed;
wiederholungen -= 1;
//Zeitpunkt 3
if(wiederholungen == 0) {
gotoAndPlay("gewinn");
} else gotoAndPlay("drehen");
Sieht schonmal so ähnlich aus, wie ich es wollte. Leider stimmt die Position am Ende nicht. Ich habe das Gefühl, dass es am ~~~php
if(winkel<360) winkel += speed;
else winkel = 360-winkel+speed;
liegt. Denn genau bei 0 Grad springt das Rad ein paar Grad wieder zurück.
Hallo Gerd,
if(winkel<360) winkel += speed;
wenn hier winkel = 355 ist und du 10 draufaddierst, hast du 365.
else winkel = 360-winkel+speed;
??? Dreht es jetzt nicht rückwärts
Ich würde, wenn das Rad nur in eine Richtung dreht, einfach mal
winkel += speed;
if(winkel>360) winkel -= 360;
und wenn speed auch negativ sein kann, noch
else if(winkel<0) winkel += 360;
versuchen. So liegt winkel immer zwischen 0 und 360.
Gruß, Jürgen
Moin Moin!
dass in PHP eine Zufallszahl zwischen 0 und 359 generiert und an Flash übergeben wird. (Das wäre der Winkel wo es dann stehen bleibt)
Warum erzeugst Du die Zufallszahl nicht in Flash?
Alexander