Sterne die sich bewegen! HILFE

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Blitzkrieg Bop

Betreff: Sterne die sich bewegen! HILFE

BeitragDo, März 11, 2004 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie mache ich Sterne, die sich so nach vorne beweegn? am besten ein code beispiel, danke 8)
~ Hey Ho Let's Go ~
 

INpac

BeitragDo, März 11, 2004 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
cool!
sterne die sich nach vorne bewegen!
cool!
wenn du so ne art camera haben willst, die durch unmengen an sternen fliegt, gibts da einige samples ... > hier im code archiv, oder auf bb.com.

cos&sin ist da wichtig

General Alex

BeitragDo, März 11, 2004 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Am einfachsten ist es, du machst dir ein kleines Bildchen (ca. 80x80) mit Sternchen drauf. Danach benutzt du den "TileImage" oder "TileBlock"-Befehl und füllst den Hintergrund damit. Ihn zu bewegen müsste kein Problem sein: Baue einen Zähler in einer Schleife ein.

Travis

BeitragDo, März 11, 2004 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Du meinst so ähnlich, wie dieser Windowsbilschirmschoner Starfield? Wenn ja, dann habe ich da was für dich. Das hatte ich for einiger Zeit mal entwickelt.

Code: [AUSKLAPPEN]

; Sternenfeld v3.0
; Speedoptimiert (thx to junky)
; Copyright (C) Dez 2003, Daniel Nobis

AppTitle "Sternenfeld 3"
Global StartX, StartY, MaxSpeed#

ResX = 1024    ; Horizontale Auflösung
ResY = 768     ; Vertikale Auflösung
StartX = 512   ; Startpunkt X der Sterne
StartY = 384   ; Startpunkt Y der Sterne

Maus = 0       ; Maussteuerung 1/0
Statistik = 1  ; Statistik anzeigen 1/0
FrameRate = 90 ; maximale FPS

MaxSpeed# = 1  ; Maximale Geschwindigkeit
n = 500        ; Anzahl der Sterne

Dim x#(n)
Dim y#(n)
Dim Winkel#(n)
Dim Speed#(n), AktuellSpeed#(n)
Dim AbstandWert#(n)
Dim Farbe(n)


Graphics ResX, ResY, GraphicsDepth, 1
SetBuffer BackBuffer()


; Allen Sternen Werte zuweisen
SeedRnd MilliSecs()
For i = 1 To n
 CreateStern(i)
Next

Bremse = CreateTimer(FrameRate)

Repeat

 WaitTimer(Bremse) 

 ; ==== FPS-Counter ====>>
 syszeit=MilliSecs()
 If syszeit>fpszeit+1000
  fps=fpsct : fpszeit=syszeit : fpsct=0
 Else
  fpsct=fpsct+1
 EndIf
 ; ==== FPS-Counter ====>>

 Cls

  If Maus = 1 Then StartX = MouseX(): StartY = MouseY()

  LockBuffer(BackBuffer())
   For i = 1 To n

    AbstandWert#(i) = Abstand(x#(i), y#(i), StartX, StartY)

    Farbe(i) = AbstandWert#(i) * .9
    If Farbe(i) > 255 Then Farbe(i) = 255

    Pixelfarbe=Farbe(i)*$1000000 + Farbe(i)*$10000 + Farbe(i)*$100 + Farbe(i)
    WritePixelFast(x(i),y(i),Pixelfarbe,BackBuffer)

    x#(i) = x#(i) + Cos(Winkel#(i)) * AktuellSpeed#(i)
    y#(i) = y#(i) + Sin(Winkel#(i)) * AktuellSpeed#(i)

    AktuellSpeed#(i) = AbstandWert#(i) / 30 * Speed#(i) + .4

    If x#(i) > ResX Or x#(i) < 0 Then CreateStern(i) ; Sterne außerhalb des Bildschirmes zurücksetzen
    If y#(i) > ResY Or y#(i) < 0 Then CreateStern(i)

   Next
  UnlockBuffer(BackBuffer())

  If Statistik = 1 Then
   Color 255,255,255
   Text 0,0, "FPS:  " + fps + "fps"
  EndIf

 Flip 0
     
Until KeyHit(1) Or MouseHit(1) Or MouseXSpeed() > 0 Or MouseYSpeed() > 0
End



Function Abstand#(x1#,y1#,x2#,y2#)
xhypo# = x1# - x2#
yhypo# = y1# - y2#

Abstand# = Abs(Sqr((xhypo# ^ 2) + (yhypo# ^2)))
Return Abstand#
End Function


Function CreateStern(i)
x#(i) = StartX:
y#(i) = StartY:
Winkel#(i) = Rnd(0, 360)
Speed#(i) = Rnd(0, MaxSpeed#)
End Function
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.
 

Blitzkrieg Bop

Betreff: DAAAAAANNNNNKEEEE

BeitragDo, März 11, 2004 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Travis, dasrf ich dnen dein Feld auch frei benutzen?
~ Hey Ho Let's Go ~

sbrog

BeitragDo, März 11, 2004 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
hab hier auch was gefunden,das ist ein teil von einem kurs von dieser Seite

; Rob´s BB-Kurs 2
; Robert Gerlach 12.2001
;
; Sterne
; ----------------------------------------------
; Ein Sternenfeld. Realistischere Version.
; Original von Matty B, verbessert (WritePixel etc.) und kommentiert von mir.





Global anzahl=5000 ; Anzahl der Sterne
Global speed=2 ; Geschwindigkeit
Global x_screen=640 ; Auflösung
Global y_screen=480 ;




Dim stern_x(anzahl),stern_y(anzahl),stern_z(anzahl)


Graphics x_screen,y_screen, 16, 1
SetBuffer BackBuffer()


star_init()

Repeat
Cls
star_update()
Flip
Until KeyHit(1)
End


; Den Sternen eine Position zuweisen
Function star_init()

; Alle Sterne durchgehn
For i=0 To anzahl
stern_x(i) = Rnd( -(x_screen/2), (x_screen/2)) Shl 8
stern_y(i) = Rnd( -(y_screen/2), (y_screen/2)) Shl 8
stern_z(i) = Rnd(speed,255)
Next

End Function



;##############################################################
; Die Sterne bewegen
Function star_update()


; Buffer für WritePixel locken
LockBuffer BackBuffer()


; Alle Sterne durchgehn
For i = 0 To anzahl
stern_z(i) = stern_z(i) - speed

If stern_z(i) <= speed Then stern_z(i) = 255

; Position ausrechnen. Zum Rand hin werden die Sterne schneller.
s_x = (stern_x(i) / stern_z(i)) + (x_screen / 2)
s_y = (stern_y(i) / stern_z(i)) + (y_screen / 2)
farbe = 255 - stern_z(i)


; Pixel schnell und zum Rand hin heller zeichnen.
WritePixel s_x, s_y, farbe Or (farbe Shl 8) Or (farbe Shl 16)


Next

UnlockBuffer BackBuffer()

End Function

Travis

BeitragDo, März 11, 2004 22:38
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Blitzkrieg Bop

'türlich darfst du, warum nicht 8)
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.
 

Blitzkrieg Bop

BeitragDo, März 11, 2004 23:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi leute...
also, es geht ja im wesentlichen darum, das ich das auch in mein prog einbinden will und da wären ein paar zeieln weniger viel besser.....ich hab das mal mit travis code (thx nohcmal) versucht, aber ich krieg es net hin....also ähm, gibt es das net auch mit weniger? Very Happy
~ Hey Ho Let's Go ~

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group