Rnd mit Kommazahlen?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

DeVIL

Betreff: Rnd mit Kommazahlen?

BeitragDi, Nov 11, 2008 15:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute
Ich würde in meinem Programm gerne eine zufällige Kommazahl generieren
allerdings bringt Rnd nur ganze zahlen hervor

Ich habe es mit
(Rnd(250,300)/100)
Probiert

Seltsamerweise geht das auch nicht!?!
Oder muss man die Variable erst als Kommazahl definieren? Wenn ja wie?
 

da_poller

BeitragDi, Nov 11, 2008 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
entweder du änderst es in:

(Rnd(250,300)/100.0)

oder einfach wert#=Rnd(2.5,3)

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Nov 11, 2008 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Rand gibt ganze Zahlen aus, wärend Rnd Zahlen mit Nachkommastellen generiert. Vermutlich hast du deinen Wert in eine Integervariable gespeichert.

Code: [AUSKLAPPEN]
Local ganzzahl%
Local fliessen#

For Q=1 To 10
   ganzzahl=Rnd(0,300)/100
   fliessen=Rnd(0,300)/100
   Print "Ganzzahl: "+ganzzahl+"  Fliessen: "+fliessen
Next

WaitKey
End
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

DeVIL

BeitragDi, Nov 11, 2008 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Beide vorschläge ändern nichts...
vll hilft es wenn ich den ganzen code poste

Code: [AUSKLAPPEN]

Graphics 800,600

Flocke = LoadImage("Flocke.bmp")
MaskImage Flocke,255,0,255

Timer = MilliSecs()

Type Schneeflocke
   Field x,y
   Field Winkel
   Field Speed#
End Type

SetBuffer BackBuffer()

Repeat
   
   If MilliSecs() > Timer + 10
      s.Schneeflocke = New Schneeflocke
      s\x = Rnd(-800,800)
      s\y = -10
      If s\x < -10
         s\x = -10
         s\y = Rnd(0,1050)
      EndIf
         
        s\Winkel = 50
      s\Speed = Rnd(2.5,3.2)
      Timer = MilliSecs()
   EndIf
   
   For s.Schneeflocke = Each Schneeflocke
      
      DrawImage Flocke,s\x,s\y
      s\x = s\x + Cos(s\winkel)*s\Speed
        s\y = s\y + Sin(s\winkel)*s\Speed
      
   Next
   
   Flip
   Cls
      
Until KeyHit(1)

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Nov 11, 2008 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Doch, mein Vorschlag ändert was, wenn man die entsprechende Variable als Float deklariert.

Code: [AUSKLAPPEN]
   Field x#,y#
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

DeVIL

BeitragDi, Nov 11, 2008 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja schon nur leider können koordinaten doch keine Floats sein oder doch?

EDIT:

Wenn ich die koodinaten als Float Deklariere Funtioniert es zwar allerdings vibrieren die Flocken so komisch XD
  • Zuletzt bearbeitet von DeVIL am Di, Nov 11, 2008 16:18, insgesamt einmal bearbeitet
 

da_poller

BeitragDi, Nov 11, 2008 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
deine "koordinaten" sind auch nur stink normale variablen.. bei den bildern fallen einfach die kommawerte weg.

DeVIL

BeitragDi, Nov 11, 2008 16:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja das meinte ich ja auch
Aber wie kann ich die Geschwindigkeit den variieren?
Schneller als 3 dürfen sie auf jedenfall nicht sein allerdings soll trotzdem ein geschwindigkeitsunterschied da sein
 

DjDETE

BeitragDi, Nov 11, 2008 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Du weist doch, dass die koordinaten in Pixeln angegeben werden, oder?
Wie soll also etwas auf dem 2,3237897813 Pixel auf deinem Monitor angezeigt werden?
MfG DeTe
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.

Noobody

BeitragDi, Nov 11, 2008 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei DrawImage erwartet Blitz Integer und wandelt die angegebenen Variablen automatisch in Ganzzahlen um.
So macht es keinen Unterschied, ob man "123einszweidrei", 123.4321 oder 123 schreibt, das wird einfach in den erwarteten Datentyp umgewandelt - folglich ist es egal, ob man bei DrawImage Float- oder Integervariablen benutzt.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

DeVIL

BeitragDi, Nov 11, 2008 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm naja ok
Trotzdem danke für die Hilfe

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Nov 11, 2008 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Unter 2D kann Blitz nicht zwischen den Pixel Bilder anzeigen. Wie bereits angesprochen wandelt Blitz dann beim zeichnen der Bilder intern in Integer um. Trotzdem muß bei so einer Animation die Koordinate in Float gespeichert werden, weil, wenn die Geschwindigkeit zum Beispiel 0.4 ist und dieser Wert immer wieder auf eine Integer hinzuaddiert wird, bleibt diese denoch immer 0, da Integer den Zwischenschritt 0.4...0.8...1.2 nicht speichern kann. Der Grund warum das bei dir so ''komisch vibriert'' ist einfach dann das Aufrunden auf ganze Pixel, was DrawImage eben machen muß.

Falls du Blitz3D hast, klicke mal auf meine Signatur...
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group