[B2D] 2 Sin/Cos-Effekte

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Justus

Betreff: [B2D] 2 Sin/Cos-Effekte

BeitragFr, Jun 10, 2005 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mal zwei kleine Sin/Cos-Effekte aneinandergekloppt.

Ein Radar:
BlitzBasic: [AUSKLAPPEN]
Graphics 640,480,0,2
SetBuffer BackBuffer()
timer = CreateTimer(70)

Const radar_x = 320
Const radar_y = 240
Const radargroesse = 200

ClsColor 0,30,0

Repeat
Cls

;Immer ein bisschen dunkler...
farbwert = g*$100
Color 0,g,0

;Der Kreis
Oval radar_x-radargroesse,radar_y-radargroesse,radargroesse*2,radargroesse*2,0

;Hier wird der Strahl gezeichnet
For I = 0 To radargroesse
WritePixel radar_x + Sin(grad)*I,radar_y+ Cos(grad)*I,farbwert
Next

;\"zahl\" wird erhöht, denn ein Kreis hat ja bekanntlich 360°
grad = grad+1
If grad = 360 Then grad = 0

;Der Grün-Ton wechselt
g = g-1
If g < 60 Then g = 255

;FPS werden angezeigt
Gosub fps
Color 255,255,255
Text 0,0,\"FPS: \"+fps

WaitTimer timer
Flip
Until KeyHit(1)

;FPS-Zähler
.fps
fps_aktuell = fps_aktuell+1
If MilliSecs() > start_fps+1000 Then
fps = fps_aktuell
fps_aktuell = 0
start_fps = MilliSecs()
EndIf
Return


Und noch einer:

BlitzBasic: [AUSKLAPPEN]
Graphics 640,480,0,2
SetBuffer BackBuffer()
timer = CreateTimer(70)

Const radar_x = 320
Const radar_y = 240
Const radargroesse = 200
zuzahlen = 1
farbe = 1

;clscolor 0,30,0

Repeat
Cls

Color r,g,b

;Hier wird der Strahl gezeichnet
;For I = 0 to radargroesse
For J = 0 To 200 Step 10
Line radar_x,radar_y, radar_x + Sin(grad+J)*grad,radar_y+ Cos(grad+J)*grad;,farbwert
Next
;next

;\"zahl\" wird erhöht, denn ein Kreis hat ja bekanntlich 360°
grad = grad+zuzahlen
If grad = 360 Then
zuzahlen = -1
farbe = farbe+1
If farbe > 3 Then farbe = 0
EndIf
If grad = 0 Then
zuzahlen = 1
farbe = farbe+1
If farbe > 3 Then farbe = 0
EndIf

Select farbe
Case 1 r = grad : If grad >= 255 Then r = 255
Case 2 g = grad : If grad >= 255 Then g = 255
Case 3 b = grad : If grad >= 255 Then b = 255
End Select

;FPS werden angezeigt
Gosub fps
Color 255,255,255
Text 0,0,\"FPS: \"+fps

WaitTimer timer
Flip
Until KeyHit(1)

;FPS-Zähler
.fps
fps_aktuell = fps_aktuell+1
If MilliSecs() > start_fps+1000 Then
fps = fps_aktuell
fps_aktuell = 0
start_fps = MilliSecs()
EndIf
Return
  • Zuletzt bearbeitet von Justus am Di, Jun 14, 2005 20:52, insgesamt einmal bearbeitet

Bms

BeitragSa, Jun 11, 2005 10:16
Antworten mit Zitat
Benutzer-Profile anzeigen
schön, schön. mach weiter so! Wink
ich hab auch noch was: Ein unendlicher Tunnel aus blauen kreisen:

BlitzBasic: [AUSKLAPPEN]

;Grafik einstellen
Const grw=640
Const grh=480
Graphics grw,grh,16,1
SetBuffer BackBuffer()
SeedRnd MilliSecs()
;Geschwindigkeit (also auch abstand der kreise; ich nehm so zwischen 15 und 20)
Const g=18
;Die Punkte
Const punkteanz=1600 ;(lieber mehr, je nach rechnerleistung)
Dim a#(punkteanz,3)
Dim punktbild(35) ;ein dimfeld für die kreisbilder => schneller als 1600x oval :D
For gr=1 To 35
punktbild(gr)=CreateImage(gr Shl 1,gr Shl 1)
SetBuffer ImageBuffer(punktbild(gr))
Color 0,0,255-gr*12
Oval 0,0,gr*1.9,gr*1.9,0
Oval 1,1,gr*1.9-2,gr*1.9-2,0
Next
;Steps
steps=40 ;so viele kreise pro \"kreis aus kreisen\"; ich konnts nich besser erklären :D
SetBuffer BackBuffer()

xx=grw/2 ;für den punkt, wo die kreise rauskommen
yy=grh/2 ;s.o.
wait=1 ;sonst bewegt sich der punkt in der mitte nicht


timer=CreateTimer(80) ;zur geschwindigkeitsbegrenzung

Repeat

WaitTimer(timer)

Cls

;Mitte \"drehen\" :D
dr=(dr+Rand(-3,3))Mod 360
If dr<0 Then dr=358
nr=nr+1
If nr=1 Then
nr=0
For b=0 To steps
a(x,0)=xx
a(x,1)=yy
a(x,2)=dr+b*(360/steps)
a(x,3)=0
x=(x+1)Mod(punkteanz+1)
Next
EndIf

;inneres bewegen
Select mode
Case 0 wait=wait-1:If wait=0 Then jo=Rand(360):mode=1:weit=Rand(20,80) ;warten
Case 1
xx=xx+Sin(jo)*3 ;wegbewegen
yy=yy+Cos(jo)*3
zaehl=zaehl+1
If zaehl=weit Then zaehl=0:mode=2:jo=jo+180
Case 2
xx=xx+Sin(jo)*3 ;wieder in die mitte kommen
yy=yy+Cos(jo)*3
zaehl=zaehl+1
If zaehl=weit Then zaehl=0:mode=0:jo=jo+180:wait=Rand(100)
End Select


;Punkte durchgehen
For b=0 To punkteanz
If a(b,1)<>0 Then
a(b,0)=a(b,0)+Cos(a(b,2))*g*a(b,3)/15
a(b,1)=a(b,1)+Sin(a(b,2))*g*a(b,3)/15
a(b,3)=a(b,3)+1
bi=punktbild(a(b,3)Shr 1+1)
DrawImage bi,a(b,0),a(b,1)
EndIf
Next

;volle punkte
For b=0 To punkteanz Step 100
bi=(a(b,3)+1)
Color 0,0,255-bi*6
Oval a(b,0),a(b,1),bi,bi,1
Next

Flip

Until KeyHit(1)
End

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group