Type tut! Von dummies für dummies, Type Tutorial

Übersicht BlitzBasic FAQ und Tutorials

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Dottakopf

Betreff: Type tut! Von dummies für dummies, Type Tutorial

BeitragDi, Sep 25, 2007 12:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Types für Dummies


Hio blitzer !

Dotta hatte mal wieder zu viel zeit, und traut sich ein type tut raus zugeben! Wenns nicht zu gebrauchen ist... freut sich der trash drüber ^^ Cool
Ach ja rechtschreibfehler gelten der allgemeinen belustigung, und verbesserungen sind erwünscht.

also:

Types für Dummies von Dummies !

Hi in diesem tut versuche ich euch die types und ihr unglaubliches potenzial näher zu bringen.
Ich werde dies anhand von kleinen herabfallenden Bällen demonstrieren, welche verschiedene
Farben, Geschwindigkeiten und Größen aufweisen. (ganz unten Beispiel)

Gleich mal vorab, ich bin in diesem tut nicht auf alles extrem genau eingegangen, es soll als kleine
basis dienen auf die dann weiter aufgebaut wird.

Was sind types und was machen die überhaupt ????
Ein type ist eine art Variable die mehrere werte/Eigenschaften in sich vereinen kann.
Mit ihnen lassen sich Horden von Soldaten oder z.B. zig tausende Sterne gleichzeitig
kontrollieren. Und jeder dieser Sterne oder Soldaten hat seine Eigenarten(Größe, Farbe,
Geschwindigkeit etc.) und diese kontrolliert/berechnet der type für jedes einzelne Objekt
das auf dem Bildschirm gemalt wird.

und wie macht das der type ????
Nun ja zuerst muss der type wissen, was er überhaupt darstellt(ein Stern oder ein Soldat?).
Und dann möchte er wissen was für Eigenschaften er hat(Farbe usw.). Wenn das geschehen ist,
ist der type "festgelegt". Blitzbasic weis nun das es diesen type gibt.
Dieses festlegen des types muss vor der Main-schleife geschehen.


So, wollen wir nun mal einen type festlegen und ihm einige Eigenschaften zuweisen.
- einen "ball type" festlegen und ihm Eigenschaften zuweisen -

also zuerst sagen wir blitzbasic, dass wir einen type haben wollen der "ball" heißt:

Code: [AUSKLAPPEN]


type ball



und jetzt geben wir dem "type ball" seine Eigenschaften(farbe,größe,fall_geschwindigkeit,x koord, y koord)
das macht man mit dem befehl "field", also :
Code: [AUSKLAPPEN]


field farbe
field größe
field speed
field ball_x
field ball_y



und jetzt da alles im type festgelegt wurde, muss man noch bb sagen, das der type hier endet
also:
Code: [AUSKLAPPEN]


end type



Zusammen gesetzt sieht das dann so aus:
Code: [AUSKLAPPEN]


type ball
 field farbe
 field größe
 field speed
 field ball_x
 field ball_y
end type



tata ! ein type wurde festgelegt. Zur Erinnerung dies muss immer vor der schleife geschehen




Ok der erste teil des types ist fertig, jetzt weis bb schon einmal das irgendwann mal ein type
verwendet wird, der "ball" heißt, und jeder einzelne ball die Eigenschaften farbe,größe usw.
hat. Überhaupt bestehen die types im groben nur aus 3 teilen.

1. festlegen, welche Eigenschaften hat er ?
2. erstellen und werte zuweisen. welche farben? welche größen?
3. den Type "etwas machen lassen" in unserem Beispiel soll er einfach nur fallen

Ok Punkt 1 ist erledigt, wenden wir uns Punkt 2 zu, dem erstellen/setzten des types.
Damit bb versteht, dass wir jetzt einen type ansprechen wollen, muss ich ihm ein "Zeichen" dazu geben.
Das ist eine spezielle Syntax die dann so aussieht:

Wenn ich den kompletten "ball" type ansprechen will, brauche ich diese Syntax:

Code: [AUSKLAPPEN]


      info.ball



wenn ich jetzt aber nur eine "Eigenschaft" des types ansprechen will, muss statt dem "." ein "\" her also:

Code: [AUSKLAPPEN]


      info\farbe



Für das Wort "info" kann man schreiben was mal will, zb. type1\eingenschaft oder lol.type_name
Ich Persönlich benutze "info" weil ich dann genau weis, dass dies in meinem code für einen type steht.
Was ihr für "info" hinschreibt ist euch überlassen. Jedoch müsst ihr beachten, dass dies immer nur für einen typ gilt. Beim 2ten müsst ihr euch ein anderes wort ausdenken. Das Wesentliche ist einfach nur, dass du dir merkst, ein " . " steht für den type selbst und ein " \ " für seine Eigenschaften(felder).


Um das ganze etwas zu entwirren, zeige ich mal wie das auszusehen hat, wenn man einen type erstellt:

1. den type ansprechen und sagen, "das wird ein neues type_objekt auf dem Bildschirm"
2. type_eigenschaften werte zuweisen




In bb hat das dann so auszusehen:
Code: [AUSKLAPPEN]

info.ball = new ball         ;erstellt einen neuen ball

    info\farbe = rnd(0,255)    ;farbe wird ein zufalls-farbwert von 0 - 255 zugewiesen
    info\größe = rnd(1,5)       ;eigenschaft größe wird zufällig bestimmt
    info\speed = rnd(2,4)
      info\ball_x = rnd(0,800)     ;irgendwo auf dem bildschirm spawnen lassen
      info\ball_y = -5             ; -5 da spawn aussehrhalb der sichtweite stattfinden soll


Also noch mal, was ist da jetzt geschehen ?
zu erst wird ein type erstellt. (info.ball = new ball)
und dann bin ich alle type Eigenschafen durchgegangen die ich oben zuerst festgelegt habe, und habe ihnen
werte zugewiesen.
Jetzt ist der type fertig erstellt, man muss nur noch damit irgendetwas machen.



Bevor wir uns jetzt aber auf das nächsten punkt stürzen, hier noch mal eine zusammen Fassung:

types werden immer vor der schleife festgelegt !

Code: [AUSKLAPPEN]


type ball              ;so heißt der type

 field farbe           ;das sind seine eigenschaften
 field größe
 field usw

end type               ; type fertig definiert



Wenn ein type öfter erstellt werden muss, zb. mehrere Bälle, laser_schüsse, Soldaten was weis ich, dann muss das erstellen in einer schleife stattfinden, ist ja logisch.
Code: [AUSKLAPPEN]


repeat ;schleife

  wenn irgendwas passiert dann ---> erstelle type auf bildschirm

          info.ball = new ball              ;type erstellt
             
               info\farbe = rnd(0,255 )           ;seinen eigenschaften werte zuweisen
               info\größe = rnd(1,3)
               usw

until keyhit(1)                           ;ende schleife



jetzt werden die Bälle aber noch ohne zeitlichen abstand erstellt, und wenn man das so lassen würde, würde es ziemlich
aufm Monitor abgehen^^

also noch schnell ein Timer eingebaut der für eine schön gleichmäßige Verteilung sorgt:
Code: [AUSKLAPPEN]


counter = counter +1   ; der timer
   
      if counter >15 then   ;wenn timer = 15 dan ball erstellen
         counter = 0
 
    info.ball = new ball              ;type erstellt
             
               info\farbe = rnd(0,255)            ;seinen eigenschaften werte zuweisen
               info\größe = rnd(1,3)
               usw
       end if



Gut. jetzt wenn man des testen würde, würde nichts passieren...
Der wichtigste und letzte punkt fehlt noch "der mach was mit jedem einzelnen ball - punkt"
In diesem abschnitt wird dass fallen berechnet und der type als ein ball(oval) gezeichnet.
Sobald der ball den unteren Bildschirm Rand erreicht, wird dieser wieder gelöscht.

also wie jetzt???
Zuerst müssen wir bb klarmachen, dass wir jetzt alle Bälle, die erstellt wurden, ansprechen wollen und
sie nach unten plumpsen lassen wollen. Also sprechen wir erstmal alle Bälle an. ---> den "ball" type in dem
ja alle Bälle gespeichert sind, egal welche Farbe und Geschwindigkeit sie gerade haben.

Das Schlüsselwort zum ansprechen aller Bälle die im Typ gespeichert sind heist : EACH

Also :
Code: [AUSKLAPPEN]


   For info.ball = each ball              ;each also JEDER ball
 
        info\ball_y = info\ball_y + info\speed     
                               
              oval info\ball_x,info\ball_y,info\größe,info\größe      ;bewegen
               if info\ball_y >600 then delete info.ball              ;löschen
                                
   next                                                             



Um kurz noch den befehl "delete" anzusprechen. Dieser befehl löscht einen eintrag, so wie es der name
ja bereits verrät. Wenn man jetzt ein einzelnes type objekt löschen will( einen ball ), muss man das schreiben:

- löscht ein einzelnes Objekt -
Code: [AUSKLAPPEN]


          delete info.ball



und wenn man alle löschen möchte:

- löscht alle Objekte
Code: [AUSKLAPPEN]


          delete each ball



Hinweis:
Nach einem delete befehl darf der type nicht mehr angesprochen werden. Weil sonst die fehlermeldung
"objekt does not exist" erscheint. Ist ja klar... du löscht den ball, willst dann aber das er etwas macht.

Also sowas wird niemals klappen :
Code: [AUSKLAPPEN]


 delete info.ball
 info\ball_y = info\ball_y + 3       ;FALSCH ! dieses objekt wurde ja gerade gelöscht




schön ! soweit fertig. verstanden hat es eh keiner auf Anhieb, weil das wäre sonst ein wunder ^^
Hier zum angucken und rumbasteln der lauffähige Code des ball progis.


Das Ball Progi. Es ist nichts großartiges, aber es enthält viele basics. Wer dies beherrscht, kann sich dann ja mal
an ein space shooter ranmachen. Vom Prinzip her genau das selbe.

Beispiel 1

Code: [AUSKLAPPEN]

Graphics 800,600,16,2
SetBuffer BackBuffer()

;wird später zum ball erstellen benötigt (timer)
Global counter


;das ist der ball type mit seinen "feldern"(eigenschaften)
Type ball
 Field farbe
 Field grosse
 Field speed
 Field ball_x
 Field ball_y
End Type



;main  schleife -------------------------
Repeat
Cls

  balle_erstellen()
  balle_machen_lassen()
   

Flip
Until KeyHit(1)
;---------------------------------------


;hier werden die balle in zeilichen abständen erstellt
Function balle_erstellen()

 counter = counter +1
   
       If counter >= 15 Then
          counter = 0
 
            info.ball = New ball                   ;ball erstellen
               info\farbe = Rnd(0,255)             ;eigenschaften werte zuweisen
               info\grosse = Rnd(2,9)
               info\speed = Rnd(1,4)
                info\ball_x = Rnd(0,800)
                info\ball_y = -5
        End If



End Function




Function balle_machen_lassen()

      For info.ball = Each ball                     ;alle bälle ansprechen
      
           info\ball_y = info\ball_y + info\speed   ;alle bälle nach unten
      
            Color info\farbe,100,50: Oval info\ball_x , info\ball_y , info\grosse , info\grosse ;farbe von ball und ball erstellen
       
               If info\ball_y >600 Then Delete info.ball ;unten angekommen ball löschen
      Next
      

End Function



Beispeil 2

Code: [AUSKLAPPEN]

;mit linker maustaste "partikel" types erstellen

Graphics 800,600,32,2
SetBuffer BackBuffer()

;globals
Global counter
Global speed_x#
Global speed_y#


;types
Type partikel
   Field px#         
   Field py#
   Field p_live      ;lebenszeit eines partikels
   Field p_speedX#   
   Field p_speedY#
End Type



;main------------------------------------
Repeat
Cls

   speed_x = MouseXSpeed() ;übernimmt den mausspeed für den partikel
   speed_y = MouseYSpeed()

         create_partikel()
        update_partikel()



Flip
Until KeyHit(1)
;-------------------------------------



Function create_partikel()


     
      If MouseDown(1) Then counter = counter +1

       If counter >= 5 Then
          counter = 0

         info.partikel = New partikel
         info\px = MouseX()
         info\py = MouseY()
         info\p_live = Rnd(80,120)
         info\p_speedX = speed_x ;mausspeed übergeben
         info\p_speedY = speed_y
         
      End If
         




End Function




Function update_partikel()


        For info.partikel = Each partikel
   
         info\p_live = info\p_live -1       ;partikel lebenszeit verkürzen
         
         info\px = info\px + info\p_speedX
         info\py = info\py + info\p_speedY
         
         
         Rect info\px,info\py,10,10,1       ;"Partikel" malen
         
         If info\px <0 Or info\px >800 Or info\py <0 Or info\py > 600 Or info\p_live <0 Then
           Delete info.partikel             ;löschen
         End If
         
      Next



End Function



