Funktion beliebig oft aufrufen?
Übersicht

![]() |
GearTechDEehemals 'KillerJo96'Betreff: Funktion beliebig oft aufrufen? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
Bin gerade dabei eine Art Doodle Jump zu programmieren. Ich hänge schon beim erstellen der einzelnen Sprungmarken also die Dinger wo das Doodle immer draufspringen muss xD Die Sprungmarken lasse ich per Type in einer Function namens ErstelleSprungmarke01() erstellen. Für Jede Sprungmarke die im Spiel ist, wird ein Rect an eine mit Random generierte X + Y koordinate gesetzt. Jetzt mein Problem. Mit ErstelleSprungmarke01() erstelle ich zwar die Sprungmarke, aber immer nur EINE. Ich möchte, dass die Sprungmarke z.B. von 0 - 10 Mal im Zufall erstellt wird. Das also nachher per Zufall eine Zahl zwischen 0 und 10 ausgewählt wird, und so oft eine Marke erstellt wird. Wie mach ich das am besten???? Danke im Voraus ![]() |
||
Mit freundlichen Grüßen: GearTechDE |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Rand![]() ![]() |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
na das ist doch ganz einfach:
BlitzBasic: [AUSKLAPPEN] For i%=0 To Rand(0,10) |
||
![]() |
GearTechDEehemals 'KillerJo96' |
![]() Antworten mit Zitat ![]() |
---|---|---|
AHh danke... an for hatte ich garnicht gedacht...
Vielen Dank ![]() |
||
Mit freundlichen Grüßen: GearTechDE |
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wenn du an "for" nicht gedacht hast ist doodle jump vielleicht ein etwas zu kompliziertes projekt für den anfang ![]() |
||
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich denke es ist wichtig hier anzumerken, dass, auch wenn Midimasters Code funktioniert, er vermutlich nicht den erwünschten Effekt bietet. Das Problem ist, dass Rand() jeden Schleifen-Durchlauf wieder aufgerufen wird, und jedes mal ein neuer Zufallswert mit i vergleichen wird. Das wiederum sorgt für eine alles andere als Gleichmäßige Verteilung über den Bereich von 0 bis 11 Durchläufen mit einer (deutlichen) Neigung zu niedrigeren Zahlen.
Zu sehen ist das zum Beispiel in folgendem Code: BlitzBasic: [AUSKLAPPEN] Local i, n Wenn man eine gleichmäßige Verteilung haben möchte sollte man den zufälligen Wert vorher zwischenspeichern und dann in der For-Schleife bis dort laufen. Zur Vollständigkeit, der gleiche Code angepasst: BlitzBasic: [AUSKLAPPEN] Local i, n, a |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn das stimmt, wäre es kein Feature, sondern ein Bug....
Sollte die TO-Variable nicht nur einmal eingelesen werden und dann lokal festliegen? Moment..... ich teste mal..... BlitzBasic: [AUSKLAPPEN] For i = 0 To Rand(0, 10) Boah! Voll Falsch!!! Während sich unter BMax die Wahrscheinlichkeiten richtig verteilen, ergibt sich unter BB tatsächlich dieses Ungleichgewicht. Danke für diesen Hinweis, Man lernt also nie aus... Dann hier mein geänderter Code: BlitzBasic: [AUSKLAPPEN] Zufall% = Rand(0,10) |
||
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ob Bug oder Feature lässt sich evtl. streiten. Aber es ist definitiv etwas was man wissen sollte, damit so Sachen wie folgendes nicht vorkommen. ![]() BlitzBasic: [AUSKLAPPEN] For i = 1 To Len(s) (aber zurück zum Thema...) |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da man bei einer For-Schleife aber nicht will, dass sich der Endwert während des Durchlaufens verändert (wär sonst grausiger Programmierstil), würd ich das schon als Bug bezeichnen. Oder zumindest als Schwäche ![]() |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group