Eine Kette

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Triton

Betreff: Eine Kette

BeitragMi, März 03, 2004 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Von Hot-Bit. Das ganze erstellt eine Kette die sich um 2 Zahnräder dreht.
Ich habs so verändert, dass kein externes Bild mehr gebraucht wird. Sieht zwar nicht mehr ganz wie ne Kette aus, verhält sich aber trotzdem so.. Smile

Code: [AUSKLAPPEN]

;Eine Kette, by Hot-Bit, 2003
;verändert von Triton, 2004
Graphics 800,600
SetBuffer BackBuffer()
Dim strecke_x#(5000),strecke_y#(5000),strecke_image(5000), kette#(2000),kette_image(364)

Global x1#=500,y1#=300,x2#=200,y2#=280
Global k_radius#,k_radius2#,k_radius3#,k_radius4#,q
Global punkt1_winkel#,punkt2_winkel#,punkt3_winkel#,punkt4_winkel# ;Winkeldaten der 4 Punkte
Global kett1=CreateImage(13,13)
Global kett2=CreateImage(13,13)
Global bogen_gr#, bogen_kl#, step_rate1#, step_rate2#, qua#, vpunkt1_winkel#, ab#

baukette

col=50
For i=13 To 1 Step-1
Color 50+col/2,20+col/2,col
Oval 13-(i/2),13-(i/2),i,i,1
col=col+15
Next
GrabImage kett1,7,7
MidHandle kett1
SeedRnd MilliSecs()
Cls:Flip
col=50
For i=13 To 1 Step-1
Color col,50+col/2,20+col/2
Oval 13-(i/2),13-(i/2),i,i,1
col=col+15
Next
GrabImage kett2,7,7
MidHandle kett2

winkel#=2 * Pi * 180 / Pi/ 36 ; 36 ist, wenn 36 bälle herum sind
Print winkel
k_radius#=90
k_radius3=k_radius+8
k_radius2=40:k_radius4=k_radius2+8
Global radi2=13 ; für inneren Kranz

zeichne2

mitt#=MilliSecs()
schnell#=.83

While Not KeyHit(1)
Cls
Text 100,10,"Schnell#: "+schnell
Color 128,128,128
Oval x2-k_radius2,y2-k_radius2,k_radius2*2,k_radius2*2,1
For i=1 To ab
kette(i)=kette(i)+schnell
If kette(i)=>q kette(i)=kette(i)-q
DrawImage kette_image(strecke_image(kette(i))),strecke_x(kette(i)),strecke_y(kette(i))
Next
schneller#=schneller+schnell:If schneller>360 schneller=schneller-360
Color 255,0,0
For i=1 To 36
Line Sin(i*winkel+schneller)*radi2+x1,Cos(i*winkel+schneller)*radi2+y1 ,Sin(i*winkel+schneller)*k_radius+x1,Cos(i*winkel+schneller)*k_radius+y1
Next

Text 30,40,"Bogen_gr: "+bogen_gr
Text 30,60,"Bogen_kl: "+bogen_kl
Text 30,80,"Step1 : "+Step_rate1
Text 30,100,"Step2 : "+Step_rate2
Text 30,120,"qua : "+qua
Text 20,140,"punkt1 : "+punkt1_winkel
Text 20,160,"punkt2 : "+punkt2_winkel

If MilliSecs()-mitt>10000
q=0
zeichne2
ab=q/16 ;Berechnung der Länge der kette
For i=1 To ab
kette(i)=q-(i*16)
Next
mitt=MilliSecs()
schnell#=Rnd(.9,3.9)
Cls
EndIf

Delay 10
Flip
Wend
End

Function zeichne2()
Cls
.NeuerVersuch
x1=Rand(100,700):y1=Rand(100,500):x2=Rand(100,700):y2=Rand(100,500)
k_radius#=Rand(50,160)
k_radius3=k_radius+8
k_radius2=Rand(30,k_radius-5)
k_radius4=k_radius2+8
If (x1-x2)^2+(y1-y2)^2=<(k_radius+k_radius2) Goto NeuerVersuch
If Abs(x1-x2)=<k_radius Or Abs(y1-y2)=<k_radius Goto NeuerVersuch