Testet euch selbst ! Aufgabe zu Beispiel 2
- Verpasse jedem der rechtecke eine andere zufällige farbe
- Es sollen verschieden große Rechtecke erstellt werden
- bau eine simple gravitation ein, welche die rechtecke nach unten zieht.


Wie schon zu beginn gesagt, Verbesserungsvorschläge sind gern gesehen und bestimmt auch vorhanden.

mfg Dottakopf
  • Zuletzt bearbeitet von Dottakopf am Sa, Dez 11, 2010 23:38, insgesamt 21-mal bearbeitet

d-bug

BeitragDi, Sep 25, 2007 12:44
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.

Dieses Tutorial hat sowas von gar nichts mit BlitzMax zu tun...

Du solltest das Tutorial mal durch eine Rechtschreibprüfung laufen lassen. Wink
Ich hab ja nichts dagegen, wenn es in einem Post nur so von Fehlern
wimmelt, aber bei einem Tutorial macht sich das gar nicht gut.

cheers

Dottakopf

BeitragDi, Sep 25, 2007 13:11
Antworten mit Zitat
Benutzer-Profile anzeigen
woa sry mit dem falsch post ^^ hab wohl a wengle zu schnell gescrollt.
Jo als ich des gestern geschrieben hab wars wohl scho a wengle spät.

mfg Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

BladeRunner

Moderator

BeitragDi, Sep 25, 2007 13:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich möchte dich auch dringenst bitten dein Tutorial in der Rechtschreibung massiv zu überarbeiten. Du meinst es gut und hast viel Arbeit investiert, aber das wird durch die Rechtschreibung zunichte gemacht.
Bälle werden gespawned, nicht gespornt, so als Beispiel.
Und eines musst du mir noch erklären: Seit wann weiss man wenn man info.irgendwas liesst dass es sich um einen Type handelt ? und wie machst Du das wenn du 2 verschiedene Types hast? Ein 2es Type wird hier ein "Variable Type Mismatch" liefern. Diese gezielte Falschinformation solltest Du noch korrigieren.

Also nochmal: Bitte mach das ganze (zumindest fast) fehlerfrei, damit es den Qualitätsansprüchen hier genügt - es wäre schade das Tut entsorgen zu müssen nur weil die Präsentation Macken hat.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Dottakopf

BeitragDi, Sep 25, 2007 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
ok ok,

das problem ist nur, dass ich gerade in der arbeit sitz und da etz ned soviel zeit hab diesen text zu korrigieren.

Hmm das mit "info.blup" hab ich wohl zu sehr von mir auf andere schlussgefolgert....
Für mich persönlich, in meinen codes, ist info ein klares type anzeichen. Und wenn halt zwei types sind dan mach ich da info2. draus.

Jaja schimpft nur, dass das schlecht und "böse" ist, für mich ist das aber selbstverständlich und ich arbeite auch so schon eine ganze weile.

Ich bin halt kein rechtschreib genie... aber ich werd mich drum kümmern !
Dabei wird auch der sachliche inhalt nich zu kurz kommen.

mfg Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!
  • Zuletzt bearbeitet von Dottakopf am Mi, Sep 26, 2007 7:33, insgesamt 2-mal bearbeitet

BladeRunner

Moderator

BeitragDi, Sep 25, 2007 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Niemand sagt es sei schlecht oder böse - es ist nur nicht die Konvention als die Du es verkaufst. Und Du hast in deinem Tut eben auch die Tatsache unterschlagen dass man bei mehreren Types einen veränderten Namen braucht. Da Du dein Tut für Beginner geschrieben hast wäre das aber eine wichtige Info.
Das ist ja kein Anschiss, es ist konstruktive Kritik - besser die genannten Punkte noch nach (muss ja nicht innerhalb 5 Minuten sein) und Du hast ein schönes Tutorial geschaffen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

mabox

Betreff: Hi Dottakopf

BeitragDi, Sep 25, 2007 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich finde das Tutorial sehr gut! ich kannte mich vorher noch fast nicht mit Types aus und habs schon beim ersten mal lesen verstanden. Großes Lob!

mfg
Maurits
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage

Dottakopf

BeitragMi, Sep 26, 2007 8:02
Antworten mit Zitat
Benutzer-Profile anzeigen
danke hört man gerne !

Wenn einer noch irgendwelche sachlichen fehler findet, oder es stellen gibt die schwer zu verstehen/nachvollziehen sind bitte melden.

