Types translaten

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

N0X

Betreff: Types translaten

BeitragFr, Jul 31, 2009 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey!
Ich programmiere zur Zeit an einem Billard-Spiel.
Die Kugeln handle ich mit Types. (Ist das gut?)
Wenn ich jetzt die Kugeln per TranslateEntity heruntersetzten möchte, klappt es nicht.
Warum?

Hier mal der entsprechende Code:
Code: [AUSKLAPPEN]
Const BALL=1,TISCH=2
Global qx=0

Type kugel
   Field x#,y#,z#
   Field avai
   Field mesh
End Type

Graphics3D 1680,1050,32,1
SetBuffer BackBuffer()

Global cam = CreateCamera()

;---------------------------------------------------------------------|
;LICHT
light1 = CreateLight()
PositionEntity light1,0,140,0

li=CreateCone()
ScaleEntity li,80,80,80
PositionEntity li,0,140,0
EntityColor li,255,255,128
EntityAlpha li,.03
EntityFX li,1+16

li2=CreateCone()
ScaleEntity li2,80,80,80
PositionEntity li2,-115,140,0
EntityColor li2,255,255,128
EntityAlpha li2,.03
EntityFX li2,1+16

li3=CreateCone()
ScaleEntity li3,80,80,80
PositionEntity li3,110,140,0
EntityColor li3,255,255,128
EntityAlpha li3,.03
EntityFX li3,1+16
;---------------------------------------------------------------------|

room  = LoadMesh("models\room.3ds")
table = LoadMesh("models\table.3ds")

Global queue = LoadMesh("models\queue.3ds")

Global white.Kugel = New Kugel
Global one.Kugel   = New Kugel
Global two.Kugel   = New Kugel
Global three.Kugel = New Kugel
Global four.Kugel  = New Kugel
Global five.Kugel  = New Kugel
Global six.Kugel   = New Kugel
Global seven.Kugel = New Kugel
Global eight.Kugel = New Kugel
Global nine.Kugel  = New Kugel
Global ten.Kugel   = New Kugel
Global ele.Kugel   = New Kugel
Global twe.Kugel   = New Kugel
Global thi.Kugel   = New Kugel
Global fut.Kugel   = New Kugel
Global fif.Kugel   = New Kugel

For k.Kugel = Each Kugel
   white\mesh = LoadMesh("models\balls\white.3ds")
   one\mesh   = LoadMesh("models\balls\one.3ds")
   two\mesh   = LoadMesh("models\balls\two.3ds")
   three\mesh = LoadMesh("models\balls\three.3ds")
   four\mesh  = LoadMesh("models\balls\four.3ds")
   five\mesh  = LoadMesh("models\balls\five.3ds")
   six\mesh   = LoadMesh("models\balls\six.3ds")
   seven\mesh = LoadMesh("models\balls\seven.3ds")
   eight\mesh = LoadMesh("models\balls\eight.3ds")
   nine\mesh  = LoadMesh("models\balls\nine.3ds")
   ten\mesh   = LoadMesh("models\balls\ten.3ds")
   ele\mesh   = LoadMesh("models\balls\eleven.3ds")
   twe\mesh   = LoadMesh("models\balls\twelve.3ds")
   thi\mesh   = LoadMesh("models\balls\thirteen.3ds")
   fut\mesh   = LoadMesh("models\balls\fourteen.3ds")
   fif\mesh   = LoadMesh("models\balls\fifteen.3ds")
   
   PositionEntity white\mesh,-100,80,0
   PositionEntity one\mesh,80,80,0
   PositionEntity two\mesh,88,80,4.5
   PositionEntity three\mesh,88,80,-4.5
   PositionEntity four\mesh,96,80,9
   PositionEntity eight\mesh,96,80,0
   PositionEntity five\mesh,96,80,-9
   PositionEntity six\mesh,104,80,13.5
   PositionEntity seven\mesh,104,80,4.5
   PositionEntity nine\mesh,104,80,-4.5
   PositionEntity ten\mesh,104,80,-13.5
   PositionEntity ele\mesh,112,80,18
   PositionEntity twe\mesh,112,80,9
   PositionEntity thi\mesh,112,80,0
   PositionEntity fut\mesh,112,80,-9
   PositionEntity fif\mesh,112,80,-18
   
   EntityType white\mesh,BALL
   EntityType one\mesh,BALL
   EntityType two\mesh,BALL
   EntityType three\mesh,BALL
   EntityType four\mesh,BALL
   EntityType five\mesh,BALL
   EntityType six\mesh,BALL
   EntityType seven\mesh,BALL
   EntityType eight\mesh,BALL
   EntityType nine\mesh,BALL
   EntityType ten\mesh,BALL
   EntityType ele\mesh,BALL
   EntityType twe\mesh,BALL
   EntityType thi\mesh,BALL
   EntityType fut\mesh,BALL
   EntityType fif\mesh,BALL
Next
;---------------------------------------------------------------------|

PositionEntity cam,-100,200,-300
RotateEntity cam,20,0,-7
TurnEntity cam,0,-20,0
CameraRange cam,1,1500

EntityType table,TISCH

;---------------------------------------------------------------------|

;MENU

;---------------------------------------------------------------------|

Collisions BALL,TISCH,2,2
While Not KeyHit(1)

   ;RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0
   
   updBalls()

   PositionEntity queue,qx,78,0

   RenderWorld()
   UpdateWorld()
   Flip
Wend
End

;---------------------------------------------------------------------|