qua#=0
While Not KeyHit(1)
Cls: Color 64,255,192
Oval x1-k_radius,y1-k_radius,k_radius*2,k_radius*2,0
Oval x2-k_radius2,y2-k_radius2,k_radius2*2,k_radius2*2,0

Color 255,255,0
a2_wi#=(ATan2(x2-x1,y2-y1)+360)Mod 360
Line Sin(a2_wi)+x2,Cos(a2_wi)+y2 ,Sin(a2_wi)+x1,Cos(a2_wi)+y1 ;Die Linie von Mittelpunkt zu Mittelpunkt
laenge# = Sqr(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))); Abstand der zwei Kreise
Color 255,255,255 ; zeichne Mittelpunkt
Oval x1+Sin(a2_wi)*laenge/2-7,y1+Cos(a2_wi)*laenge/2-7,15,15,0

Color 255,0,0 ; Erster Kreis
a3_wi#=a2_wi+90-qua ;Winkel um 90 Grad erhöhen, wegen des rechten Winkels
Line x1,y1,Sin(a3_wi)*k_radius+x1,Cos(a3_wi)*k_radius+y1
Color 0,255,255:Oval Sin(a3_wi)*k_radius+x1-4,Cos(a3_wi)*k_radius+y1-4,9,9,0
punkt1_winkel#=a3_wi:punkt1_x=Sin(a3_wi)*k_radius+x1:punkt1_y=Cos(a3_wi)*k_radius+y1

; Abfrage ob im/am kleineren Kreis
vpunkt1_winkel#=a2_wi-qua
plotx#=Sin(vpunkt1_winkel)*(laenge-qua)+punkt1_x
ploty#=Cos(vpunkt1_winkel)*(laenge-qua)+punkt1_y
If Sqr((x2-plotx)^2+(y2-ploty)^2)=<k_radius2 Exit
vpunkt1_winkel#=a2_wi-qua ;Zeichne Tangente
Color 0,0,255
Line punkt1_x,punkt1_y,Sin(vpunkt1_winkel)*(laenge-qua)+punkt1_x,Cos(vpunkt1_winkel)*(laenge-qua)+punkt1_y

Color 255,0,0 ; Zweiter Kreis
a3_wi#=a2_wi-90+qua ;Winkel um 90 Grad erhöhen, wegen des rechten Winkels
Line x2,y2,Sin(a3_wi)*k_radius2+x2,Cos(a3_wi)*k_radius2+y2
Color 0,255,255:Oval Sin(a3_wi)*k_radius2+x2-4,Cos(a3_wi)*k_radius2+y2-4,9,9,0
punkt3_winkel#=a3_wi:punkt3_x=Sin(a3_wi)*k_radius2+x2:punkt3_y=Cos(a3_wi)*k_radius2+y2

Color 255,0,0
a3_wi#=a2_wi-90+qua ;Winkel um 180 Grad erniedrigen, wegen des rechten Winkels
Line x1,y1,Sin(a3_wi)*k_radius+x1,Cos(a3_wi)*k_radius+y1
Color 0,255,255:Oval Sin(a3_wi)*k_radius+x1-4,Cos(a3_wi)*k_radius+y1-4,9,9,0
punkt2_winkel#=a3_wi:punkt2_x=Sin(a3_wi)*k_radius+x1:punkt2_y=Cos(a3_wi)*k_radius+y1

Color 255,0,0 ;Zweite Gerade
a3_wi#=a2_wi+90-qua ;Winkel um 180 Grad erniedrigen, wegen des rechten Winkels
Line x2,y2,Sin(a3_wi)*k_radius2+x2,Cos(a3_wi)*k_radius2+y2
Color 0,255,255:Oval Sin(a3_wi)*k_radius2+x2-4,Cos(a3_wi)*k_radius2+y2-4,9,9,0
punkt4_winkel#=a3_wi:punkt4_x=Sin(a3_wi)*k_radius2+x2:punkt4_y=Cos(a3_wi)*k_radius2+y2

Line punkt1_x,punkt1_y,punkt4_x,punkt4_y
Flip
;Delay 1
qua=qua+.05
Wend

; Versuche die Punkte rundherum zu zeichnen von punkt1 weg

bogen_gr#=2*Pi*k_radius*((180-(qua*2))/360)
bogen_kl#=2*Pi*k_radius2*((180-(qua*2))/360)
step_rate1#=(180-(qua*2))/bogen_gr
step_rate2#=(180-(qua*2))/bogen_kl

Color 0,255,0
q=0
i1#=0
While i1=<(180+(qua*2))
Plot x1+Sin(i1+punkt1_winkel)*k_radius,y1+Cos(i1+punkt1_winkel)*k_radius
strecke_x(q)=x1+Sin(i1+punkt1_winkel)*k_radius:strecke_y(q)=y1+Cos(i1+punkt1_winkel)*k_radius
strecke_image(q)=(ATan2(strecke_x(q)-x1,strecke_y(q)-y1)+360) Mod 360
q=q+1
i1=i1+step_rate1
Wend

length = Sqr(((punkt3_x-punkt2_x)*(punkt3_x-punkt2_x))+((punkt3_y-punkt2_y)*(punkt3_y-punkt2_y)))
For j=1 To length
wink#=(ATan2(punkt3_x-punkt2_x,punkt3_y-punkt2_y)+360)Mod 360
strecke_x(q)=punkt2_x+Sin(wink)*j: strecke_y(q)=punkt2_y+Cos(wink)*j
Plot strecke_x(q),strecke_y(q)
strecke_image(q)= ((wink+90)+360)Mod 360
q=q+1
Next

i1=1
While i1=<(180-(qua*2))
Plot x2+Sin(i1+punkt3_winkel)*k_radius2,y2+Cos(i1+punkt3_winkel)*k_radius2
strecke_x(q)=x2+Sin(i1+punkt3_winkel)*k_radius2:strecke_y(q)=y2+Cos(i1+punkt3_winkel)*k_radius2
strecke_image(q)=(ATan2(strecke_x(q)-x2,strecke_y(q)-y2)+360)Mod 360
q=q+1
i1=i1+step_rate2
Wend

length = Sqr(((punkt1_x-punkt4_x)*(punkt1_x-punkt4_x))+((punkt1_y-punkt4_y)*(punkt1_y-punkt4_y)))
For j=1 To length
wink#=(ATan2(punkt1_x-punkt4_x,punkt1_y-punkt4_y)+360)Mod 360
strecke_x(q)=punkt4_x+Sin(wink)*j: strecke_y(q)=punkt4_y+Cos(wink)*j
Plot strecke_x(q),strecke_y(q)
strecke_image(q)= ((wink+90)+360)Mod 360
q=q+1
Next
q=q-1

ab=q/16 ;Berechnung der Länge der kette
For i2#=1 To ab
kette(i2)=(i2*16)
Next

End Function

Function baukette()
kette_gl=CreateImage(21,12)
SetBuffer ImageBuffer(kette_gl)
For x = 0 To 21
   For y = 0 To 12
      Color 10,10,x*10
      Plot x,y
   Next
Next
SetBuffer BackBuffer()
MidHandle kette_gl
avc=360
For frames=0 To 364
kette_image(frames)=CopyImage(kette_gl)
RotateImage kette_image(frames),avc
avc=avc-1
Next
End Function
 

Ava

Gast

BeitragSa, März 06, 2004 23:35
Antworten mit Zitat
Irgendwie ist das sehr sehr cool!! =) *begeistert bestaun* hihi

Firstdeathmaker

BeitragDi, März 09, 2004 10:40
Antworten mit Zitat
Benutzer-Profile anzeigen
< finds auch cool!
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group