Zufällige Erzeugung von Koordinaten
Übersicht

CarlTrottBetreff: Zufällige Erzeugung von Koordinaten |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich habe ein Problem mit der zufälligen Generierung von Zahlen. Ich möchte gerne eine (oder später auch mehrere) Koordinaten zufällig generieren. Hier ist erstmal der Code, mit dem ich bisher etwas rumprobiert hab. In dem Beispiel hab ich mal versucht, die y-Koordinate der Startposition der Kamera zufällig zu erzeugen. Code: [AUSKLAPPEN] Graphics3D 1280,1024,32,1 SetBuffer BackBuffer() camera=CreateCamera() RotateEntity camera,0,0,0 light1=CreateLight() RotateEntity light1,90,0,0 light2=CreateLight() RotateEntity light2,90,0,0 plane=CreatePlane() plane_tex=LoadTexture("Texturen\digital_coppermaze.jpg") EntityTexture plane,plane_tex PositionEntity plane, 0,0,0 fdur# = 15 While Not KeyHit (1) If KeyDown (28) Then ;;;;;;;;;;;;;;; ENTER-Taste SeedRnd MilliSecs() Zahl= Rand (2,15) PositionEntity camera, 0,Zahl,0 SetAnimKey camera,1000/fdur# PositionEntity camera,0,10,30 SetAnimKey camera,5000/fdur# AddAnimSeq camera,5000/fdur# Animate camera,3 EndIf If KeyDown (2) Then Locate 0,160 Print "Zahl="+Zahl Locate 0,100 Print "y Position"+EntityY#(camera) EndIf UpdateWorld RenderWorld Flip Wend End Die Zahl wird auch tatsächlich mit jedem Enter-Drücken neu und zufällig erzeugt (kann man sich ja durch drücken der Nummerntaste 2 anzeigen lassen). Aber, und das ist mein Problem, diese Zahl wird nun nicht als y-Koordinate übernommen. Die y-Koordinate ist leider immer gleich. Wieso macht er das und wie könnte ich das ändern? Ich dank euch schonmal... |
||
![]() |
Foppele |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Koordinaten werden einwandfrei übernommen und die Kamera wird richtig positioniert. Ich habe deinen Code mal verändert, damit du es sehen kannst.
Code: [AUSKLAPPEN] Graphics3D 800,600,32,2
SetBuffer BackBuffer() camera=CreateCamera() RotateEntity camera,0,0,0 PositionEntity camera, 0,0,-9 light1=CreateLight() RotateEntity light1,90,0,0 light2=CreateLight() RotateEntity light2,90,0,0 plane=CreateSphere() ;plane_tex=LoadTexture("Texturen\digital_coppermaze.jpg") ;EntityTexture plane,plane_tex PositionEntity plane, 0,0,0 fdur# = 15 While Not KeyHit (1) If KeyDown (28) Then ;;;;;;;;;;;;;;; ENTER-Taste SeedRnd MilliSecs() Zahl= Rand (0,2) PositionEntity camera, 0,Zahl,-9 ;SetAnimKey camera,1000/fdur# ;PositionEntity camera,0,10,30 ;SetAnimKey camera,5000/fdur# ;AddAnimSeq camera,5000/fdur# ;Animate camera,3 EndIf If KeyDown (2) Then Locate 0,160 Print "Zahl="+Zahl Locate 0,100 Print "y Position"+EntityY#(camera) EndIf UpdateWorld RenderWorld Flip Wend End |
||
CarlTrott |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ja, stimmt. In deinem Beispiel hat die Kamera ja schon immer eine andere Startposition. Sobald du aber die Kamera animierst, ändert sich die Startposition leider nicht mehr mit jedem ENTER-Klick. Die Zahl allerdings (komischerweise) schon (nur noch durch die Textausgabe zu erkennen). Was kann ich dagegen machen? |
||
![]() |
Foppele |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiss ja nicht was du vor hast aber ich nehme mal an du willst erst Keyframes für die Kamera setzen und dir danach die Animation angucken?
Dann solltest du die Erstellung der Animation VOR die Schleife packen, oder das ganze so konstruieren, das Animate Camera erst losgeht, wenn eine Animation da ist, sonst gibts ne Fehlermeldung. Code: [AUSKLAPPEN] Graphics3D 800,600,32,2
SetBuffer BackBuffer() camera=CreateCamera() RotateEntity camera,0,0,0 PositionEntity camera, 0,0,-9 light1=CreateLight() RotateEntity light1,90,0,0 light2=CreateLight() RotateEntity light2,90,0,0 plane=CreateSphere() ;plane_tex=LoadTexture("Texturen\digital_coppermaze.jpg") ;EntityTexture plane,plane_tex PositionEntity plane, 0,0,0 fdur# = 15 SeedRnd MilliSecs() Zahl= Rand (-2,5) PositionEntity camera, 0,Zahl,-9 SetAnimKey camera,1000/fdur# PositionEntity camera,0,10,30 SetAnimKey camera,5000/fdur# AddAnimSeq camera,5000/fdur# While Not KeyHit (1) If KeyDown (28) Then ;;;;;;;;;;;;;;; ENTER-Taste Animate camera,3 EndIf If KeyDown (2) Then Locate 0,160 Print "Zahl="+Zahl Locate 0,100 Print "y Position"+EntityY#(camera) EndIf UpdateWorld RenderWorld Flip Wend End |
||
CarlTrott |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
das funktioniert leider auch nicht so wirklich. Jetzt wird die Zahl zwar als y-Koordinate übernommen, aber sie ändert sich nicht mehr mit jedem ENTER. Ich bin ratlos... ![]() |
||
![]() |
Foppele |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was soll dein Code denn jetzt genau machen? | ||
CarlTrott |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich will ein kleines Experiment programmieren. Im Prinzip ist es nur etwas komplexer als der Beispiel-Code, den ich hier rein gestellt habe. Nur, dass die gegangene Strecke noch eine Drehung beinhaltet. Und der Winkel dieser Drehung soll nicht immer der selbe sein.
Aber ich versuch nochmal, die Zahlen aus irgendeinem file zu nehmen. Vielleicht klappt es dann ja... Dazu fällt mir noch eine Frage ein: Eigentlich möchte ich nämlich nur eine zufällige Auswahl von 8 Zahlen haben. Wie kann ich das machen? Ich hab's schonmal probiert mit: Code: [AUSKLAPPEN] Zahl=30 or Zahl=60 or Zahl=90 usw. Dabei wurde aber eigentlich immer nur die erste Zahl gewählt. ??? |
||
![]() |
Foppele |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achso, verstehe, das Experiment ist eigentlich geheim...
![]() y=0 x=Rnd(0,7) If x=0 Then y=30 If x=1 Then y=40 ... |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Foppele's Ansatz ist gut, aber wenn die Zahlen wie in deinem Beispiel so linear verteilt sind, gehts mit ner einfache Formel^^
Code: [AUSKLAPPEN] x=Rand(0,11)*30
mfG, Christoph |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group