Switch anweisung Fehlerhaft?

  • GM 8
  • Switch anweisung Fehlerhaft?

    Hi Leute! IC hstehe aktuell vor einem Ratlosen Problem.

    Ich habe eine Switch anweisung definiert, die mir sagt, was für nachkommastellen die aktuelle Zahl besitzt.
    Nun,Ich ziehe einfach von der Aktuellne Zahl (z.B: 9,50) die gerundete Version ab (9) Das ergebniss sollte 0.50 sein.

    Dies Funktioniert auch einwandfrei, bis auf einen Wert: 0.75.

    GML-Quellcode

    1. switch(player_hp - floor(player_hp)){
    2. case 0.75:
    3. h_subimage = 2;
    4. break;
    5. case 0.50:
    6. h_subimage = 3;
    7. break;
    8. case 0.25:
    9. h_subimage = 4;
    10. break;
    11. case 0:
    12. h_subimage = 0;
    13. break;
    14. }
    Alles anzeigen


    Alle diese Fälle träten auch ein ,bis auf der erste. (0.75) ICh habe allesmögliche ausprobiert. Aus der Rechnung im Switch, kommt immer 0.75 raus, dennoch erkennt er die Zahl im Case nicht.
    Ich habe versucht mit dem Variablen zu setzen, irgendtwas zu Zeichnen, usw... > Hat alles nichts gebracht.
    Das eigenartige ist, dass wenn ich in die Switch anweisung 0.75 eingebe wie z.B:

    GML-Quellcode

    1. switch(0.75){

    Wird auch der erste case erkannt. Wenn allerdings die Rechnung mit der Variable eingesetzt wird, funktioniert das nicht, obwohl der Wert 0.75 rauskommt.

    Weiss da jemand Rat?

    (PS: Nutze GM 8.1)
  • Dieser Bug ist mir noch nie Aufgefallen. Anscheind hat der GM Probleme mit Kommazahlen in Switches und kann nur x1/4 x1/2 x1/8 nehmen. Man kann das Umgehen indem man sie in eine normale Zahl umwandelt.

    GML-Quellcode

    1. switch(frac(player_hp)*100)
    2. {
    3. case 75:
    4. h_subimage = 2;
    5. break;
    6. case 50:
    7. h_subimage = 3;
    8. break;
    9. case 25:
    10. h_subimage = 4;
    11. break;
    12. case 0:
    13. h_subimage = 0;
    14. break;
    15. }
    Alles anzeigen
  • Okeyy... also die Theorie dem Problem der nachkommastellen scheint sich bestätigt zu haben.
    Deine Anweisung funktioniert einwandfrei.

    @andre111: Würde ich ne Default anweisung reinpacken, würde er (beim fehlerhaften Script) die default anweisung nehmen. ;)
    Ist aber nicht mehr von belangen.^^

    thx Leute! :D
  • Benutzer online 1

    1 Besucher