dbLounge
Beispiel für MAKE PARTICLES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
` Bildschrimeistellungen und Sync Rate
sync on : sync rate 60 : if check display mode(1280,1024,32)=1 then set display mode 1280,1024,32 else if check display mode(1024,768,32)=1 then set display mode 1024,768,32 else set display mode 800,600,32

` Texturen zeichnen und abspeichern
box 1,1,100,100,rgb(250,100,0),rgb(255,0,100),rgb(255,0,0),rgb(255,50,50)
get image 1,1,1,100,100
box 1,1,1024,768,rgb(0,0,0),rgb(255,0,0),rgb(0,255,0),rgb(0,0,255)
get image 2,1,1,1024,768

` Bildschirm updaten
cls

` Schriftart festlegen und Schriftgröße festlegen
set text font "arial"
set text size 16

` Image Colorkey festlegen
set image colorkey 255,0,255

` Partikel erstellen und texturieren
make particles 1,1,7,140

` Hintergrund erstellen und texturieren
make object plain 1,1024,768
texture object 1,2

` Kamera auf 0 rotieren
rotate camera 0,0,0

` Maus verstecken
hide mouse

` Bleibende Erläuterungen abspeichern
gosub erlaeuterungen

` Variablen definieren
particle_velocity#=5
particle_gravity#=5
particle_emissions#=5
particle_life#=50
particle_chaos#=0
particle_speed#=0.0078125
particle_floor#=1
particle_x#=0
particle_y#=225
particle_z#=-750
particle_positionspeed#=1
particle_rot_x#=0
particle_rot_y#=0
particle_rot_z#=0
particle_visible=1
particle_emissions_x# = 0
particle_emissions_y# = 0
particle_emissions_z# = 0

` Vektoren
r = make vector3 (1)
r = make vector3 (2)


` ############################### Hauptschleifenanfang ###################################
do

   ` Hintergrund an der richtigen Stelle positionieren
   position object 1,0,225,-710

   ` Abfragen, ob etwas in der Tastatur eingegeben wurde, oder ob, die Maus bewegt wurde
   gosub Instreamabfrage

   ` Die Partikel, nach den eingegebenen Werten verändern
   gosub Partikelsetup

   ` Erläuterungen, die sich während des Programmes ändern
   gosub Aendernde_Erlaeuterungen

sync : loop
` ################################ Hauptschleifenende ####################################


` ##################################### Gosub's ##########################################


`       Erläuterungen
` --------------------------
erlaeuterungen:

   ` Hintergrund auf Rosa(255,0,255) setzen
   cls rgb(255,0,255)

   ` Die bleibenden Erläuterungen zeichnen
   text 0,24,"SET PARTICLE VELOCITY: Mit Pfeil oben(erhöhen) und Pfeil unten(erniedrigen) bestimmen"
   text 0,60,"SET PARTICLE GRAVITY: Mit Pfeil rechts(erhöhen) und Pfeil links(erniedrigen) bestimmen"
   text 0,96,"SET PARTICLE EMISSIONS: Mit Numblock +(erhöhen) und Numblock -(erniedrigen) bestimmen (zu viele zehren an den FPS)"
   text 0,132,"SET PARTICLE LIFE: Mit Page Up(erhöhen) und Page Down(erniedrigen) bestimmen"
   text 0,168,"SET PARTICLE CHAOS: Mit RShift(erhöhen) und Strg(erniedrigen) bestimmen"
   text 0,204,"SET PARTICLE SPEED:  Mit Backshift(erhöhen) und Enter(erniedrigen) bestimmen"
   text 0,240,"SET PARTICLE FLOOR:  Mit +(auf 1 setzen) und #(auf 0 setzen) bestimmen"
   text 0,276,"POSITION PARTICLES: Mit der Maus Partikel bewegen, und mit 0, 1, 2 und 3 , die Schnelligkeit bestimmen"
   text 0,324,"Partikelpositionsgeschwindigkeit : "
   text 0,348,"ROTATE PARTICLES: Mit W (X-Achse), D (Y-Achse) und Q (Z-Achse) Partikelobjekt drehen"
   text 0,360,"Mit Space + W (X-Achse), D (Y-Achse) und Q (Z-Achse) Partikelobjekt in die andere Richtung drehen"
   text 0,420,"HIDE/SHOW PARTICLES: Mit LShift(Zeigen) und LStrg(Verstecken) die Sichtbarkeint des Partikelobjektes regeln"
   text 0,456,"POSITION PARTICLE EMISSIONS: Mit  H (X-Achse), R (Y-Achse),T (Z-Achse) die Partikelemissionen verschieben"
   text 0,468,"Mit B + H (X-Achse), R (Y-Achse),T (Z-Achse) die Partikelemissionen in die negative Richtung verschieben"

   ` Befehle hervorheben
   ink rgb(0,255,0),0

   text 0,24,"SET PARTICLE VELOCITY"
   text 0,60,"SET PARTICLE GRAVITY"
   text 0,96,"SET PARTICLE EMISSIONS"
   text 0,132,"SET PARTICLE LIFE"
   text 0,168,"SET PARTICLE CHAOS"
   text 0,204,"SET PARTICLE SPEED"
   text 0,240,"SET PARTICLE FLOOR"
   text 0,276,"POSITION PARTICLES"
   text 0,348,"ROTATE PARTICLES"
   text 0,420,"HIDE/SHOW PARTICLES"
   text 0,456,"POSITION PARTICLE EMISSIONS"

   ink rgb(255,255,255),0

   ` Bild abspeichern
   get image 3,0,0,1024,1024
   sprite 1,0,0,3

return

`    Tastur, Maus abfragen
` ----------------------------
instreamabfrage:

   ` Abfragen ob eine Taste gedrückt wird (jeden zweiten Durchgang, damit es besser zu Steuern ist)
   inc a : a = a and 1
   if a=1

      ` Partikel Velocity
      if upkey()=1 then inc particle_velocity#,0.5
      if downkey()=1 and particle_velocity#>0.5 then dec particle_velocity#,0.5

      ` Partikel Gravity
      if rightkey()=1 then inc particle_gravity#,0.5
      if leftkey()=1 then dec particle_gravity#,0.5

      ` Partikel Emissions
      if keystate(78)=1 then inc particle_emissions#,1
      if keystate(74)=1 and particle_emissions#>0 then dec particle_emissions#,1

      ` Partikel Life
      if keystate(201)=1 then inc particle_life#,2.5
      if keystate(209)=1 and particle_life#>2.5 then dec particle_life#,2.5

      ` Partikel Chaos
      if keystate(54)=1 then inc particle_chaos#,1.5
      if keystate(157)=1 then dec particle_chaos#,1.5

      ` Partikel Speed
      if keystate(14)=1 then inc particle_speed#,0.0009765625
      if keystate(28)=1 and particle_speed#>0 then dec particle_speed#,0.0009765625

      ` Partikel Floor
      if keystate(27)=1 then particle_floor#=1
      if keystate(43)=1 then particle_floor#=0

      ` Partikel Rotate
      if keystate(17)=1 then inc particle_rot_x#,1.5-(spacekey()*3.0)
      if keystate(32)=1 then inc particle_rot_y#,1.5-(spacekey()*3.0)
      if keystate(16)=1 then inc particle_rot_z#,1.5-(spacekey()*3.0)
      particle_rot_x#=wrapvalue(particle_rot_x#)
      particle_rot_y#=wrapvalue(particle_rot_y#)
      particle_rot_z#=wrapvalue(particle_rot_z#)

      ` Partikel hiding
      if keystate(42)=1 then particle_visible=1
      if keystate(29)=1 then particle_visible=0

      ` Partikel Emissionen
      if keystate(35)=1 then inc particle_emissions_x#,2.5-(keystate(48)*5.0)
      if keystate(19)=1 then inc particle_emissions_y#,2.5-(keystate(48)*5.0)
      if keystate(20)=1 then inc particle_emissions_z#,2.5-(keystate(48)*5.0)

   endif

   ` Die Mausposition abfragen, um die Partikel zu bewegen

      ` Die Schnelligkeit bestimmen
      if keystate(11)=1 then particle_positionspeed#=0
      if keystate(2)=1 then particle_positionspeed#=1
      if keystate(3)=1 then particle_positionspeed#=2
      if keystate(4)=1 then particle_positionspeed#=3

      ` Die Variable "particle_positionspeed#" verändern
      inc particle_x#,mousemovex()/(2/particle_positionspeed#)
      inc particle_y#,-mousemovey()/(2/particle_positionspeed#)
      inc particle_z#,mousemovez()/(2/particle_positionspeed#)/8

return

`       Partikelsetup
` -------------------------
partikelsetup:

   ` Die Partikel nach den eingegeben Werten verändern
   set particle velocity 1,particle_velocity#
   set particle gravity 1,particle_gravity#
   set particle emissions 1,particle_emissions#
   set particle life 1,particle_life#
   set particle chaos 1,particle_chaos#
   set particle speed 1,particle_speed#
   set particle floor 1,particle_floor#
   position particles 1,particle_x#,particle_y#,particle_z#
   rotate particles 1,particle_rot_x#,particle_rot_y#,particle_rot_z#
   if particle_visible=1 then show particles 1 else hide particles 1
   position particle emissions 1,particle_emissions_x#,particle_emissions_y#,particle_emissions_z#

return

`    Ändernde Erläuterungen
` ----------------------------
Aendernde_Erlaeuterungen:

   ` Ändernde Erläuterungen
   text 0,0,"FPS : "+str$(screen fps())
   text 0,36,"Particle Velocity : "+str$(particle_velocity#)
   text 0,72,"Particle Gravity : "+str$(particle_gravity#)
   text 0,108,"Particle Emissions : "+str$(particle_emissions#)
   text 0,144,"Particle Life : "+str$(particle_life#)
   text 0,180,"Particle Chaos : "+str$(particle_chaos#)
   text 0,216,"Particle Speed : "+str$(particle_speed#)
   text 0,252,"Particle Floor : "+str$(particle_floor#)
   text 0,288,"Partikelposition X : "+str$(particle_x#)
   text 0,300,"Partikelposition Y : "+str$(particle_y#-225)
   text 0,312,"Partikelposition Z : "+str$(particle_z#+750)
   text 0,324,"Partikelpositionsgeschwindigkeit : "+str$(particle_positionspeed#)
   text 0,372,"Partikelrotation X : "+str$(particle_rot_x#)
   text 0,384,"Partikelrotation Y : "+str$(particle_rot_y#)
   text 0,396,"Partikelrotation Z : "+str$(particle_rot_z#)
   if particle_visible=0
      text 0,432,"Partikelobjekt nicht sichtbar"
   else
      text 0,432,"Partikelobjekt sichtbar"
   endif
   text 0,480,"Partikelemissionen X : "+str$(particle_emissions_x#)
   text 0,492,"Partikelemissionen Y : "+str$(particle_emissions_y#)
   text 0,504,"Partikelemissionen Z : "+str$(particle_emissions_z#)

return