Antwort schreiben  Thema schreiben 
Verfasser Nachricht
AirMAX
Durchstarter
**


Beiträge: 50
Gruppe: User
Registriert seit: Jun 2012

Status: Offline
Danke erhalten: 5
Beitrag: #1
Wink  [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 Wink

Dann taucht auch schon mein erstes problem auf !

Code:
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 !

Code:
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 !

Code:
// 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*


Besucht uns doch mal Auf unserer Seite Smile
>>>> http://www.austriangamingarea.at/ <<<<
Wer bei AGA mitmachen will, kann sich im Forum vorstellen !
14.01.2013 23:44
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
AirMAX
Durchstarter
**


Beiträge: 50
Gruppe: User
Registriert seit: Jun 2012

Status: Offline
Danke erhalten: 5
Beitrag: #2
xGames  RE: [PGE] Lua Zufall will nicht recht !

So, ich hab mir jetzt PGE Lua 0.03 runtergeladen !

Falls es Jemand braucht: PGE Lua 0.03

Jedoch habe ich auch hier die Fehler und Abstürze !

Weiß denn wiklich Niemand eine Antwort ??? Sad Sad Sad

Gruß AirMAX* Smile


Besucht uns doch mal Auf unserer Seite Smile
>>>> http://www.austriangamingarea.at/ <<<<
Wer bei AGA mitmachen will, kann sich im Forum vorstellen !
16.01.2013 21:33
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Rroia
Profi
****


Beiträge: 303
Gruppe: User
Registriert seit: Apr 2010

Status: Offline
Danke erhalten: 173
Beitrag: #3
xGames  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
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Dreiundachzig
King
*


Beiträge: 2.883
Gruppe: User
Registriert seit: May 2009

Status: Offline
Danke erhalten: 1010
Beitrag: #4
xGames  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

Code:
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
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
AirMAX
Durchstarter
**


Beiträge: 50
Gruppe: User
Registriert seit: Jun 2012

Status: Offline
Danke erhalten: 5
Beitrag: #5
xGames  RE: [PGE] Lua Zufall will nicht recht !

Danke 83 Wink

Ich werde es gleich mal testen Smile

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 !


Besucht uns doch mal Auf unserer Seite Smile
>>>> http://www.austriangamingarea.at/ <<<<
Wer bei AGA mitmachen will, kann sich im Forum vorstellen !

Dieser Beitrag wurde zuletzt bearbeitet: 17.01.2013 20:22 von AirMAX.

17.01.2013 17:38
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
sigma-m
Team Sunny
****


Beiträge: 634
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 377
Beitrag: #6
xGames  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 Wink
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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
AirMAX
Durchstarter
**


Beiträge: 50
Gruppe: User
Registriert seit: Jun 2012

Status: Offline
Danke erhalten: 5
Beitrag: #7
RE: [PGE] Lua Zufall will nicht recht !

Nur ein einziges mal,

OK, habe nicht DARAN gedacht ^^

Werds mal testen Smile


Besucht uns doch mal Auf unserer Seite Smile
>>>> http://www.austriangamingarea.at/ <<<<
Wer bei AGA mitmachen will, kann sich im Forum vorstellen !
11.05.2013 19:37
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
sigma-m
Team Sunny
****


Beiträge: 634
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 377
Beitrag: #8
xGames  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 Wink )

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:

Code:
gamestartup = 1
modus = 0

while pge.running() do
pge.controls.update()

if modus == 0 then
gamestarup = gamestartup + 1
if gamestartup &gt; 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 Smile

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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben  Thema schreiben 

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
xPSP Zufall ThePspTester 11 2.432 31.07.2009 08:03
Letzter Beitrag: ThePspTester

Druckversion anzeigen
Thema einem Freund senden
Thema abonnieren | Thema zu den Favoriten hinzufügen




» zum Seitenanfang