Function updBalls()
   For k.Kugel = Each Kugel
      TranslateEntity white\mesh,0,-1,0
      TranslateEntity one\mesh,0,-1,0
      TranslateEntity two\mesh,0,-1,0
      TranslateEntity three\mesh,0,-1,0
      TranslateEntity four\mesh,0,-1,0
      TranslateEntity five\mesh,0,-1,0
      TranslateEntity six\mesh,0,-1,0
      TranslateEntity seven\mesh,0,-1,0
      TranslateEntity eight\mesh,0,-1,0
      TranslateEntity nine\mesh,0,-1,0
      TranslateEntity ten\mesh,0,-1,0
      TranslateEntity ele\mesh,0,-1,0
      TranslateEntity twe\mesh,0,-1,0
      TranslateEntity thi\mesh,0,-1,0
      TranslateEntity fut\mesh,0,-1,0
      TranslateEntity fif\mesh,0,-1,0
   Next
   
   If KeyHit(57) Then
      qx=-210
      RotateEntity queue,0,180,7
      
      PositionEntity cam,-160,83,0
      RotateEntity cam,6,-90,0
   EndIf
   
   If MouseDown(1) Then
      qx=qx-MouseYSpeed()
      
      If qx<-230 Then qx=-230
      If qx>-202 Then qx=-202
   EndIf
End Function


Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Nicdel

BeitragFr, Jul 31, 2009 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
For k.Kugel = Each Kugel
   white\mesh = LoadMesh("models\balls\white.3ds")
   one\mesh   = LoadMesh("models\balls\one.3ds")
   two\mesh   = LoadMesh("models\balls\two.3ds")
   three\mesh = LoadMesh("models\balls\three.3ds")
   four\mesh  = LoadMesh("models\balls\four.3ds")
   five\mesh  = LoadMesh("models\balls\five.3ds")
   six\mesh   = LoadMesh("models\balls\six.3ds")
   seven\mesh = LoadMesh("models\balls\seven.3ds")
   eight\mesh = LoadMesh("models\balls\eight.3ds")
   nine\mesh  = LoadMesh("models\balls\nine.3ds")
   ten\mesh   = LoadMesh("models\balls\ten.3ds")
   ele\mesh   = LoadMesh("models\balls\eleven.3ds")
   twe\mesh   = LoadMesh("models\balls\twelve.3ds")
   thi\mesh   = LoadMesh("models\balls\thirteen.3ds")
   fut\mesh   = LoadMesh("models\balls\fourteen.3ds")
   fif\mesh   = LoadMesh("models\balls\fifteen.3ds")
   
   PositionEntity white\mesh,-100,80,0
   PositionEntity one\mesh,80,80,0
   PositionEntity two\mesh,88,80,4.5
   PositionEntity three\mesh,88,80,-4.5
   PositionEntity four\mesh,96,80,9
   PositionEntity eight\mesh,96,80,0
   PositionEntity five\mesh,96,80,-9
   PositionEntity six\mesh,104,80,13.5
   PositionEntity seven\mesh,104,80,4.5
   PositionEntity nine\mesh,104,80,-4.5
   PositionEntity ten\mesh,104,80,-13.5
   PositionEntity ele\mesh,112,80,18
   PositionEntity twe\mesh,112,80,9
   PositionEntity thi\mesh,112,80,0
   PositionEntity fut\mesh,112,80,-9
   PositionEntity fif\mesh,112,80,-18
   
   EntityType white\mesh,BALL
   EntityType one\mesh,BALL
   EntityType two\mesh,BALL
   EntityType three\mesh,BALL
   EntityType four\mesh,BALL
   EntityType five\mesh,BALL
   EntityType six\mesh,BALL
   EntityType seven\mesh,BALL
   EntityType eight\mesh,BALL
   EntityType nine\mesh,BALL
   EntityType ten\mesh,BALL
   EntityType ele\mesh,BALL
   EntityType twe\mesh,BALL
   EntityType thi\mesh,BALL
   EntityType fut\mesh,BALL
   EntityType fif\mesh,BALL
Next


Dieser Teil ist Schwachsinn. Du lädst alle Kugeln mehrmals. Und zwar so oft, wie die Gesamtanzahl aller Kugeln. Mach die Schleife raus.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Holzchopf

Meisterpacker

BeitragFr, Jul 31, 2009 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich verstehe nicht ganz, wofür du diese For k.Kugel = Each Kugel Schleifen hast, wo du in der Schleife jede Kugel hardcodet ansprichst =/

Beim Laden sorgt das zB dafür, dass du jedes Kugelmesh 16x lädst. Und beim Bewegen wird analog jede Kugel 16x um eine ganze Einheit nach unten geschoben...
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
 

n-Halbleiter

BeitragFr, Jul 31, 2009 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
So etwas ist schonmal sehr schlecht:

Code: [AUSKLAPPEN]
For k.Kugel = Each Kugel
   white\mesh = LoadMesh("models\balls\white.3ds")
   one\mesh   = LoadMesh("models\balls\one.3ds")
   two\mesh   = LoadMesh("models\balls\two.3ds")


Es ist unsinn, jede Kugel durchzugehen, und dann nochmal die Kugeln direkt anzusprechen. Das gleiche Problem ist auch in deiner Funktion updBalls. Lasse einfach die For-Next-Schleife weg.
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit
Ploing!
Blog

"Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935)

N0X

BeitragFr, Jul 31, 2009 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke,
war gestern 'ne lange Nacht Confused

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group