Seite 1 von 2
Zufall in Pure Basic"programmieren"
Verfasst: 04.01.2009 21:38
von Special-Agent-J
man braucht ja für einige Spiele den zufall z.b. ich hab 3 ereignisse und möchte das eins von denen eintritt wie geht das in pure basic also das der computer dann quasi per zufall auswählt?
und geht es auch %chancen zu vergeben also das ich z.b sag ereigniss 1 hat eine 1% chance einzutreffen hingegen ereigniss 2 19% und ereigniss 3 80%
ich hatte schon viele ideen für gute spiele aber scheitert immer daran das ich nicht weiß wie man den zufall programmiert na ja wär nett mir zu helfen
Gruß Jonny
Verfasst: 04.01.2009 21:41
von Kaeru Gaman
Code: Alles auswählen
Zufall = Random(2)
If Zufall = 0
Debug "Ereignis 1"
EndIf
If Zufall = 1
Debug "Ereignis 2"
EndIf
If Zufall = 2
Debug "Ereignis 3"
EndIf
chancen kannst du verteilen durch bereiche in den Ifs...
Code: Alles auswählen
Zufall = Random(99)
If Zufall <= 4
Debug "Ereignis 1 mit 5%"
EndIf
If Zufall >= 5 And Zufall <= 24
Debug "Ereignis 2 mit 20%"
EndIf
If Zufall >= 25 And Zufall <= 99
Debug "Ereignis 3 mit 75%"
EndIf
Verfasst: 04.01.2009 21:43
von STARGÅTE
Das wäre ein Lösung:
es gibt 100% also mache ich ein Random(99)
und verteile über Select die Wahrscheinlichkeiten:
Code: Alles auswählen
Select Random(99)
Case 0 ;(1%)
Debug "Ergebnis 1"
Case 1 To 19 ;(19%)
Debug "Ergebnis 2"
Case 20 To 99 ; (80%)
Debug "Ergebnis 3"
EndSelect
Verfasst: 04.01.2009 21:46
von Special-Agent-J
vielen dank exakt das was ich brauche
Verfasst: 04.01.2009 21:49
von Josef Sniatecki
STARGÅTE hat geschrieben:
Code: Alles auswählen
Select Random(99)
Case 0 ;(1%)
Debug "Ergebnis 1"
Case 1 To 19 ;(19%)
Debug "Ergebnis 2"
Case 10 To 99 ; (80%)
Debug "Ergebnis 3"
EndSelect
Nur so als Kommentar: Das 3. Case hat keine 80% Chance, da das
2. Case sich mit dem 3. Case überlappt.
Diese Methode finde ich aber auch am besten, um eine %-Chance
für Ereignise zu machen.
Verfasst: 04.01.2009 21:49
von Special-Agent-J
STARGÅTE hat geschrieben:Das wäre ein Lösung:
es gibt 100% also mache ich ein Random(99)
und verteile über Select die Wahrscheinlichkeiten:
Code: Alles auswählen
Select Random(99)
Case 0 ;(1%)
Debug "Ergebnis 1"
Case 1 To 19 ;(19%)
Debug "Ergebnis 2"
Case 10 To 99 ; (80%)
Debug "Ergebnis 3"
EndSelect
ähmm nochmal vielen dank dafür aber beim dritten hast du doch ein fehler gemacht oder? das müsste doch case 19 to 99 heißen oder?
Verfasst: 04.01.2009 21:50
von Kaeru Gaman
da ist nurn typo drin:
wäre korrekt
kommt übrigens aufs selbe raus wie meine Ifs.
die sind zwar mehr schreibarbeit, dafür kann man sie räumlich trennen.
Verfasst: 04.01.2009 21:56
von STARGÅTE
jojo das war ein Tippfehler sry ^^
Verfasst: 04.01.2009 22:08
von Special-Agent-J
also nochmal zu überprüfen ob ich alles verstanden hab das programm stimmt so oder?
Code: Alles auswählen
If OpenWindow(1,50,50,300,300,"Zufall")
ButtonGadget(1,20,20,50,50,"Start")
Zufallwert.l
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
If EventGadget()=1
Select Random(99)
Case 0 To 19
MessageRequester("zufall","die 20% chance ist eingetroffen")
Case 20 To 29
MessageRequester("zufall","die 10% chance ist eingetroffen")
Case 30 To 99
MessageRequester("zufall","die 70% chance ist eingetroffen")
EndSelect
EndIf
EndIf
Until EventID=#PB_Event_CloseWindow
EndIf
End
Verfasst: 04.01.2009 22:10
von Kaeru Gaman
abgesehen davon, dass der code scheiße aussieht, weil er garnicht eingerückt ist...
er sollte so funktionieren.