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! |