Ping Pong (prallt nicht richtig ab :( )

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ToeB

Betreff: Ping Pong (prallt nicht richtig ab :( )

BeitragFr, Feb 02, 2007 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics 800,600,16,2:SetBuffer BackBuffer():AppTitle "Ping Pong Classik"

Dim Schlager(2)
Schlager(1) = LoadImage("GFX\SK.png")
Schlager(2) = LoadImage("GFX\SG.png")
Ball = LoadImage("GFX\Ball.png")
MaskImage Ball,255,0,255 
For x = 1 To 2:MaskImage Schlager(x),255,0,255:Next

Global speedx#=0
Global speedy#=1
Global Ball_x#
Global Ball_y#

Repeat
If KeyDown(200) Then sy = sy - 5
If KeyDown(208) Then sy = sy + 5
If Ball_x > 760 Then Ball_x = 760:speedx = speedx *-1
If Ball_y > 560 Then Ball_y = 560:speedy = speedy *-1
speedx = speedx + 1:If speedx > 20 Then speedx = 20
speedy = speedy + 1:If speedy > 20 Then speedy = 20
 
Ball_x = Ball_x + speedx
Ball_y = Ball_y + speedy
DrawImage Schlager(1),1,sy
DrawImage Ball,Ball_x,Ball_y
Flip
Cls
Until KeyHit(1)
End


Also der Prallt zwar ab, aber nicht richtig, der geht immer so im kreis...
Könnte mia jemand helfen (büdde ) ?

Danke und mfg
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!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Feb 02, 2007 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
AppTitle "Ping Pong Classik"

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

Dim Schlager(2)
Schlager(1) = CreateImage(20,100);LoadImage("GFX\SK.png")
Schlager(2) = CreateImage(20,100);LoadImage("GFX\SG.png")
Ball = CreateImage(10,10);LoadImage("GFX\Ball.png")
MaskImage Ball,255,0,255
For x = 1 To 2:MaskImage Schlager(x),255,0,255:Next

Global speedx#=0
Global speedy#=1
Global Ball_x#
Global Ball_y#

speedx=5
speedy=5

Repeat
If KeyDown(200) Then sy = sy - 5
If KeyDown(208) Then sy = sy + 5
If Ball_x < 0 Then Ball_x = 0:speedx = -speedx; *-1
If Ball_y < 0 Then Ball_y = 0:speedy = -speedy; *-1
If Ball_x > 760 Then Ball_x = 760:speedx = -speedx; *-1
If Ball_y > 560 Then Ball_y = 560:speedy = -speedy; *-1
;speedx = speedx + 1:If speedx > 20 Then speedx = 20
;speedy = speedy + 1:If speedy > 20 Then speedy = 20
 
Ball_x = Ball_x + speedx
Ball_y = Ball_y + speedy
DrawImage Schlager(1),1,sy
DrawImage Ball,Ball_x,Ball_y
Flip
Cls
Until KeyHit(1)
End

ToeB

BeitragFr, Feb 02, 2007 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Danke ! aber wie krig ich das hin das der nicht imma den gleichen weg nimmt? (der geht nämlich eine strecke, und danach geht der die wieda zurück und so weiter ... Sad )
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!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Feb 02, 2007 22:05
Antworten mit Zitat
Benutzer-Profile anzeigen
zB dass man mit dem Schläger den Abbprallwinkel beeinflussen kann. Oder man baut noch eine art Drall in den Ball mit ein. Dann würde er auch immer ein anderen Abprallwinkel haben...
 

max

BeitragSa, Feb 03, 2007 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
bei den ecken kann man n kreis machen und dann den abprall winkel mit atan2 berechnen
aber wie man die schlägergeschwindigkeit mit einbeziehen kann?
Code: [AUSKLAPPEN]


Include "utils/keys.bb"

Type ball

   Field x#,y#         ;Koordinaten des Balls
   Field w,h
   Field v            ;geschwindigkeit des balls
   Field dx#,dy#
   
End Type

Type spieler

   Field x#,y#         ;koordinaten
   Field w,h         ;breite,höhe
;   Field r,g,b         ;Farbe
   Field v#,maxv      ;geschwindigkeit
   Field punkte      ;
   Field dy         ;für das Berechen wenn der ball auftrifft
   Field a#         ;beschleunigung

End Type

Global cx_screen      = 500                     ;Bildschirmbreite cx = count x = anzahl der xpixel
Global cy_screen      = 400                     ;Bildschirmhöhe
Graphics cx_screen,cy_screen,16,2
Global ball.ball      = New ball
Global spieler1.spieler   = New spieler
Global spieler2.spieler   = New spieler
Global gameisrunning   = True
Global ende            = False
Global fontnorm         = LoadFont("arial",16)
Global fontgross      = LoadFont("arial",26,1,0,1)
;-----bilder---;
Global sp1img,sp2img,ballimg
;-----timer----;
Global timer         = CreateTimer(60)

SetBuffer BackBuffer()
SeedRnd(MilliSecs())


Repeat

   resetgame()
   While gameisrunning = True
      WaitTimer(timer)
      Cls
      updategame()
      Flip
   Wend

Until ende = True

Function initpict()

   If sp1img Then
      FreeImage sp1img
   EndIf
   sp1img = CreateImage(spieler1\w,spieler1\h)
   SetBuffer ImageBuffer(sp1img)
   Color 255,255,255
   Oval 0,0,spieler1\w,spieler1\w
   Oval 0,spieler1\h-spieler1\w,spieler1\w,spieler1\w
   Rect 0,spieler1\w/2,spieler1\w,spieler1\h-spieler1\w
   ;----Spieler2-----;
   If sp2img Then
      FreeImage sp2img
   EndIf
   sp2img = CreateImage(spieler2\w,spieler2\h)
   SetBuffer ImageBuffer(sp2img)
   Color 255,255,255
   Oval 0,0,spieler2\w,spieler2\w
   Oval 0,spieler2\h-spieler1\w,spieler2\w,spieler2\w
   Rect 0,spieler2\w/2,spieler2\w,spieler2\h-spieler2\w
   ;----ball----;
   If ballimg Then
      FreeImage ballimg
   EndIf
   ballimg = CreateImage(ball\w,ball\h)
   SetBuffer ImageBuffer(ballimg)
   Oval 0,0,ball\w,ball\h
   ;wieder auf den doublebuffer setzen
   SetBuffer BackBuffer()   

End Function

Function resetgame()

   ball\w      = 10
   ball\h      = 10
   ball\x#      = (cx_screen -ball\w)/2      ;mittig positionieren
   ball\y#      = (cy_screen- ball\h)/2      ;
   winkel      = Rnd(-70,70);Rnd(359)
   ball\v      = 7
   If Rnd(1) Then
      ball\dx      = Cos(winkel)*ball\v
   Else
      ball\dx      = -Cos(winkel)*ball\v
   EndIf
   ball\dy      = -Sin(winkel)*ball\v
   ;-----------------------------------
   spieler1\w   = 10
   spieler1\h   = 80
   spieler1\y   = (cy_screen -spieler1\h)/2
   spieler1\x   = 10
   spieler1\v#   = 0
   spieler1\maxv= 8
   spieler1\a#   = .5
   spieler1\punkte   = 0
   ;-----------------------------------
   spieler2\w   = 10
   spieler2\h   = 80
   spieler2\y   = (cy_screen -spieler2\h)/2
   spieler2\x   = cx_screen-30
   spieler2\v#   = 0
   spieler2\maxv= 8
   spieler2\a#   = .5
   spieler2\punkte   = 0
   initpict()

End Function

Function updategame()

   If KeyDown(KEY_UP) Then
      spieler2\v = -spieler2\maxv
   ElseIf KeyDown(KEY_DOWN) Then
      spieler2\v = spieler2\maxv
   Else
      spieler2\v = 0
   EndIf
   If spieler2\v > 0 Then
      spieler2\y = min(spieler2\y + spieler2\v,cy_screen-spieler2\h)
   ElseIf spieler2\v < 0 Then
      spieler2\y = max(spieler2\y + spieler2\v,0)
   EndIf
   ;---------------------------------
   If KeyDown(KEY_W) Then
      ;
      spieler1\v = -spieler1\maxv
   ElseIf KeyDown(KEY_S) Then
      spieler1\v = spieler1\maxv
   Else
      spieler1\v = 0
   EndIf
   If spieler1\v > 0 Then
      spieler1\y = min(spieler1\y + spieler1\v,cy_screen-spieler1\h)
   ElseIf spieler1\v < 0 Then
      spieler1\y = max(spieler1\y + spieler1\v,0)
   EndIf
   ;--------------------------------
   If KeyHit(1) Then
      ;gameisrunning = False
      resetgame()
   EndIf
   ;--------------------------------
   ball\x#   = ball\x# + ball\dx#
   ball\y#   = ball\y# + ball\dy#
   If ((ball\y# < 0) And (ball\dy# < 0)) Or ((ball\y# + ball\h > cy_screen) And (ball\dy > 0)) Then
      ball\dy = -ball\dy
   ElseIf ((ball\x# < 0) And (ball\dx# < 0)) Or ((ball\x# + ball\w > cx_screen) And ((ball\dx#) > 0)) Then
      ball\dx = -ball\dx
   EndIf
   If (ball\x<spieler1\x+spieler1\w) And (ball\dx<>0) Then
      ;If (spieler1\y < ball\y+ball\h) And (spieler1\y + spieler1\h > ball\y) Then
      If ImagesCollide(sp1img,spieler1\x,spieler1\y,0,ballimg,ball\x,ball\y,0)
         If spieler1\y+spieler1\w/2 > ball\y+ball\h Then
            winkel = ATan2(ball\y-spieler1\y,ball\x-spieler1\x)
            ball\dx = Cos#(winkel)*ball\v
            ball\dy = Sin#(winkel)*ball\v
         ElseIf spieler1\y + (spieler1\h-spieler1\w/2)<ball\y Then
            winkel = ATan2(ball\y-spieler1\y+spieler1\h-spieler1\w,ball\x-spieler1\x)
            ball\dx = Cos#(winkel)*ball\v
            ball\dy = Sin#(winkel)*ball\v
         Else
            ball\dx = -ball\dx
         EndIf
         ball\dy = ball\dy + spieler1\v*0.1      ;genau hier liegt mein Problem
      EndIf
   EndIf
   ;----spieler2-----;
   If (ball\x>cx_screen-spieler2\x) And (ball\dx<>0) Then
      ;If (spieler1\y < ball\y+ball\h) And (spieler1\y + spieler1\h > ball\y) Then
      If ImagesCollide(sp2img,spieler2\x,spieler2\y,0,ballimg,ball\x,ball\y,0)
         If spieler2\y+spieler2\w/2 > ball\y+ball\h Then
            winkel = ATan2(ball\y-spieler2\y,ball\x-spieler2\x)
            ball\dx = Cos#(winkel)*ball\v
            ball\dy = Sin#(winkel)*ball\v
         ElseIf spieler2\y + (spieler2\h-spieler2\w/2)<ball\y Then
            winkel = ATan2(ball\y-spieler2\y+spieler2\h-spieler2\w,ball\x-spieler2\x)
            ball\dx = Cos#(winkel)*ball\v
            ball\dy = Sin#(winkel)*ball\v
         Else
            ball\dx = -ball\dx
         EndIf
         ball\dy = ball\dy + spieler2\v*0.1      ;und genau hier liegt mein Problem
      EndIf
   EndIf
   
   
   Color 255,255,255
   DrawImage ballimg,ball\x,ball\y
   DrawImage sp1img,spieler1\x,spieler1\y
   DrawImage sp2img,spieler2\x,spieler2\y
   Rect 1,1,cx_screen-1,cy_screen-1,0

End Function

Function max(z1#,z2#)

   If(z1>z2) Return z1
   Return z2

End Function
Function min(z1#,z2#)

   If(z1<z2) Return z1
   Return z2

End Function

ToeB

BeitragSa, Feb 03, 2007 16:37
Antworten mit Zitat
Benutzer-Profile anzeigen
hey dankee ! Aber die Steuerund klappt nich Sad
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!
 

max

BeitragSa, Feb 03, 2007 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
hier ist keys.bb hab ich ausversehen vergessen

Code: [AUSKLAPPEN]


;Datei: "keys.bb"
;diese datei enthält die scancodes der tastatur:
;-------------------------------------------------------------------------


;------Zahlen-----------
Const KEY_1         = 2
Const KEY_2         = 3
Const KEY_3         = 4
Const KEY_4         = 5
Const KEY_5         = 6
Const KEY_6         = 7
Const KEY_7         = 8
Const KEY_8         = 9
Const KEY_9         = 10
Const KEY_0         = 11

;------Buchstaben--------
Const KEY_A         = 30
Const KEY_B         = 48
Const KEY_C         = 46
Const KEY_D         = 32
Const KEY_E         = 18
Const KEY_F         = 33
Const KEY_G         = 34
Const KEY_H         = 35
Const KEY_I         = 23
Const KEY_J         = 36
Const KEY_K         = 37
Const KEY_L         = 38
Const KEY_M         = 50
Const KEY_N         = 49
Const KEY_O         = 24
Const KEY_P         = 25
Const KEY_Q         = 16
Const KEY_R         = 19
Const KEY_S         = 31
Const KEY_T         = 20
Const KEY_U         = 22
Const KEY_V         = 47
Const KEY_W         = 17
Const KEY_X         = 45
Const KEY_Y         = 44
Const KEY_Z         = 21
Const KEY_AE      = 40
Const KEY_OE      = 39
Const KEY_UE      = 26
Const KEY_SZ      = 12

;------Funktion-Tasten----
Const KEY_F1      = 59
Const KEY_F2      = 60
Const KEY_F3      = 61
Const KEY_F4      = 62
Const KEY_F5      = 63
Const KEY_F6      = 64
Const KEY_F7      = 65
Const KEY_F8      = 66
Const KEY_F9      = 67
Const KEY_F10      = 68
Const KEY_F11      = 87
Const KEY_F12      = 88

;----------Nummern-Block-----

Const KEY_NUM0      = 82
Const KEY_NUM1      = 79
Const KEY_NUM2      = 80
Const KEY_NUM3      = 81
Const KEY_NUM4      = 75
Const KEY_NUM5      = 76
Const KEY_NUM6      = 77
Const KEY_NUM7      = 71
Const KEY_NUM8      = 72
Const KEY_NUM9      = 73
Const KEY_NUMSL      = 181
Const KEY_NUMAST   = 55
Const KEY_NUMMIN   = 74
Const KEY_NUMPLUS   = 78
Const KEY_NUMKOM   = 83
Const KEY_NUMRETURN   = 156
Const KEY_NUMLOCK   = 69

;---------Curser-Tasten--------
Const KEY_UP      = 200
Const KEY_DOWN      = 208
Const KEY_LEFT      = 203
Const KEY_RIGHT      = 205

;---------6er-Block------------
Const KEY_EINFG      = 210
Const KEY_ENTF      = 211
Const KEY_POS1      = 199
Const KEY_ENDE      = 207
Const KEY_BILDUP   = 201
Const KEY_BILDDOWN   = 209

;---------Steuer-Tasten---------
Const KEY_RETURN   = 28
Const KEY_SPACE      = 57
Const KEY_BKSPACE   = 14
Const KEY_TAB      = 15
Const KEY_ROLL      = 70
Const KEY_LSHFT      = 42
Const KEY_LSTRG      = 29
Const KEY_LALT      = 56
Const KEY_RSHFT      = 54
Const KEY_RSTRG      = 157
Const KEY_RALT      = 184
Const KEY_FESTSTELL   = 58
Const KEY_PRINT      = 183
Const KEY_PAUSE      = 197
Const KEY_ESC      = 1

;--------Sonderzeichen-----------
Const KEY_VERGLEICH   = 86
Const KEY_KOMMA      = 51
Const KEY_PUNKT      = 52
Const KEY_MINUS      = 53
Const KEY_SHARP      = 43
Const KEY_POTENZ   = 41
Const KEY_PLUS      = 27

;---------Windows-Tasten-----
Const KEY_LWIN      = 219
Const KEY_RWIN      = 220
Const KEY_RECHNER   = 161
Const KEY_MENU      = 221
Const KEY_COMPUTER   = 235

ToeB

BeitragSa, Feb 03, 2007 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Dankee !!!!
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!

Christoph

BeitragSa, Feb 03, 2007 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du auch kapiert, wie der Code funzt ? Confused

ToeB

BeitragSa, Feb 03, 2007 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Bin dabei, is 'n langer code und deshalb brachts halt ne weile Rolling Eyes
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!
 

max

BeitragSo, Feb 04, 2007 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaub der code hat n bug ersetz einfach das mit den atan2 bei den spielern mit dem hier:
Code: [AUSKLAPPEN]


If (ball\x<spieler1\x+spieler1\w) And (ball\dx<>0) Then
      ;If (spieler1\y < ball\y+ball\h) And (spieler1\y + spieler1\h > ball\y) Then
      If ImagesCollide(sp1img,spieler1\x,spieler1\y,0,ballimg,ball\x,ball\y,0)
         If spieler1\y+spieler1\w/2 > ball\y+ball\h Then
            winkel = ATan2(ball\y+(ball\h/2)-spieler1\y+(spieler1\w/2),ball\x+(ball\w/2)-(spieler1\x+(spieler1\w/2)))
            ball\dx = Cos#(winkel)*ball\v
            ball\dy = -Sin#(winkel)*ball\v
         ElseIf spieler1\y + (spieler1\h-spieler1\w/2)<ball\y Then
            winkel = ATan2((ball\y+ball\h/2)-spieler1\y+spieler1\h+(spieler1\w/2),ball\x+(ball\w/2)-spieler1\x+(spieler1\w/2))
            ball\dx = Cos#(winkel)*ball\v
            ball\dy = Sin#(winkel)*ball\v
         Else
            ball\dx = -ball\dx
         EndIf
         ball\dy = ball\dy + spieler1\v*0.1
      EndIf
   EndIf
   ;----spieler2-----;
   If (ball\x>cx_screen-spieler2\x) And (ball\dx<>0) Then
      ;If (spieler1\y < ball\y+ball\h) And (spieler1\y + spieler1\h > ball\y) Then
      If ImagesCollide(sp2img,spieler2\x,spieler2\y,0,ballimg,ball\x,ball\y,0)
         If spieler2\y+spieler2\w/2 > ball\y+ball\h Then
            winkel = ATan2(ball\y+(ball\h/2)-spieler2\y+(spieler2\w/2),ball\x+(ball\w/2)-(spieler2\x+(spieler2\w/2)))
            ball\dx = Cos#(winkel)*ball\v
            ball\dy = -Sin#(winkel)*ball\v
         ElseIf spieler2\y + (spieler2\h-spieler2\w/2)<ball\y Then
            winkel = ATan2((ball\y+ball\h/2)-spieler2\y+spieler2\h+(spieler2\w/2),ball\x+(ball\w/2)-spieler2\x+(spieler2\w/2))
            ball\dx = -Cos#(winkel)*ball\v
            ball\dy = Sin#(winkel)*ball\v
         Else
            ball\dx = -ball\dx
         EndIf
         ball\dy = ball\dy + spieler2\v*0.1
      EndIf
   EndIf



1 bin ich nicht bei der atan2 berechnung vom mittelpunkt der kreise ausgegangen, was bei gleicher größe aber egal ist

2. änderte ich das mit "sin" in "-sin" und dann nochma mit "cos". weiß nich warum aba es haut hin Wink

ps: atan2 berechnet den winkel von einem punkt zum nullpunkt (jedenfalls glaub ichs, ich habs selbst erarbeitet(http://blitzbase.de/quellcode/ballsimulation.bb) und habs erst in 2 jahren in mathe wenn überhaupt)

StepTiger

BeitragSo, Feb 04, 2007 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir sah der Algo so aus:

Code: [AUSKLAPPEN]
Graphics 800,600,32,2
SetBuffer BackBuffer()

ysiz=90
xsiz=20

bxsiz=20
bysiz=20
bx#=GraphicsWidth()/2
by#=GraphicsHeight()/2
s#=Rnd(5,8)
w#=Rnd(360)
bxs#=Sin(w#)*s#
bys#=Cos(w#)*s#

p1#=GraphicsHeight()/2-ysiz/2
p2#=GraphicsHeight()/2-ysiz/2

font=LoadFont("Comic Sans MS",72,1)
SetFont font

While Not KeyHit(1)
   
   Cls
   
   obx#=bx#
   oby#=by#
   
   bx#=bx#+bxs#
   by#=by#+bys#
   If bx#+bxsize#>GraphicsWidth() Then bxs#=-bxs#:pl=pl+1
   If by#+bysize#>GraphicsHeight() Then bys#=-bys#
   If bx#<bxsize# Then bxs#=-bxs#:pr=pr+1
   If by#<bysize# Then bys#=-bys#
   bs#=Sqr(bxs#*bxs#+bys#*bys#)
   bw#=ATan2(bxs#,bys#)
   
   If Sqr((obx#-bx#)^2+(oby#-by#)^2)<3 Then bx#=GraphicsWidth()/2:by#=GraphicsHeight()/2
   
   m1#=KeyDown(31)-KeyDown(17)
   m2#=KeyDown(208)-KeyDown(200)
   
   p1s#=(p1s#)*.98+(m1#)*.1
   p2s#=(p2s#)*.98+(m2#)*.1
   
   p1#=p1#+p1s#
   p2#=p2#+p2s#
   
   If RectsOverlap(bx#-bxsiz/2,by#-bysiz/2,bxsiz,bysiz,0,p1#,xsiz,ysiz)
      nw#=180+ATan2((xsiz/2)-(bx#),(p1#+ysiz/2)-(by#))
      bxs#=Sin(nw#)*bs#
      bys#=Cos(nw#)*bs#
   EndIf
   
   If RectsOverlap(bx#-bxsiz/2,by#-bysiz/2,bxsiz,bysiz,GraphicsWidth()-xsiz,p2#,xsiz,ysiz)
      nw#=180+ATan2((GraphicsWidth())-(bx#),(p2#+ysiz/2)-(by#))
      bxs#=Sin(nw#)*bs#
      bys#=Cos(nw#)*bs#
   EndIf
   
   If (p1#+ysiz)>GraphicsHeight() Then p1#=GraphicsHeight()-ysiz:p1s#=-p1s#*.9
   If (p2#+ysiz)>GraphicsHeight() Then p2#=GraphicsHeight()-ysiz:p2s#=-p2s#*.9
   If p1#<0 Then p1#=0:p1s#=-p1s#*.9
   If p2#<0 Then p2#=0:p2s#=-p2s#*.9
   
   Color 255,255,255
   Text GraphicsWidth()/2,GraphicsHeight()/2,pl+":"+pr,1,1
   
   Color 255,0,0
   Rect 0,p1#,xsiz,ysiz
   Color 0,255,0
   Rect GraphicsWidth()-xsiz,p2#,xsiz,ysiz
   
   Color 200,200,200
   bxp=bx#-bxsiz/2
   byp=by#-bysiz/2
   Oval bxp,byp,bxsiz,bysiz
   
   Flip
   
Wend

End


Übrigens wieder mit Sin und Cos Berechnungen Laughing

Achso: "Classik" wird eigentlich "Classic" geschrieben.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group