meiner meinung nach gehört hier noch mehr type stuff dazu:

type kompakt OH
-Seite nicht mehr vorhanden-

type robsite (bischen scrollen)
http://www.robsite.de/suche.php

Gleich mal thx für feedback !!

mfg Dottakopf
  • Zuletzt bearbeitet von Dottakopf am Di, März 24, 2009 17:52, insgesamt 2-mal bearbeitet

DAK

BeitragMi, Sep 26, 2007 10:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Nettes tut... eine Kleinigkeit fehlt mir dabei aber (hatte, wie ich mit den Types angefangen hab, kleine Probleme damit): schreib irgend wo rein, das nachdem ein type gelöscht worden ist, keinerlei Anfragen mehr drauf kommen dürfen, also nicht, zb, so:

Code: [AUSKLAPPEN]

for b.ball = each ball
  delete b.ball
  print b\farbe
next
Gewinner der 6. und der 68. BlitzCodeCompo
 

mpcool

BeitragDi, Okt 16, 2007 0:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich finde das Tut auch super, vorher habe ich überhaupt nichtmal gewusst was Types sind, aber jetzt Very Happy

Also großes Lob von mir, egal was die anderen sagen, mir hats geholfen Wink
 

Crossbow

BeitragMi, Jan 02, 2008 23:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Ich würde mich freuen, wenn jemand (der wirklich viel von BB versteht) bestätigen könnte, das nun alle Angaben in dem Tutorial korrekt und verlässlich sind. "Denn einen wackliges Fundeament bemerkt man oft erst spät und kann später zu schwerwiegenden Problemen führen".

Ansonsten möchte ich aber sagen, dass ich es sehr gut finde das ein "Dummie" ein Tutorial für "Dummies" schreibt, da ein "Dummie" eher auf Dinge eingeht die für einen Profi selbstverständlich sind. Diese Erfahrung habe ich auch im Französischunterricht in der Schule gemacht: Die ersten 2 Lehrer die ich hatte, hatten Französisch als Muttersprache. Bei diesen 2 Lehrern lernte man kaum etwas. Die nächsten 2 hatten Deutsch als Muttersprache und bei ihnen lernte man viel mehr.

MfG Sämi

Silver_Knee

BeitragDo, Jan 03, 2008 0:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Fehler sind mir keine aufgefallen. kannst ja nochmal alles mit mienem Schnellkurs vergleichen sollte irgendwas nicht übereinstimmen müssen wir nochmal kuken haben sollte aber nicht sein

Lunatix

BeitragDo, Jan 03, 2008 0:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun, ich würde sagen, in dem Tutorial sind keine Fehler enthalten.

Jedoch wäre es besser, wenn du die ganzen "Schnell, schnell" Code Beispiele etwas abänderst, das viele "Blup" und "Blap" ist in einem guten Tutorial einfach fehl am Platze, meiner Meinung nach. Auch würde ich anstatt "Info" eher eine Variable verwenden, die etwas mit der Klasse zu tun hat.
Auch fehlt die Info, das Types immer mit einem "T" beginnen sollten. Noch dazu ist ein "Type" kein wirklicher dahingesagter "Type", vielmehr sollte dem Benutzer vermittelt werden, das es eine "Klasse" ist. (Finde es ehrlich gesagt ein wenig doof, das es unbedingt "Type" sein muss... Class wäre viel selbsterklärender)

Ein kleiner Beispiel code:

Code: [AUSKLAPPEN]
Type TBall
  Field x%, y%
  Field Color%
  Field xspeed#,yspeed#
  Field size#
  Field id%
End Type

SeedRnd MilliSecs()

Graphics 640,480,32,2
SetBuffer BackBuffer()


For i% = 0 To 25
   Local ball.TBall = New TBall
   ball\xspeed = Rnd(-2.5,2.5)
   ball\yspeed = Rnd(-2.5,2.5)
   ball\size = Rand(5,15)
   ball\Color = Rand($0000ff,$ffffff)
   ball\id = i
   ball\x = GraphicsWidth()/2
   ball\y = GraphicsHeight()/2
Next



Local txt$,rem%

