Sternenfeld

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

sbrog

Betreff: Sternenfeld

BeitragMo, Mai 31, 2004 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]

Global anzahl = 300 ;hier rumprobieren

Type sterne
Field x
Field y
Field speed
End Type


For x= 0 To anzahl
stern.sterne = New sterne
stern\x = Rnd(0,800)
stern\y = Rnd(0,600)
stern\speed = Rnd(1,5)
Next

Graphics 800,600

SetBuffer BackBuffer()

Repeat
Cls

LockBuffer BackBuffer()

For stern.sterne = Each sterne
WritePixel stern\x,stern\y,$ffffff
stern\x = stern\x - stern\speed
If stern\x <0
stern\x =800
stern\y = Rnd(0,600)
EndIf
Next

UnlockBuffer BackBuffer()

Flip
Until KeyHit(1)



an anzahl beliebig rumprobieren. Sollte mit 30000 noch flüssig laufen.
 

Kekskiller

BeitragMo, Mai 31, 2004 20:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Schon schön, nur solltest du das ganze per Dim-Feld lösen,
ist allemal schneller. Und eventuelle auch noch einen Helligkeits-
unterschied bei ferneren Sternen.

Markus2

BeitragMo, Mai 31, 2004 23:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist doch ok so außer
Rnd(0,800) <- 0-799
Rnd(0,600) <- 0-599
 

Edlothiol

BeitragDi, Jun 01, 2004 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Repeat
Cls

For stern.sterne = Each sterne
Color 0,0,$ffffff*stern\speed*0.2
Rect stern\x,stern\y,stern\speed,stern\speed*0.7
stern\x = stern\x - stern\speed
If stern\x <0
stern\x =800
stern\y = Rnd(0,600)
EndIf
Next

Flip
Until KeyHit(1)
Langsamer, aber es sieht plastischer aus, finde ich.

Kabelbinder

Sieger des WM-Contest 2006

BeitragDi, Jun 01, 2004 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum eigentlich
BlitzBasic: [AUSKLAPPEN]
WritePixel stern\x,stern\y,$ffffff

geht das schneller als
BlitzBasic: [AUSKLAPPEN]
Plot stern\x,stern\y

Question

Was haltet ihr hiervon? betont den entfernungsgrad nochmehr:

BlitzBasic: [AUSKLAPPEN]
Global anzahl = 300 ;hier rumprobieren 

Type sterne
Field x
Field y
Field speed
End Type

For x= 0 To anzahl
stern.sterne = New sterne
stern\x = Rnd(0,800)
stern\y = Rnd(0,600)
stern\speed = Rnd(1,5)
Next

Graphics 800,600

SetBuffer BackBuffer()

Repeat
Cls

For stern.sterne = Each sterne

farbe = stern\speed*40+55
Color 255,farbe,100
Plot stern\x,stern\y

stern\x = stern\x - stern\speed
If stern\x <0
stern\x =800
stern\y = Rnd(0,600)
EndIf
Next

Flip
Until KeyHit(1)
End


Aber mit sternen ist das ja immer so ne Sache, dashier erinnert mich irgendwie mehr an fallenden Schnee, als an Sterne. Very Happy
<Wing Avenger Download> ◊◊◊ <Macrophage Download>
 

Kekskiller

BeitragDi, Jun 01, 2004 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Wirkt eher wie horizontaler Blutregen Twisted Evil .
Da ist zu viel Rot in den Vulkanflocken ^_^
 

Edlothiol

BeitragDi, Jun 01, 2004 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Warum eigentlich
BlitzBasic: [AUSKLAPPEN]
WritePixel stern\x,stern\y,$ffffff


geht das schneller als
BlitzBasic: [AUSKLAPPEN]
Plot stern\x,stern\y

Aaaargh...BlitzBasic: [AUSKLAPPEN]
t1 = MilliSecs()
For i = 0 To 10000
Plot 0,0
Next
t2 = MilliSecs() - t1
t1 = MilliSecs()
LockBuffer
For i = 0 To 10000
WritePixelFast 0,0,$FFFFFF
Next
UnlockBuffer
t3 = MilliSecs() - t1
Print "Plot: " + t2
Print "WritePixelFast: " + t3
WaitKey

Suco-X

Betreff: ...

BeitragDi, Jun 01, 2004 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier mal meine Version :

BlitzBasic: [AUSKLAPPEN]

Global anzahl = 30000 ;hier rumprobieren

SeedRnd(MilliSecs())

Global endzeit#, startzeit
Global TFPS
Global FPS
Global TimerFPS

Type sterne
Field x#, y#
Field speed#, farbe
End Type

For x= 0 To anzahl
stern.sterne = New sterne
stern\x = Rnd(0,799)
stern\y = Rnd(0,599)
stern\speed = Rnd(0.2,5)
stern\farbe = CombineRGB(stern\speed*50,stern\speed*50,stern\speed*50)
Next

Graphics 800,600,32,1

SetBuffer BackBuffer()

startzeit = MilliSecs()
Repeat
Cls
endzeit = MilliSecs()-startzeit
startzeit = MilliSecs()

UpdateSterne(endzeit)

Color 255,0,0
ShowFPS()

Flip 0
Until KeyHit(1)


Function ShowFPS ()
TFPS = TFPS + 1
If MilliSecs () - TimerFPS => 1000 Then
TimerFPS = MilliSecs ()
FPS = TFPS
TFPS = 0
End If
Text (0,0,"FPS : "+FPS)
End Function

Function UpdateSterne(time_speed#)
LockBuffer BackBuffer()

For stern.sterne = Each sterne
WritePixelFast stern\x+i,stern\y,stern\farbe
stern\x = stern\x - (stern\speed*(time_speed/10))

If stern\x <0
stern\x =799
stern\y = Rnd(0,599)
stern\speed = Rnd(1,5)
stern\farbe = CombineRGB(stern\speed*50,stern\speed*50,stern\speed*50)
EndIf
Next

UnlockBuffer BackBuffer()
End Function


Function CombineRGB(r,g,b)
Return a*$1000000 + r*$10000 + g*$100 + b
End Function


bye
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Kabelbinder

Sieger des WM-Contest 2006

BeitragDo, Jun 03, 2004 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Man könnte das auch so machen, dann braucht er zwar ne Zeit zum laden, kann aber dann tausende bei gleichbleibender Frame-rate.
Aber jetzt mal im Ernst: Wer braucht schon 300000 Sterne in seinem Space-shooter?
Wink


BlitzBasic: [AUSKLAPPEN]
Graphics 640,480
SeedRnd MilliSecs()

; anzahl pro abstands-layer
Const anzahl = 300
Global farbe,zeit,frames,out

Dim layer(5)
For l = 1 To 5
layer(l) = CreateImage(640,480)
SetBuffer ImageBuffer(layer(l))
Cls
farbe = l*51
Color farbe,farbe,farbe
For i = 0 To anzahl
Plot Rand(0,640),Rand(0,480)
Next
MaskImage layer(l),0,0,0
Next

Dim schieb(5)

SetBuffer BackBuffer()
zeit = MilliSecs()
Repeat

If MilliSecs() - zeit > 1000 Then
zeit = MilliSecs()
out = frames
frames = 0
EndIf

For i = 1 To 5
If schieb(i) <= 0 Then
schieb(i) = 640
Else
schieb(i) = schieb(i) - i
EndIf
Next

For i = 5 To 1 Step - 1
TileImage layer(i),schieb(i),0,0
Next

Text 0,0,"Fps : " + Str$(out),0,0

frames = frames + 1
Flip
Cls
Until KeyHit(1)
End
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group