Funktion Zufällig ausführen lassen
Übersicht

NathanielBlackBetreff: Funktion Zufällig ausführen lassen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Leute,
wie kann ich Funktionen nach dem Zufallsprinzip ausführen lassen? Ich weiß, dass es geht, aber nicht wie es geht. Ich habe heute einiges ausprobiert, aber nichts herausgefunden, was mein Spiel weiter bringt. Ich brauche einfach nur immer neue Ergebnisse beim "auswählen". Das habe ich grade mal so ausprobiert: Code: [AUSKLAPPEN] Graphics 1280,1024,0,2 Global timer = CreateTimer(60) Game() Function Game() Cls SeedRnd Wert Wert = Rnd(1,3) If Wert = 1 Then Funktion1() EndIf If Wert = 2 Then Funktion2() EndIf If Wert = 3 Then Funktion3() EndIf Flip(0) WaitTimer(timer) End Function Function Funktion1() Cls Print "Funktion 1 ist ausgeführt!" WaitKey Game() End Function Function Funktion2() Cls Print " Funktion 2 ist ausgeführt!" WaitKey Game() End Function Function Funktion3() Cls Print "Funktion 3 ist ausgeführt!" WaitKey Game() End Function Es wird leider immer nur Funktion 2 ausgeführt. Bitte verbessert mich. mit freundlichen Grüßen, Nathaniel |
||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versuch es mal mit seedrnd(millisecs()) | ||
It's done when it's done. |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Statt SeedRnd Wert nur einmal ganz am Anfang des Programms BlitzBasic: [AUSKLAPPEN] SeedRnd MilliSecs() |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
NathanielBlack |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wow, so schnell 2 gute Nachrichten.
Danke, Jungs. Hat geklappt. Das bringt mein Spiel ziemlich weit. |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nur mal zum verständniss :
Wenn du seedrnd auf "wert" setzt : Wert ist ja immer 0, wenn du die Funktion aufrufst. Gib mal in deinem Oben angebenen Beispiel SeedRnd 0 ein, und schon kommt auch immer 2 raus. Da bei einem Aufruf von Rand immer eine Zahl weitergerechnet wird, du aber die Zahl wieder zurücksetzte auf 0, ist es ja immer das gleiche (les dir mal Artike im Internet zum Thema Zufall und Computer durch). Deshalb muss eine Zahl bei Seedrnd hin, die sich bei jedem Aufruf ändert. Und diese Zahl ist Millisecs(). Da Millisecs() die Millisekunden nach dem systemstart misst, zählt es ja immer weiter, also immer eine neue zahl. Auch muss Seedrnd nur am amfangdes Programms geschrieben werden, denn SeedRnd gibt nur den Anfang der berechnung des Zufallsgeneratores an. Also nur einmal ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If Wert = 1 Then
Funktion1() EndIf If Wert = 2 Then Funktion2() EndIf If Wert = 3 Then Funktion3() EndIf lässt sich übrigens wesentlich übersichtlicher als: BlitzBasic: [AUSKLAPPEN] Select Wert schreiben. Außerdem ist es für den PC schneller, weil er die eine Seite der gleichung sozusagen nur einmal berechnen muss [auch eine Variable abzufragen brauch seine zeit..] |
||
![]() |
Nova |
![]() Antworten mit Zitat ![]() |
---|---|---|
Außerdem wäre rand(1, 3) besser als rnd(1, 3)
rnd erzeugt eine zufällige Kommazahl zwischen 1 und 3, also auch 2,45234 oder so. Bei rand bekommst du nur gerade Zahlen, also 1, 2 und 3. ![]() |
||
AMD Athlon II 4x3,1GHz, 8GB Ram DDR3, ATI Radeon HD 6870, Win 7 64bit |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nova hat Folgendes geschrieben: Bei rand bekommst du nur gerade Zahlen, also 1, 2 und 3.
![]() Du meinst doch NATÜRLICHE Zahlen oder ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nova hat Folgendes geschrieben: Außerdem wäre rand(1, 3) besser als rnd(1, 3)
rnd erzeugt eine zufällige Kommazahl zwischen 1 und 3, also auch 2,45234 oder so. Bei rand bekommst du nur gerade Zahlen, also 1, 2 und 3. ![]() das wäre nicht nur besser - es ist sogar absolut erforderlich, wenn man eine gleichverteilung möchte Code: [AUSKLAPPEN] Graphics 640,480,16,2 Repeat a = Rnd (1,3) If a = 1 Then a1 = a1 + 1 If a = 2 Then a2 = a2 + 1 If a = 3 Then a3 = a3 + 1 c = c + 1 Until c > 10000 Print a1 Print a2 Print a3 WaitKey End bei rnd kommt der 2. wert doppelt so oft vor wie der 1. und 3. warum ? es werden werte zwischen 1,0 und 3,0 erstellt danach werden diese auf ganzzahlen gerundet alle zahlen zwischen 1,0 und 1,4999... werden also zu 1 alle zahlen zwischen 1,5 und 2,4999... werden zu 2 alle zahlen zwischen 2,5 und 3 werden zu 3 somit ergibt sich die aus dem programm ersichtliche verteilung von 25% 1 50% 2 25% 3 was sicher nicht in deinem sinne war. deswegen: auf jeden fall RAND verwenden - da bekommst du eine normale verteilung. |
||
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@ToeB & Nova
Ihr meint beide Ganze Zahlen denn mit Rand kann man auch -2 -1 usw. erzeugen. Die Natürliche Zahlen sind nur im positiven Bereich Definiert. [Edit] @Admins: Ihr sollte euch die RegExp für das Parsen des [url=] Tags anschauen scheint wohl nicht mit Umlauten zu funktionieren. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group