Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

partikel übung, teil eins :)

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Löwenherz



Anmeldungsdatum: 25.08.2008
Beiträge: 86
Wohnort: auf einer sonnigen Insel :)

BeitragVerfasst am: 20.08.2009, 21:01    Titel: partikel übung, teil eins :) Antworten mit Zitat

hallo zusammen lächeln

habe eine kleine Partikel Übung gemacht, die wie folgt aussieht...

Code:

''-- christians partikel übung, part one, 20.august 2009

Const maxpartikel=1500
Const screenw=800                                       
Const screenh=600                                       
   
 
Declare Sub generierepartikels()
Declare Sub berechnepartikels()
Declare Sub zeichnepartikels()
Declare Sub erzeugefarbe()
Declare Sub erzeugesterne()
Declare Sub zeichnesterne()
   
Dim shared gravitation As Single =0.02
Dim shared posx As Integer
Dim shared posy As Integer
Dim shared buttons As Integer

Dim shared farbe As Integer
Dim shared farbe_rot As Integer
Dim shared farbe_gruen As Integer
Dim shared farbe_blau As Integer=255
Dim shared farbefaktor As Integer =15
     
Dim shared zaehler As Integer
Dim shared mousestatus As Integer
Dim shared farbstatus As Integer
   
Type tsterne
    x As Integer
    y As Integer
End Type   

Type tpartikel
    x As Single
    y As Single
    dx As Single
    dy As Single
    groesse As Integer
    winkel As Single
    geschwindigkeit As Single
    farbe As Integer
End Type


Dim shared sterne(100) As tsterne

Dim shared partikel(maxpartikel) As tpartikel
   
    Screen 19, 16, 2, 1
   
    SCREENSET 1, 0

    Randomize Timer

    Dim Im As Byte Ptr
    Im = Imagecreate(SCREENW, SCREENH, RGB(5, 5, 5))
   
   erzeugesterne()
 
Do
       
    GETMOUSE posx, posy,, buttons
   
    If buttons=0 Then
   
     mousestatus=0
     Endif
   
    If mousestatus=0 Then
        If Bit(buttons, 0) Then
            generierepartikels()
            mousestatus=1
            farbstatus=1
        Endif
        If Bit(buttons, 2) Then
            generierepartikels()
            mousestatus=1
            farbstatus=2
        Endif
         If Bit(buttons, 1) Then
            generierepartikels()
            mousestatus=1
            farbstatus=3
        Endif
       
    Endif

    zeichnesterne()
     
    berechnepartikels()
         
    zeichnepartikels()
   
    Put (0,0),im,alpha,5
     
    Locate 1,1,0
    Print "beruehre LinkeMouse/RechteMouse/MittelMouse"
   
   
    SCREENCOPY
 
Loop Until Inkey$=Chr$(27)

Imagedestroy Im

End



Sub generierepartikels()
    Dim x As Integer
   
    For x= 0 To maxpartikel
     
        erzeugefarbe()
        partikel(x).farbe=rgb(farbe_rot,farbe_gruen,farbe_blau)
             
        partikel(x).x=posx
        partikel(x).y=posy
        partikel(x).groesse=Rnd*3+1
        partikel(x).winkel=(Rnd*360)*0.017453293
        partikel(x).geschwindigkeit=Rnd*5+0.1
        partikel(x).dx=Sin(partikel(x).winkel)*partikel(x).geschwindigkeit
        partikel(x).dy=Cos(partikel(x).winkel)*partikel(x).geschwindigkeit
           
    Next
   
End Sub

Sub berechnepartikels()
   
    Dim x As Integer
   
   If farbstatus= 1 Then
        erzeugefarbe()
        farbe=rgb(farbe_rot,farbe_gruen,farbe_blau)
    Endif
   
   
    For x= 0 To maxpartikel
        If farbstatus= 2 Then
            erzeugefarbe()
            farbe=rgb(farbe_rot,farbe_gruen,farbe_blau)
             partikel(x).groesse=1
        Endif
        If farbstatus<3 Then
            partikel(x).farbe=farbe
        Endif
       
        partikel(x).x=partikel(x).x+partikel(x).dx
        partikel(x).y=partikel(x).y+partikel(x).dy
        partikel(x).dy=partikel(x).dy+gravitation
       
     
    Next

End Sub

Sub zeichnepartikels()
    Dim x As Integer
   
    For x= 0 To maxpartikel
        Circle (partikel(x).x,partikel(x).y),partikel(x).groesse,partikel(x).farbe,,,,F
    Next

End Sub

Sub erzeugefarbe()
    If farbe_rot<255 And farbe_gruen =0 And farbe_blau =255 Then farbe_rot=farbe_rot+farbefaktor
    If farbe_rot=255 And farbe_gruen=0 And farbe_blau >0 Then        farbe_blau=farbe_blau-farbefaktor
    If farbe_rot=255 And farbe_gruen < 255 And farbe_blau =0 Then farbe_gruen=farbe_gruen+farbefaktor
    If farbe_rot>0 And farbe_gruen = 255 And farbe_blau =0 Then farbe_rot=farbe_rot-farbefaktor
    If farbe_rot=0 And farbe_gruen = 255 And farbe_blau <255 Then farbe_blau=farbe_blau+farbefaktor               
    If farbe_rot=0 And farbe_gruen >0 And farbe_blau =255 Then farbe_gruen=farbe_gruen-farbefaktor
End Sub
 
Sub zeichnesterne()
    Dim c As Integer
     
    For zaehler =0 To 100
        c=Rnd*255
        If c>127 Then
            Circle  (sterne(zaehler).x,sterne(zaehler).y),Rnd*2,rgb(c,c,c),,,,F
        else
            Circle  (sterne(zaehler).x,sterne(zaehler).y),Rnd*4,rgb(c,c,c)
        Endif
    Next
 
End Sub

Sub erzeugesterne()
    Dim c As Integer
       
    For zaehler =0 To 100
        sterne(zaehler).x=Rnd*SCREENW
        sterne(zaehler).y=Rnd*SCREENH
    Next
 
End Sub



habe ein paar Codezeilen von einer alten partikelübung von mir und von einer unfertigen FB übung abgeändert. Ist schon ein Jahr her. Aber heute kapiere ich das erst wie das mit den Partikeln läuft. Ist noch recht einfach gehalten, aber funzt lächeln

Info: die Aktion müßte mit rechter, linker, mittel Mousetaste gehen. Habe aber nur eine Zweimaustaste, ähem, räusper. grinsen

beste sonnige Grüße, Christian (löwenherz)
_________________
Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz