[B2D] ToeB's BallPhysik

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

ToeB

Betreff: [B2D] ToeB's BallPhysik

BeitragFr, Sep 11, 2009 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bastle grad an einer kleinen BallPhysik für 2D Spiele. Ziel ist es, das sich kreisrunde objecte (egal was auf ihenn gemalt werden soll) sich Physikalisch korrekt verhalten. Man soll diese Engine in beliebigen spielen anwenden können (z.B. Billiard, Minigolf, Pingpong oder anderen sachen).

Meine Engine kann bisher :
Arrow Bälle mit einem beliebigen Radius erstellen
Arrow Bälle mit einer beliebigen Geschwindigkeit bewegen
Arrow Bälle können miteinader Kollidieren (es wird aber die Masse noch nicht berücksichtigt !)
Arrow Gravitation X und Y.
Arrow Bälle festsetzten (also unbeweglich machen) und lösen
Arrow Luftwiederstand


Hier der Download : http://www.toebproductions.de/Blitz/BallPhysik.rar

Und der Code damit die Moderatoren nicht merkern Wink :
BlitzBasic: [AUSKLAPPEN]
Const GRWidth = 800
Const GRHeight = 600

Graphics GRWidth,GRHeight,16,2
SetBuffer BackBuffer()

Type ball
Field midx#,midy#
Field radius#

Field speedx#,speedy#

Field move
End Type

Global GravityY# = 0.0
Global GravityX# = 0
Const AirAcc# = 0.991

Global timer = CreateTimer(60)


CreateBall(200,300,20)
CreateBall(160,280,20)
CreateBall(160,320,20)
CreateBall(120,340,20)
CreateBall(120,300,20)
CreateBall(120,260,20)
CreateBall(500,300,20)

Repeat
If MouseHit(1)
MouseOldX = MouseX()
MouseOldY = MouseY()
MousePress = 1
EndIf
If MousePress = 1
absx# = (MouseOldX-MouseX())
absy# = (MouseOldY-MouseY())
radius# = 20;Sqr(absx*absx+absy*absy)
If MouseDown(1) = 0
MousePress = 0
CreateBall(MouseOLDX,MouseOldY,radius)
EndIf
EndIf
If MouseHit(2)
tmpBall.ball = GetBall(MouseX(),MouseY())
If tmpBall <> Null
tmpBall\move = 0
MousePress = 2
MouseOldX = tmpBall\midx
MouseOldY = tmpBall\midy
EndIf
EndIf
If MousePress = 2
absx# = (MouseOldX-MouseX())
absy# = (MouseOldY-MouseY())
speed# = Sqr(absx*absx+absy*absy)
winkel# = ATan2(absy,absx)
If MouseDown(2) = 0
MousePress = 0
tmpBall\move = 1
MoveBall(tmpBall,-Cos(winkel)*speed/10.0,-Sin(winkel)*speed/10.0)
EndIf
EndIf
If KeyHit(28)
If GravityY = 0
GravityY = 0.1
Else
GravityY = 0
EndIf
EndIf


UpdateBalls(1)
Cls
DrawDebug()
If MousePress = 1
Color 0,255,0
Oval MouseOldX-radius,MouseOldY-radius,radius*2,radius*2,0
ElseIf MousePress = 2
Color 0,0,255
Line MouseOldX,MouseOldY,MouseX(),MouseY()
Line MouseX(),MouseY(),MouseX()+Cos(winkel+30)*15,MouseY()+Sin(winkel+30)*15
Line MouseX(),MouseY(),MouseX()+Cos(winkel-30)*15,MouseY()+Sin(winkel-30)*15
Line MouseX()+Cos(winkel+30)*15,MouseY()+Sin(winkel+30)*15,MouseX()+Cos(winkel-30)*15,MouseY()+Sin(winkel-30)*15
EndIf
Color 255,255,0
Text 0,0,"Maustaste Links (drücken + halten) - Ball erstellen"
Text 0,15,"Maustaste Rechts (drücken + halten) - Ball bewegen"
Text 0,30,"Enter - Gravitation ein/ausschalten ("+(GravityY<>0)+")"
Rect MouseX()-2,MouseY()-2,5,5
WaitTimer(timer)
Flip 0
Until KeyHit(1)
End

Function CreateBall.ball(x_pos#,y_pos#,radius#)
tmp.ball = New ball
tmp\midx = x_pos
tmp\midy = y_pos
tmp\move = 1
tmp\radius = radius
Return tmp
End Function

Function MoveBall(b.ball,speedx#,speedy#)
b\speedx = speedx
b\speedy = speedy
End Function


Function GetBall.ball(x_pos#,y_pos#)
For b.ball = Each ball
absz# = Sqr((x_pos-b\midx)*(x_pos-b\midx)+(y_pos-b\midy)*(y_pos-b\midy))
If absz <= b\radius Return b
Next
Return Null
End Function

Function UpdateBalls(FrameSpeed#=1)
For b.ball = Each ball
;Bälle bewegen
If b\move = 1
b\midx = b\midx + b\speedx * FrameSpeed
b\midy = b\midy + b\speedy * FrameSpeed
b\speedx = (b\speedx * (AirAcc-FrameSpeed/1000)) + GravityX * FrameSpeed
b\speedy = (b\speedy * (AirAcc-FrameSpeed/1000)) + GravityY * FrameSpeed
; b\speedx = b\speedx * AirAcc * FrameSpeed
; b\speedy = b\speedy * AirAcc * FrameSpeed
;Auf rand Prüfen
If b\midx-b\radius < 0 Then
b\midx = b\radius : b\speedx = b\speedx * -0.5
If b\speedx < 0.5 And b\speedx > - 0.5 b\speedx = 0
EndIf
If b\midx+b\radius > GRWidth Then
b\midx = GRWidth-b\radius : b\speedx = b\speedx * -0.5
If b\speedx < 0.5 And b\speedx > - 0.5 b\speedx = 0
EndIf
If b\midy+b\radius > GRHeight Then
b\midy = GRHeight-b\radius : b\speedy = b\speedy * -0.5
If b\speedy < 0.5 And b\speedy > - 0.5 b\speedy = 0
EndIf
If b\midy-b\radius < 0 Then
b\midy = b\radius : b\speedy = b\speedy * -0.5
If b\speedy < 0.5 And b\speedy > - 0.5 b\speedy = 0
EndIf
;Auf Kollison mit anderen Bällen prüfen
For b2.ball = Each ball
If b2 <> b
If RectsOverlap(b\midx-b\radius,b\midy-b\radius,b\radius*2,b\radius*2,b2\midx-b2\radius,b2\midy-b2\radius,b2\radius*2,b2\radius*2)
absx# = (b2\midx - b\midx)
absy# = (b2\midy - b\midy)
absb# = Sqr(absx*absx+absy*absy)
gesb# = b2\radius + b\radius
If absb < gesb
absb = gesb - absb + 1
winb# = ATan2(absy,absx)
newwx# = Cos(winb)
newwy# = Sin(winb)
b\midx = b\midx - newwx * absb
b\midy = b\midy - newwy * absb
b2\midx = b2\midx + newwx * absb
b2\midy = b2\midy + newwy * absb
win_s# = ATan2(b\speedy,b\speedx)
win_ab# = AbsW(winb,win_s)
win_n# = winb + win_ab + 180
abs_n# = Sqr(b\speedx*b\speedx + b\speedy*b\speedy)
win_n2# = Absw(win_s,winb + win_ab)
win_s2# = ATan2(b2\speedy,b2\speedy)
win_ab2# = Sqr(b2\speedx*b2\speedx + b2\speedy*b2\speedy)
b2\speedx = Cos(win_s2)*win_ab2 + abs_n*Cos(winb)*( 1 - Sin( win_n2 ) ) * 0.5
b2\speedy = Sin(win_s2)*win_ab2 + abs_n*Sin(winb)*( 1 - Sin( win_n2 ) ) * 0.5
b\speedx = abs_n * Cos(win_n) * 0.5
b\speedy = abs_n * Sin(win_n) * 0.5
Exit
EndIf
EndIf
EndIf
Next

EndIf
Next
End Function

Function DrawDebug()
For b.ball = Each ball
Color 255,0,0
Oval b\midx-b\radius,b\midy-b\radius,b\radius*2,b\radius*2,0
Color 0,255,0
Plot b\midx,b\midy
Next
End Function

Function AbsW#(win1#,win2#)
If win1 < 180.0 And win1 => 0 Then win1 = 360 + win1
If win2 < 180.0 And win2 => 0 Then win2 = 360 + win2
Return (win1-win2)
End Function


Have fun !

mfg ToeB

P.S: Schreibt bitte was Very Happy !
  • Zuletzt bearbeitet von ToeB am Mo, Sep 14, 2009 17:01, insgesamt einmal bearbeitet
 

da_poller

BeitragFr, Sep 11, 2009 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn 2 bälle zusammenprallen(ball 1 steht ball2 trifft ball1 genau mittig) müsste theoretisch ball 2 stehen bleiben und die gesammte energie an ball 1 übergeben.. tut er aber nicht..

*anmerk*

aber auf den ersten blick schönes stückchen code

ToeB

BeitragFr, Sep 11, 2009 23:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja da sitz ich auch schon die ganze zeit dran... ka muss ich mir nochmal überlegen ... bin jetzt auch einfach zu müde Wink


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

da_poller

BeitragFr, Sep 11, 2009 23:47
Antworten mit Zitat
Benutzer-Profile anzeigen
kräfteparallelogramm is das zauberwort.

spiele selbst pool billard und hab mich damit mal befasst wann wieviel kraft(anteilsmäßig gesehen auf den bällen bleibt) fals du infos zu braucht(und für erweiterungen bezgl effet) einfach PN

ToeB

BeitragMo, Sep 14, 2009 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
So ich habe jetzt eine neue Version. Dank meines Vaters habe ich jetzt endlich eine annäherde Lösung (st nicht perfect, aber was ist schon perfekt Laughing ?). Die lösung ist die das wenn der Ball auf einen anderen ball trifft der Winkel der Beiden Bälle gemessen wird. Dann wird aus dem Speed des Balls "a" ein Winkel gemacht. Diese Beiden winkel werden suptrahiert und dieser Wert gespiegelt, sodas der Ball wie auf einer Fläche apprallt. Der andere Ball bekommt eine Geschwindigkeit in die richtung von dem Winkel der beiden bälle, in bezug auf den Aufprall winkel des Balls a. Ist der winkel z.b. so dass der Ball direct auf den Ball trifft (also BallWinkel = SpeedWinkel) dann übernimmt der Ball b die Hälfte des Speeds und der andere auch. So einfach Very Happy

Hier der neue Code (download oben bleibt so) :
Code: [AUSKLAPPEN]
Const GRWidth = 800
Const GRHeight = 600

Graphics GRWidth,GRHeight,16,2
SetBuffer BackBuffer()

Type ball
   Field midx#,midy#
   Field radius#
   
   Field speedx#,speedy#
   
   Field move
End Type

Global GravityY# = 0.0
Global GravityX# = 0
Const AirAcc# = 0.991

Global timer = CreateTimer(60)


CreateBall(200,300,20)
CreateBall(160,280,20)
CreateBall(160,320,20)
CreateBall(120,340,20)
CreateBall(120,300,20)
CreateBall(120,260,20)
CreateBall(500,300,20)

Repeat
   If MouseHit(1)
      MouseOldX = MouseX()
      MouseOldY = MouseY()
      MousePress = 1
   EndIf
   If MousePress = 1
      absx# = (MouseOldX-MouseX())
      absy# = (MouseOldY-MouseY())
      radius# = 20;Sqr(absx*absx+absy*absy)
      If MouseDown(1) = 0
         MousePress = 0
         CreateBall(MouseOLDX,MouseOldY,radius)
      EndIf
   EndIf
   If MouseHit(2)      
      tmpBall.ball = GetBall(MouseX(),MouseY())
      If tmpBall <> Null
         tmpBall\move = 0
         MousePress = 2
         MouseOldX = tmpBall\midx
         MouseOldY = tmpBall\midy
      EndIf
   EndIf
   If MousePress = 2
      absx# = (MouseOldX-MouseX())
      absy# = (MouseOldY-MouseY())
      speed# = Sqr(absx*absx+absy*absy)
      winkel# = ATan2(absy,absx)
      If MouseDown(2) = 0
         MousePress = 0
         tmpBall\move = 1
         MoveBall(tmpBall,-Cos(winkel)*speed/10.0,-Sin(winkel)*speed/10.0)
      EndIf
   EndIf
   If KeyHit(28)
      If GravityY = 0
         GravityY = 0.1
      Else
         GravityY = 0
      EndIf
   EndIf
      

   UpdateBalls(1)
   Cls
   DrawDebug()
   If MousePress = 1
      Color 0,255,0
      Oval MouseOldX-radius,MouseOldY-radius,radius*2,radius*2,0
   ElseIf MousePress = 2
      Color 0,0,255
      Line MouseOldX,MouseOldY,MouseX(),MouseY()
      Line MouseX(),MouseY(),MouseX()+Cos(winkel+30)*15,MouseY()+Sin(winkel+30)*15
      Line MouseX(),MouseY(),MouseX()+Cos(winkel-30)*15,MouseY()+Sin(winkel-30)*15
      Line MouseX()+Cos(winkel+30)*15,MouseY()+Sin(winkel+30)*15,MouseX()+Cos(winkel-30)*15,MouseY()+Sin(winkel-30)*15
   EndIf
   Color 255,255,0
   Text 0,0,"Maustaste Links (drücken + halten) - Ball erstellen"
   Text 0,15,"Maustaste Rechts (drücken + halten) - Ball bewegen"
   Text 0,30,"Enter - Gravitation ein/ausschalten ("+(GravityY<>0)+")"
   Rect MouseX()-2,MouseY()-2,5,5
   WaitTimer(timer)
   Flip 0
Until KeyHit(1)
End

Function CreateBall.ball(x_pos#,y_pos#,radius#)   
   tmp.ball = New ball
   tmp\midx = x_pos
   tmp\midy = y_pos
   tmp\move = 1
   tmp\radius = radius
   Return tmp
End Function

Function MoveBall(b.ball,speedx#,speedy#)
   b\speedx = speedx
   b\speedy = speedy
End Function


Function GetBall.ball(x_pos#,y_pos#)
   For b.ball = Each ball
      absz# = Sqr((x_pos-b\midx)*(x_pos-b\midx)+(y_pos-b\midy)*(y_pos-b\midy))
      If absz <= b\radius Return b
   Next
   Return Null
End Function

Function UpdateBalls(FrameSpeed#=1)
   For b.ball = Each ball
      ;Bälle bewegen
      If b\move = 1
         b\midx = b\midx + b\speedx * FrameSpeed
         b\midy = b\midy + b\speedy * FrameSpeed      
         b\speedx = (b\speedx * (AirAcc-FrameSpeed/1000)) + GravityX * FrameSpeed
         b\speedy = (b\speedy * (AirAcc-FrameSpeed/1000)) + GravityY * FrameSpeed
      ;   b\speedx = b\speedx * AirAcc * FrameSpeed
      ;   b\speedy = b\speedy * AirAcc * FrameSpeed
         ;Auf rand Prüfen
         If b\midx-b\radius < 0 Then
            b\midx = b\radius : b\speedx = b\speedx * -0.5
            If b\speedx < 0.5 And b\speedx > - 0.5 b\speedx = 0
         EndIf
         If b\midx+b\radius > GRWidth Then
            b\midx = GRWidth-b\radius : b\speedx = b\speedx * -0.5
            If b\speedx < 0.5 And b\speedx > - 0.5 b\speedx = 0
         EndIf
         If b\midy+b\radius > GRHeight Then
            b\midy = GRHeight-b\radius : b\speedy = b\speedy * -0.5
            If b\speedy < 0.5 And b\speedy > - 0.5 b\speedy = 0
         EndIf   
         If b\midy-b\radius < 0 Then
            b\midy = b\radius : b\speedy = b\speedy * -0.5
            If b\speedy < 0.5 And b\speedy > - 0.5 b\speedy = 0
         EndIf   
         ;Auf Kollison mit anderen Bällen prüfen
         For b2.ball = Each ball
            If b2 <> b
               If RectsOverlap(b\midx-b\radius,b\midy-b\radius,b\radius*2,b\radius*2,b2\midx-b2\radius,b2\midy-b2\radius,b2\radius*2,b2\radius*2)
                  absx# = (b2\midx - b\midx)
                  absy# = (b2\midy - b\midy)
                  absb# = Sqr(absx*absx+absy*absy)
                  gesb# = b2\radius + b\radius
                  If absb < gesb
                     absb = gesb - absb + 1
                     winb# = ATan2(absy,absx)
                     newwx# = Cos(winb)
                     newwy# = Sin(winb)
                     b\midx = b\midx - newwx * absb
                     b\midy = b\midy - newwy * absb
                     b2\midx = b2\midx + newwx * absb
                     b2\midy = b2\midy + newwy * absb   
                     win_s# = ATan2(b\speedy,b\speedx)
                     win_ab# = AbsW(winb,win_s)
                     win_n# = winb + win_ab + 180
                     abs_n# = Sqr(b\speedx*b\speedx + b\speedy*b\speedy)
                     win_n2# = Absw(win_s,winb + win_ab)
                     win_s2# = ATan2(b2\speedy,b2\speedy)
                     win_ab2# = Sqr(b2\speedx*b2\speedx + b2\speedy*b2\speedy)
                     b2\speedx = Cos(win_s2)*win_ab2 + abs_n*Cos(winb)*( 1 - Sin( win_n2 ) ) * 0.5
                     b2\speedy = Sin(win_s2)*win_ab2 + abs_n*Sin(winb)*( 1 - Sin( win_n2 ) ) * 0.5   
                     b\speedx = abs_n * Cos(win_n) * 0.5
                     b\speedy = abs_n * Sin(win_n) * 0.5                                          
                     Exit
                  EndIf
               EndIf
            EndIf
         Next
         
      EndIf
   Next
End Function

Function DrawDebug()
   For b.ball = Each ball
      Color 255,0,0
      Oval b\midx-b\radius,b\midy-b\radius,b\radius*2,b\radius*2,0
      Color 0,255,0
      Plot b\midx,b\midy
   Next
End Function

Function AbsW#(win1#,win2#)   
   If win1 < 180.0 And win1 => 0 Then win1 = 360 + win1
   If win2 < 180.0 And win2 => 0 Then win2 = 360 + win2   
   Return (win1-win2)
End Function
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Der Eisvogel

BeitragMo, Sep 14, 2009 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wenn du ie Masse nicht beachtest,dann musst du einfach die Geschwindigkeiten beim aufprall vertauschen.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.
 

n-Halbleiter

BeitragMo, Sep 14, 2009 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Eisvogel hat Folgendes geschrieben:
Also wenn du ie Masse nicht beachtest,dann musst du einfach die Geschwindigkeiten beim aufprall vertauschen.


Und wenn er die Masse beachtet, ist es auch nicht viel schwerer, denke ich. Das Zauberwort hier lautet Impulserhaltung: m1 * v1 = m2 * v2
(Masse1 * Geschwindigkeit1 = Masse2 * Geschwindigkeit2)
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit
Ploing!
Blog

"Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935)

Der Eisvogel

BeitragMo, Sep 14, 2009 17:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Da muss ich dir leider wieder sprechen, den wenn man die Masse bechtet, dann muss man auch die Energie beachten, sonst müsste ein Flummi wenn man ihn an die Wand wirft, einfach runterfallen. Ergo, kommt ein Ball mit kleiner Masse auf einen ruhenden Ball mit großer Masse, so prallt der Ball mit kleiner Masse mit weniger Impuls zurück und der große bewegt sich mit dem Impuls fort, den der kleine Ball verloren hat.
So wie der Flummi von der Wand, nur das man da die Bewgung der Wand nicht sieht.

EDIT: Hier noch ein Link zu Impuls: http://de.wikipedia.org/wiki/Impuls
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

ToeB

BeitragMo, Sep 14, 2009 17:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Also die masse wird erst später berücksichtigt...

Außerdem kann man nicht eifach so die Geschwindigkeiten tauschen (zumindest Programmatisch nicht), da die Geschwindigkeiten auch die Flugrichtung angeben. Auch gilt das mit dem Tauschen nur wenn Ball a genau auf Ball b trifft, streift er ihn beispielsweise nur, dann lenkt Ball a sich nur ein wenig ab und Ball b wird minimal beschleunigt. Sonst würde jetzt Ball a stehen bleiben und Ball b mit hohe geschwindigkeit davon zischen, nicht sehr realistisch .


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Der Eisvogel

BeitragMo, Sep 14, 2009 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Da hste auch recht, man muss auf so vieles achten. Uff
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Silver_Knee

BeitragMo, Sep 14, 2009 18:16
Antworten mit Zitat
Benutzer-Profile anzeigen
hey das wird mir sicherlich helfen thx
 

n-Halbleiter

BeitragMo, Sep 14, 2009 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Eisvogel hat Folgendes geschrieben:
Da muss ich dir leider wieder sprechen, den wenn man die Masse bechtet, dann muss man auch die Energie beachten, sonst müsste ein Flummi wenn man ihn an die Wand wirft, einfach runterfallen. Ergo, kommt ein Ball mit kleiner Masse auf einen ruhenden Ball mit großer Masse, so prallt der Ball mit kleiner Masse mit weniger Impuls zurück und der große bewegt sich mit dem Impuls fort, den der kleine Ball verloren hat.
So wie der Flummi von der Wand, nur das man da die Bewgung der Wand nicht sieht.

EDIT: Hier noch ein Link zu Impuls: http://de.wikipedia.org/wiki/Impuls


In dem Fall hast du Recht, ich meinte eigentlich nur die Kugel-Kugel Kollision. Oder so ähnlich, ich bin mir gerade nicht sicher, was genau passend wäre, da müsste ich jetzt ein wenig überlegen. Wink
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit
Ploing!
Blog

"Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935)

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group