Anwendungsbeispiel für Types von ???
[code:1:7484255fa7]
;_________________
;Anwendungsbeispiel TYPEN: Paralaxes Sternenfeld
;------------------
;von Ludwig Auer 2002


;Standard Grafikbefehle:
Graphics 800,600,16,1
SetBuffer BackBuffer()

;Also, wo fangen wir an? Types sind wie
;du sicher irgendwo schonmal gelesen hast
;Dynamische Arrays...
;Ich zeigs dir jetzt mal an dem Beispiel Paralax Sternenfeld!
;Am anfang musst du dir überlegen was ein einzelner Stern alles für verschiedene
;Werte benötigt... Dabei wirst du zu diesem Ergebnis kommen:

;1. X Position
;2. Y Position
;3. Eine bestimmte Geschwindigkeit
; die an die Farbe gekoppelt ist
; also je dunkler(dh. weiter entfernt)
; der stern ist, umso langsamer ist er
; auch.

;Soweit sogut. Um diese Variabeln jetzt
;aber nicht nur für einen einzelnen Stern zu nutzen gibt es 2 Möglichkeiten:
;DIM und TYPE!!!

;Und mit Types geht das so:

;1.Schritt:
;Du sagst ihm dass du diese 3 sachen von oben (also x,y,und speed/color)
;als sog. Felder verwenden möchtest. Das geht mit den Befehlen Type und End Type

Type sternvariabel
Field posx
Field posy
Field speed_col
End Type

;Nun kannst du posx,posy,speed_col mit sovielen anderen Komponenten verbinden wie du willst.
;darauf gehe ich gleich noch ein:
;Man sucht sich nun eine Komponente aus:
;Nennen wir sie einfach STAR

;Um diese Komponente zu erschaffen musst du das hier machen, den 2.Schritt:
;Er macht dabei 500 Sterne; also 500 Pakete die alle
;diese 3 Variabeln von oben enthalten, denen aber unterschiedliche Werte zugeteilt werden.

For i=1 To 500
star.sternvariabel=New sternvariabel
starposx=Rnd(0,800)
starposy=Rnd(0,600)
starspeed_col=Rnd(2,8)
Next

;OK dann mal weiter:

;1.New:

; ist dazu da um dem Rechner zu sagen das du mit der Komponente Star alle Sternvariabeln
; benutzen möchtest. Das kommt dir vielleicht komisch vor: Da würde er doch jedesmal
; die Starposx,StarPosy durch den neuen Rnd wert ersetzen...!? Macht er aber nicht,
; weil BB verwaltet Typefelder automatisch!! Also er merkt sich im Prinzip von Selbst
; noch was dazu um die verschiedenen Stars voneinander zu unterscheiden.

; Ich kann dir dazu die Bilder auf der blitzbase.de Onlinehilfe empfehlen: Unter TYPE
; das erste Bild bei new...

;2. Dieses komische "" :
; Das war das, was mich am Anfang am meisten iritiert hat. Aber es muss sein:
; Du benutzt Variabeln die eigentlich genauso wie DIM variabeln funktionieren:
;
; for i= 1 to 10
; alien_x(i)=rnd(0,10)
; next

; Bei Types ist das halt dann so: alienx=rnd(0,10)
; (um das dann wieder auszulesen reicht aber nicht nur for, man braucht each.
; Das kommt aber gleich)

;3. Die For-schleife
; Sie macht es, dass 500 neue Paket mit allen sternvariablen erschaffen werden. Der
; PC hängt jedesmal wieder eins hinten an (Wie dus an dem Bild auf Blitzbase siehst).


;sooo, nun kommen wir zum 3. und letzten Schritt:
;Und der passiert in der Hauptschleife des Programms.
;Hier muss erledigt werden:

; - Alle Sterne weiterbewegen um die Geschwindigkeit
; - Alle Sterne in verschiedenen Farben einzeichnen
; - Wenn sterne aus dem Bildschirm draussen sind wieder nach oben setzen

; OK also dann schreib ich es erstmal auf, und erklärs dann:

While Not KeyHit(1)
Cls

For star.sternvariabel=Each sternvariabel
starposy=starposy+starspeed_col
Color starspeed_col*30,starspeed_col*30,starspeed_col*30
Plot starposx,starposy
If starposy>600 Then starposy=0
Next


Flip
Wend


;1. for star.sternvariabel=each sternvariabel
; Das Star.sternvriabel sagt ihm zuerst welche variabeln er benötig um dann später,
; mit each in der Forschleife (anstatt einfach Zahlen durchzuzählen)
; jedes dieser Vorher erschaffenen Pakete, mit ihren speziellen Wertzuweisungen,
; zu verändern.
; D.H. Beim ersten Schleifendurchlauf verändert er nur die Werte des ersten Pakets,
; beim 2. nur die des 2. Pakets.

;Der Rest, was in dieser Schleife Passiert dürfte dir eigentlich klar sein.


;-----------
; star??? ;
;----------;

;----------;
; star??? ;
;----------;

;----------;
; star??? ;
;----------;


;Das sind jetzt 3 dieser Pakete, alle enthalten Starposx,Starposy,Starspeed_col
;Der PC merkt sich dann warscheinlich noch automatisch eine Zahl dazu, damit er sie
;nicht verwechselt.


;Zusammenfassend:

;1.Schritt:Felder defininieren, die du für deine "Pakete" brauchst.
;2.Schritt:Pakete erschaffen und zufällige Werte reinhauen.
;3.Schritt:Alle Pakete auslesen, und seine Werte verändern.
[/code:1:7484255fa7]

EDIT:
Oh, warum verschoben, ich dachte solche Grundlagen (Das sollte mal so ein Art Tutorial sein) gehören in Faq??? Naja, mir egal, müsst ihr wissen!



Suche:
(unterstützt mySQL Wildcards ala %)
Titel:
Text:
Autor: