|
Verfasser |
Nachricht |
AirMAX
Durchstarter
Beiträge: 50
Gruppe: User
Registriert seit: Jun 2012
Status:
Offline
Danke erhalten: 5
|
[PGE] Lua Zufall will nicht recht !
Soooo !
Jetzt habe ich endlich seit langer Zeit wieder einmal meine PSP rausgekramt und gleich lust bekommen pge zu coden
Dann taucht auch schon mein erstes problem auf !
gamestartup = 0
gamestartup = pge.math.randint(1,5)
if gamestartup == 1 then
pge.mp3.play("/sound/gamestartups/gamestartup1.mp3")
end
if gamestartup == 2 then
pge.mp3.play("/sound/gamestartups/gamestartup2.mp3")
end
if gamestartup == 3 then
pge.mp3.play("/sound/gamestartups/gamestartup3.mp3")
end
if gamestartup == 4 then
pge.mp3.play("/sound/gamestartups/gamestartup4.mp3")
end
if gamestartup == 5 then
pge.mp3.play("/sound/gamestartups/gamestartup5.mp3")
end
while pge.running() do
//hier gebe ich auch noch gamestartup aus um zu sehen, welche zahl es ist !
font:print(10,55,red,"Gamestartup: " ..gamestartup)
--Code--
end
Dann gibt er mir immer 1 aus !!!
Mir ist aufgefallen, dass immer die erste generierte Zahl das niedrigste ist, also hab ich das versucht !
gamestartup = 0
gamestartup = pge.math.randint(1,5)
// Dann adde ich diesen Code
//
//
gamestartup = gamestartup - 1
gamestartup = pge.math.randint(1,5)
//
//
//
if gamestartup == 1 then
pge.mp3.play("/sound/gamestartups/gamestartup1.mp3")
end
if gamestartup == 2 then
pge.mp3.play("/sound/gamestartups/gamestartup2.mp3")
end
if gamestartup == 3 then
pge.mp3.play("/sound/gamestartups/gamestartup3.mp3")
end
if gamestartup == 4 then
pge.mp3.play("/sound/gamestartups/gamestartup4.mp3")
end
if gamestartup == 5 then
pge.mp3.play("/sound/gamestartups/gamestartup5.mp3")
end
while pge.running() do
//hier gebe ich auch noch gamestartup aus um zu sehen, welche zahl es ist !
font:print(10,55,red,"Gamestartup: " ..gamestartup)
--Code--
end
Dann freezt die PSP !
Auch bei diesem Code freezt mir die PSP !
// Dann adde ich diesen Code
//
//
pge.math.srand(os.time())
//
//
//
gamestartup = 0
gamestartup = pge.math.randint(1,5)
if gamestartup == 1 then
pge.mp3.play("/sound/gamestartups/gamestartup1.mp3")
end
if gamestartup == 2 then
pge.mp3.play("/sound/gamestartups/gamestartup2.mp3")
end
if gamestartup == 3 then
pge.mp3.play("/sound/gamestartups/gamestartup3.mp3")
end
if gamestartup == 4 then
pge.mp3.play("/sound/gamestartups/gamestartup4.mp3")
end
if gamestartup == 5 then
pge.mp3.play("/sound/gamestartups/gamestartup5.mp3")
end
while pge.running() do
//hier gebe ich auch noch gamestartup aus um zu sehen, welche zahl es ist !
font:print(10,55,red,"Gamestartup: " ..gamestartup)
--Code--
end
Hat irgendjemand eine Idee ???
Gruß AirMAX*
|
|
14.01.2013 23:44 |
|
|
|
AirMAX
Durchstarter
Beiträge: 50
Gruppe: User
Registriert seit: Jun 2012
Status:
Offline
Danke erhalten: 5
|
RE: [PGE] Lua Zufall will nicht recht !
|
|
16.01.2013 21:33 |
|
|
|
Rroia
Profi
Beiträge: 303
Gruppe: User
Registriert seit: Apr 2010
Status:
Offline
Danke erhalten: 173
|
RE: [PGE] Lua Zufall will nicht recht !
Wahrscheinlich ist dein Zufallsgenerator im ersten Beispiel noch nicht richtig initialisiert. Zufallszahlen sind für Computer ein ziemlich hinderlicher Bereich, sie sind meistens nicht richtig zufällig, da sie ausgerechnet werden. In der PGE Lua Dokumentation findest du dazu die Funktion pge.math.srand(), die du in den letzten beiden Beispielen schon genutzt hast. Bau die einfach mal ins erste Beispiel ein.
Ich hab im Forum übrigens einen Thread gefunden, der genau das gleiche Thema behandelt, keine Ahnung ob Lett1s Vorschlag am Ende funktioniert hat. Es sieht jedenfalls so aus als wenn der PGE Zufallsgenerator nicht so funktioniert wie er sollte.
|
|
17.01.2013 15:31 |
|
|
|
Dreiundachzig
King
Beiträge: 2.883
Gruppe: User
Registriert seit: May 2009
Status:
Offline
Danke erhalten: 1010
|
RE: [PGE] Lua Zufall will nicht recht !
Ich habe ja mal ein kleines RPS programmiert und auch randint() verwendet.
Ich habe es wie folgt verwendet
function game()
while pge.running() do
random = pge.math.randint(1, 4)
----- weiterer Code
if random == 3 then
-----
end
end
end
Ich nehme an, dass es innerhalb der while pge.running() do Schleife ausgeführt werden muss.
Dieser Beitrag wurde zuletzt bearbeitet: 17.01.2013 17:29 von Dreiundachzig.
|
|
17.01.2013 17:27 |
|
|
|
AirMAX
Durchstarter
Beiträge: 50
Gruppe: User
Registriert seit: Jun 2012
Status:
Offline
Danke erhalten: 5
|
RE: [PGE] Lua Zufall will nicht recht !
Danke 83
Ich werde es gleich mal testen
Gruß AirMAX
Edit:
So, ich habs nun ausprobiert !
alle möglichen Varianten !
leider bringt die hauptschleife nicht viel, da der erste seed immer noch 1 ist !
auch mit pge.math.srand(os.time()) funzt die sache nicht, das sie wieder freezt !
Dieser Beitrag wurde zuletzt bearbeitet: 17.01.2013 20:22 von AirMAX.
|
|
17.01.2013 17:38 |
|
|
|
sigma-m
Team Sunny
Beiträge: 634
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 377
|
RE: [PGE] Lua Zufall will nicht recht !
Wie oft soll diese Funktion durchgeführt werden? Nur ein einziges Mal?
Ich habe nämlich auch gehört dass es bei einigen PGE Lua-Playern zu Problemen mit dieser Funktion kommt, daher ist sie in dem Matheskript-Paket auch nicht vorhanden. Man könnte es auch anders lösen (wenn auch nicht so elegant), aber dazu muss ich wissen ob du diese Funktion nur ein einziges Mal brauchst oder wie du dir das vorstellst.
Und die PSP freezet bei deinen umgeänderten Codes weil du gamestartup == 0 nicht definiert hast
Wenn deine Randomzahl immer 1 ergibt, du dann aber in der zweiten Zeile 1 subtrahierst ergibt das 0. Und mit gamestartup == 0 weiß der Player nichts anzufangen.
Gruß,
Sunny
|
|
11.05.2013 19:35 |
|
|
|
AirMAX
Durchstarter
Beiträge: 50
Gruppe: User
Registriert seit: Jun 2012
Status:
Offline
Danke erhalten: 5
|
RE: [PGE] Lua Zufall will nicht recht !
Nur ein einziges mal,
OK, habe nicht DARAN gedacht ^^
Werds mal testen
|
|
11.05.2013 19:37 |
|
|
|
sigma-m
Team Sunny
Beiträge: 634
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 377
|
RE: [PGE] Lua Zufall will nicht recht !
Wenn du es wirklich nur einmal brauchst kannst du es alternativ auch so machen (ist zwar ein wenig unschön, dafür funktioniert es aber mit Sicherheit )
Du lässt eine Variable von 1-5 steigen und setzt ihren Wert danach wieder auf 1. Mit der X-Taste unterbricht man dies dann und der aktuelle Wert ist dann dein gamestartup.
Damit du vielleicht besser verstehst was ich meine:
gamestartup = 1
modus = 0
while pge.running() do
pge.controls.update()
if modus == 0 then
gamestarup = gamestartup + 1
if gamestartup > 5 then
gamestartup = 1
end
if pge.controls.pressed(PGE_CTRL_CROSS) then
modus = 1
end
end
if modus == 1 then
if gamestartup == 1 then
pge.mp3.play("/sound/gamestartups/gamestartup1.mp3")
end
if gamestartup == 2 then
pge.mp3.play("/sound/gamestartups/gamestartup2.mp3")
end
if gamestartup == 3 then
pge.mp3.play("/sound/gamestartups/gamestartup3.mp3")
end
if gamestartup == 4 then
pge.mp3.play("/sound/gamestartups/gamestartup4.mp3")
end
if gamestartup == 5 then
pge.mp3.play("/sound/gamestartups/gamestartup5.mp3")
end
end
Wie gesagt, nicht die beste Lösung da du dafür extra die Variable "modus" verwenden musst aber sie sollte dafür funktionieren
Gruß,
Sunny
EDIT: Was ich noch hinzufügen wollte: Da der LUA-Player unglaublich schnell die 1 zu gamestartup addiert kann dies praktisch als Random-Funktion angesehen, auch wenn dies natürlich streng genommen nicht der Fall ist
Dieser Beitrag wurde zuletzt bearbeitet: 11.05.2013 22:22 von sigma-m.
|
|
11.05.2013 22:20 |
|
|
|