Prob mit Global
Übersicht

MichiBetreff: Prob mit Global |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich bastle gerade an einem Partikel-system mit types und habe folgendes Problem:
wenn man auf Enter drückt, sollen 5184 neue Partikel erstellt werden, die dann in alle Richtungen von einem Punkt aus wegfliegen. Eine explosion von bunten kreisen sozusagen. dafür habe ich eine Function geschriben, die die Dinger in zwei verschachtelten For...Next Schleifen erstellt. da das aber eine Function ist, sind die Partikel logischerweise Local. In der hauptschleife sollen sie dann bewgt werden. Da sie aber Local sind, kommt natürlich eine Illegal memory adress ![]() Ich kann sie im Unterprogramm aber nicht Global erstellen. Wie kann ich das lösen? |
||
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968 Code: [AUSKLAPPEN] __ <_/__\_> <--- die Wayne-Zeichnung |
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
wo speichesrt denn du die Handels??? Dims sind eigentlich gloabl, Types glaube ich auich ![]() |
||
![]() |
General Alex |
![]() Antworten mit Zitat ![]() |
---|---|---|
simi hat Folgendes geschrieben: wo speichesrt denn du die Handels??? Dims sind eigentlich gloabl, Types glaube ich auich
![]() Dims kann man aber nur im Hauptprogramm definieren. ![]() |
||
Michi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Type sowieso field X field Y field Z End Type irgandwas.sowieso=New sowieso sowieso ist global, irgendwas nicht |
||
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968 Code: [AUSKLAPPEN] __ <_/__\_> <--- die Wayne-Zeichnung |
![]() |
Maniac |
![]() Antworten mit Zitat ![]() |
---|---|---|
Klick misch | ||
User posted image
^^ |
Michi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
da stehts nicht drin.
es geht ja eigentlich nicht um die types, sondern um "erstellen von sachen in Functions und benutzen in der Hauptschleife" Ich könnte auch Bilder laden oder meshes |
||
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968 Code: [AUSKLAPPEN] __ <_/__\_> <--- die Wayne-Zeichnung |
![]() |
Rob_ |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zeig doch mal uns deinen bisherigen code. | ||
AMD Athlon 64 3500+ | Infineon 1 GB DDR RAM | nVidia Geforce 7800 GTX |
Michi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also ich habs jetzt erst mal mit goto gelöst (Das das böse ist weis ich):
Code: [AUSKLAPPEN] Graphics3D 800, 600, 16, 1
SeedRnd MilliSecs() Type Partikel Field objekt Field X# Field Y# Field Z# Field rot Field gruen Field blau Field X_Ver# Field Y_Ver# Field Z_Ver# Field LD End Type Type Partikelemitter Field X# Field Y# Field Z# Field Menge End Type Global PE.Partikelemitter=New Partikelemitter c=CreateCamera() l=CreateLight(1) bild=CreateImage(32, 32) SetBuffer ImageBuffer(bild) Color 255, 255, 255 Oval 0, 0, 32, 32, 1 SetBuffer BackBuffer() SaveImage(bild, "C:/NeuBitmap.bmp" ) o=LoadSprite( "C:/NeuBitmap.bmp" ) ScaleSprite o, 0.1, 0.1 HideEntity o PositionEntity c, 0, 0, -5 Global Nummer=-1 P.Partikel=New Partikel P\objekt=CopyEntity(o) EntityAlpha P\objekt, 0 Repeat If KeyHit(28) Then Goto explo .zurueck For P=Each Partikel P\X#=P\X#+P\X_Ver# P\Y#=P\Y#+P\Y_Ver# P\Z#=P\Z#+P\Z_Ver# PositionEntity P\objekt, P\X#, P\Y#, P\Z# P\LD=P\LD-1 If P\LD<1 Then FreeEntity P\objekt Delete P EndIf Next If KeyDown(200) Then TurnEntity c, 1, 0, 0 If KeyDown(208) Then TurnEntity c, -1, 0, 0 If KeyDown(203) Then TurnEntity c, 0, 1, 0 If KeyDown(205) Then TurnEntity c, 0, -1, 0 If KeyDown(30) Then MoveEntity c, 0, 0, 0.1 If KeyDown(44) Then MoveEntity c, 0, 0, -0.1 PE=First Partikelemitter For i=0 To Nummer PE=After PE Next If KeyDown(75) Then PE\X#=PE\X#-0.1 If KeyDown(77) Then PE\X#=PE\X#+0.1 If KeyDown(72) Then PE\Y#=PE\Y#+0.1 If KeyDown(80) Then PE\Y#=PE\Y#-0.1 If KeyDown(71) Then PE\Z#=PE\Z#-0.1 If KeyDown(73) Then PE\Z#=PE\Z#+0.1 If KeyHit(74) Then Nummer=Nummer+1 If KeyHit(78) Then Nummer=Nummer-1 RenderWorld UpdateWorld Text 10, 10, Nummer Flip Until KeyHit(1) End .explo For PE=Each Partikelemitter For i=0 To 36 For j=0 To 36 ueber=Rnd(0, 2) If ueber>0 Then j=j+1 P.Partikel=New Partikel P\objekt=CopyEntity(o) P\X#=PE\X# P\Y#=PE\Y# P\Z#=PE\Z# P\rot=Rnd(0, 255) P\gruen=Rnd(0, P\rot/2) P\blau=Rnd(0, 32) EntityColor P\objekt, P\rot, P\gruen, P\blau a1=i*10 a2=j*10 P\Y_Ver#=Sin(a1)*1 XZ_Ver#=Cos(a1)*1 P\Z_Ver#=Cos(a2)*XZ_Ver# P\X_Ver#=Sin(a2)*XZ_Ver# Geschw=Rnd(1, 10) P\X_Ver#=P\X_Ver#*0.0025*Geschw P\Y_Ver#=P\Y_Ver#*0.0025*Geschw P\Z_Ver#=P\Z_Ver#*0.0025*Geschw P\LD=Rnd(100, 250) Next Next Next Goto zurueck habs für euch abgeändert, dass es so funktioniert, erstellt aber das Bild "C:/NeuBitmap.bmp" enter drücken nicht vergessen! [Edit] einige Sachen werden (noch) nicht genutzt, sind augendblicklich überflüssig [/Edit] |
||
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968 Code: [AUSKLAPPEN] __ <_/__\_> <--- die Wayne-Zeichnung |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group