While Not KeyHit(1)

  For ball.TBall = Each TBall
    If OutOfRange(ball\x,ball\y)
      txt = "Ball "+ball\id+" was removed!"
      Delete ball
      rem = True
    EndIf

    If Not Rem
      ball\x = ball\x + ball\xspeed
      ball\y = ball\y + ball\yspeed
      Color 0,0,ball\Color
      Oval ball\x,ball\y,ball\size,ball\size
    EndIf
    Rem=False
  Next
  Color 0,0,$ffffff
  Text 0,0,txt
  Flip
  Cls
Wend
End

Function OutOfRange(x%,y%)
  If x > GraphicsWidth() Or x < 0 Or y > GraphicsHeight() Or y < 0
    Return True
  EndIf
End Function
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

Crossbow

BeitragDo, Jan 03, 2008 1:44
Antworten mit Zitat
Benutzer-Profile anzeigen
@Junkprogger: Jetzt wo du Klasse sagst ist das ganze natürlich total was anderes. Ich hatte auch schon vermutet, dass es sich um etwas dieser Art handelt. Ich kenne die den Begriff Klasse grob von der Sprache C++.

Vieleicht wäre es noch gut wenn jemand sagen könnte ob da Unterschiede zu einer allgemein definierten Klasse bestehen oder nicht?
Das würde endlich Licht ins Dunkle bringen.

MfG Sämi
 

Dreamora

BeitragDo, Jan 03, 2008 1:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Klasse hat damit nichts zu tun. Der da korrektere C / C++ Begriff wäre Struct ("benennungsfähiger Memoryblock")
Eine Klasse würde implizieren, dass man auch methoden / funktionen etc darin unterbringen kann, was man nicht kann.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

ChristianK

BeitragDo, Jan 03, 2008 2:01
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Es gibt keine Zugriffsmodifizierer wie 'private', 'protected' und 'public'. Auf die Member kann von überall zugegriffen werden.

2. Es gibt keine Methoden oder Funktionen innerhalb eines Types.

3. Alle Type-Instanzen werden in einer internen Liste gespeichert, wodurch es möglich ist, mit 'For/Each'-Schleifen und den Schlüsselwörtern 'First', 'Before', 'After' etc. auf die Instanzen zuzugreifen. Das Handle auf das Objekt muss nicht zwangsweise in einer Variable gespeichert werden.

Insgesamt entspricht ein Type also eher einer Struktur als einer Klasse ( C++ ).

Edit: Langsamer, aber ausführlicher. Razz
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

Lunatix

BeitragDo, Jan 03, 2008 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, das war ein kleiner Denkfehler, klar meinte ich Struktur, jedoch ist "Klasse" ein besserer Begriff um etwas damit Anfangen zu können als Anfänger.
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

Dreamora

BeitragDo, Jan 03, 2008 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Eigentlich ja. Das Problem ist wenn man nach "Klasse" googlen würde, würde dies zu massiver Verwirrung führen
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

MikeDee

BeitragMo, Apr 27, 2009 21:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 800,600,0,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()

Local Timer=CreateTimer(60)

Type ball
   Field farbe
   Field groesse
   Field speed
   Field ballx
   Field bally
End Type

Repeat
   Cls
   MS = MilliSecs()   
   If MS-timer>1000 Then
      tball.ball = New ball
      tball\farbe = Rnd(0,255)
      tball\groesse = Rnd(1,5)
      tball\speed = Rnd(2,4)
      tball\ballx = Rnd(0,800)
      tball\bally = -5
      timer=MS
   EndIf
   
   For tball.ball = Each ball
      tball\bally = tball\bally + tball\speed
       Color tball\farbe,100,50
      Oval tball\ballx , tball\bally , tball\groesse , tball\groesse
       If tball\bally >600 Then Delete tball.ball
    Next
      
   WaitTimer Timer
   Flip 0
Until KeyHit(1)
End

geht nicht, warum?
Nicht wenige benutzen die Anonymität des Internets um berühmt zu werden.

Tankbuster

BeitragMo, Apr 27, 2009 22:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Liegt daran, dass du in deiner Schleife eine Variable namens "timer" hast.
Bei Code: [AUSKLAPPEN]
WaitTimer(Timer)
ruft das dann einen Fehler hervor, da "timer" jetzt einen anderen Wert hat, als sie zu Anfang per CreateTimer zugewiesen bekommen hat. Schnell gesagt, wird das Handle des Timers überschrieben.

Aber mit Debug hättest du das doch sicher selbst schnell rausfinden können, wenn die Meldung kommt "Timer does not Exist" Wink
Twitter
Download Jewel Snake!
Windows|Android

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic FAQ und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group