Frage zu types

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

sbrog

Betreff: Frage zu types

BeitragFr, Mai 14, 2004 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

;zeichnet einen wachsenden Kreis, der immer heller wird, wenn die Maus gedrückt ist

Graphics 800,600


kreisgroesse =100  ; der durchmesser
kreis_x  =400      ;die kreismitte
kreis_Y  =300      ;die kreismitte
farbe  = 0


Repeat
Cls

If MouseHit(1)   
   kreis =True
EndIf

If kreis     
   Color farbe,farbe,farbe                                                       ;die Farbe des kreises
   Oval kreis_x-kreisgroesse/2,kreis_y-kreisgroesse/2,kreisgroesse,kreisgroesse,0;der kreis selbst
   kreisgroesse = kreisgroesse+2                                      ;der Kreis wächst


   farbe = farbe +1                                                ;-----------------
   If farbe >255                                                                 ;  Farbenspiel
      farbe =255                                                     ;-----------------
   EndIf
EndIf


Flip
Until KeyHit(1)


wie kann ich diesen Code als Type schreiben, dass mehrere kreise gleichzeitig wachsen ?
Ich habs schon probiert, aber es ist mir nicht gelungen.

[/code]
 

OJay

BeitragFr, Mai 14, 2004 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
ausnahmsweise mal code:

Code: [AUSKLAPPEN]
Graphics 800,600
SetBuffer BackBuffer()  ; <--- niemals vergessen! sonst ist flip nutzlos!

; unser type container
Type Kreise
   Field groesse ; der durchmesser
   Field x      ;die kreismitte
   Field y      ;die kreismitte
   Field farbe
End Type


Repeat 

   ; bei mausklick eine neue instanz erzeugen und mit startwerten füllen
   If MouseHit(1)   
      kreis.kreise = New kreise
      kreis\x = 400
      kreis\y = 300
      kreis\groesse = 100
      kreis\farbe = 0
   EndIf

   ; alle kreise durchgehen und die attribute setzen und kreis zeichnen
   For kreis.kreise = Each kreise
      Color kreis\farbe,kreis\farbe,kreis\farbe                                      ;die Farbe des kreises
      Oval kreis\x-kreis\groesse/2,kreis\y-kreis\groesse/2,kreis\groesse,kreis\groesse,0 ;der kreis selbst
      
      kreis\groesse = kreis\groesse+2 ;der Kreis wächst
      
      kreis\farbe = kreis\farbe +1 ;-----------------
      If kreis\farbe >255          ;  Farbenspiel
         kreis\farbe =255         ;-----------------
      EndIf
      
      ;wenn der kreis eine bestimmte grösse überschreitet, löschen wir die instanz. thema: speicherschonung ;)
      ; sollte immer NACH allen zugriffen auf die instanz erfolgen, da sonst eine zugriffsverletzung auftritt
      If kreis\groesse > 800 Delete kreis
      
   Next

   Flip
   Cls

Until KeyHit(1)


alles wichtige neue ist kommentiert.
schau dir aber bitte die type-tutorials auf blitzbase an, damit das verständnis wächst!
  • Zuletzt bearbeitet von OJay am Fr, Mai 14, 2004 18:43, insgesamt einmal bearbeitet

sbrog

BeitragFr, Mai 14, 2004 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, danke

Ich weiss auch was ich falchgemacht habe.

Ich habe die Farbe als Feld nicht berücksichtigt, sondern direkt in die For...each schleife geschrieben.

Ich hab noch ein

If kreis\groesse>1000
Delete kreis.kreise
EndIf

in die for...each schleife geschrieben

Danke Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group