Blitz

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Hummelpups

Betreff: Blitz

BeitragSa, Aug 14, 2004 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß nich wie ihr es findet ich finds ganz hübsch.
Außer das ich Line benutzt habe geht der Code eigentlich.

Mir war langweilig und da habe ich gedacht das ich für mein
neues Game mal nen schönes InGame Intro mache und
dafür brauche ich Blitze. Die sind schon ganz schön, lassen
sich aber bestimmt noch verbessern. Wie gesacht, habs
in 10 mins gemacht. Wer was besseres hat, immer her
damit.

BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()
vwaitt=MilliSecs()

Type partikel
Field x#,y#,speed_x#,speed_y#
Field rgb
End Type

fpstime=MilliSecs()

While Not KeyHit(1)

If MilliSecs()>=vwaitt+100 Then
vwaitt=MilliSecs()
New_bolt(anzahl,400,0) ;1.P:Anzahl ; 2.P: Start X ; 3.P: Start Y
End If
If MilliSecs()>=fpstime+1000 Then
fpstime=MilliSecs()
fps=flips:flips=0
End If

renderpartikel()

Color 255,255,255
Text 2,2,"Anzahl (Up/Down): "+Anzahl
Text 2,17,"FPS: "+FPS

If KeyHit(200) Then Anzahl=Anzahl+1
If KeyHit(208) Then Anzahl=Anzahl-1
If Anzahl>50 Then Anzahl=50

flips=flips+1
Flip
Cls
Wend

Function New_Bolt(anzahl=1,sx=400,sy=0)
For steps=1 To anzahl
x=sx
y=sy

Repeat
a=Rand(x-40,x+40)
b=Rand(y+10,y+70)

Color 255,255,0
Line x,y,a,b

For neben=1 To 5
Color 255-neben*50,255-neben*50,200-neben*40
Line x-neben,y,a-neben,b
Line x+neben,y,a+neben,b
Next

x=a
y=b
Until y>600
If y>=600 Then y=600

For feuerp=1 To 20
speicher.Partikel=New Partikel
speicher\x=x
speicher\y=y
speicher\speed_x=Rnd(-1,1)
speicher\speed_y=Rnd(-4,-3)
speicher\rgb=255
Next
Next
End Function

Function renderpartikel()

LockBuffer BackBuffer()
For speicher.Partikel=Each Partikel
Color speicher\rgb,speicher\rgb,0
rgb=speicher\rgb Shl 16+speicher\rgb Shl 8+0
WritePixelFast speicher\x,speicher\y,rgb

For neben=1 To 2
rgb=(255-neben*50) Shl 16 + (255-neben*50) Shl 8 + (200-neben*40)
For winkel=0 To 359 Step 10
WritePixelFast speicher\x+Cos(winkel)*neben,speicher\y+Sin(winkel)*neben,rgb
Next
Next


speicher\rgb=speicher\rgb-10
speicher\x=speicher\x+speicher\speed_x
speicher\y=speicher\y+speicher\speed_y
speicher\speed_y=speicher\speed_y+0.3

If speicher\y>600 Then Delete speicher
Next
UnlockBuffer BackBuffer()

End Function

Bfox

BeitragSo, Aug 15, 2004 9:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ab 4 Blitze geht die Frame-Rate runter und alles sieht zusammengeklnüllt aus!

Nur fals dich das interresiert: die meisten Blitze gehen von der Erde zum Himmel und nicht vom Himmel zu Erde! Ein paar kommen schon von oben, aber eben nicht alle! Wink
Glauben ist Mangel an Wissen!

theBlade

BeitragSo, Aug 15, 2004 11:09
Antworten mit Zitat
Benutzer-Profile anzeigen
yo sieht ganz nett aus, nur ab 4 blitzen gehen die fps um 10 pro blitz runter...
"Ich bin wie ich bin. Die einen kennen mich, die anderen können mich." (Dr. Konrad Adenauer)

UTFSB -> (use the fuckin "suchen"-button)

User posted image <- link -.-

rambo256

BeitragSo, Aug 15, 2004 13:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Also bei 25 Blitzen hab ich auch nur noch 16 FPS Mad
Bis 20 isset noch in Ordnung,so 24 FPS.
Sysconfig: siehe signatur

Aber die meisten Blitzen gehen echt von der Erde aus nach oben in den Himmel Exclamation
Asus F53z

Das Leben ist eine reine Konkatenation...

Hummelpups

BeitragSo, Aug 15, 2004 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich meine ich habe schon öfter gehört, dass die Blitze von oben und unten
gleichzeitig anfangen und sich dann in der Mitte treffen.

WIE Blitze nun verlaufen is mir auch Schnubbe wollte halt nur
nen Blitz darstellen nicht Physikalisch korrekt nachbauen ich
glaube dazu ist NIEMAND hier in der Lage. Die verschiedenen
Ableger und was da noch alles für Kram is.

BiZaR

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Aug 15, 2004 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht schon sehr gut aus,

allerdings schreibst du werte in Regionen die nicht zum Backbuffer gehören!
endweder änders du writepixelfast in writepixel oder du sorgst dafür das kein Pixel ausserhalb geschrieben wird!
denn 800x600 Pixel ist der Backbuffer
allerdings beginnt die Adressierung schon bei 0
Der letzte Pixel unten rechts ist 799,599
[BB2D | BB3D | BB+]

Bigmichi

BeitragSo, Aug 15, 2004 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
das si blödsin jeder dee einweing sich damit beschäftigt hat muss mannoch netmal weiß, dass es 2 Typen gibt die Wolkenblitze die nur von Wolke zur Wolke verlaufen oder halt den ErdBlitz, dass bedeutet das der blitz vom himmelziellos bis ca. 50 meter auf die Erde schlägt udn sich dan ein Ziel sucht um einzutreffen =) das weiß jedes Kind und so stimtm der code schon =)

Hummelpups

BeitragMo, Aug 16, 2004 0:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Kommt es auf diesen einen Pixel denn so extrem an???

BiZaR

Hubsi

BeitragMo, Aug 16, 2004 8:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Jup. Dieser eine Pixel kann (muß nicht) den Rechner zum Absturz bringen, wenn er (Beispielauflösung 800*600) an Positionen größer x=800, y=599 oder x=0, y=600 gezeichnet wird Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Aug 16, 2004 9:06
Antworten mit Zitat
Benutzer-Profile anzeigen
es sind auch nicht wenige die da falsch positiniert sind!
Bei mir wird der cursor im Visual-Blitz-IDE editior mit punkten übersäht
Blitz
[BB2D | BB3D | BB+]

Bfox

BeitragMo, Aug 16, 2004 9:13
Antworten mit Zitat
Benutzer-Profile anzeigen
BigMichi du hast schon recht das haben sie gester in Welt der Wunder gezeigt aber in irgent einer anderen Show haben sie gesagt die kommen vom Boden zur Erde! Embarassed
Glauben ist Mangel an Wissen!

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Aug 16, 2004 9:16
Antworten mit Zitat
Benutzer-Profile anzeigen
hab das mal etwas geändert um zu sehen wie oft denn da in falschen Speicherstellen geschrieben wird
der erste Wert zeigt an wie oft direkt neben dem Buffer geschrieben wird
der 2. alles was drüber hinaus gehtBlitzBasic: [AUSKLAPPEN]
Graphics 800,600,16,2 
SetBuffer BackBuffer()
SeedRnd MilliSecs()
vwaitt=MilliSecs()
Global Fehler,Fehler1
Type partikel
Field x#,y#,speed_x#,speed_y#
Field rgb
End Type

fpstime=MilliSecs()

While Not KeyHit(1)

If MilliSecs()>=vwaitt+100 Then
vwaitt=MilliSecs()
New_bolt(anzahl,400,0) ;1.P:Anzahl ; 2.P: Start X ; 3.P: Start Y
End If
If MilliSecs()>=fpstime+1000 Then
fpstime=MilliSecs()
FPS=flips:flips=0
End If

renderpartikel()

Color 255,255,255
Text 2,2,"Anzahl (Up/Down): "+Anzahl
Text 2,17,"FPS: "+FPS
Text 2,30,"Fehler knapp drüber: " + Fehler
Text 2,50,"Fehler weiter drüber: " + Fehler1
If KeyHit(200) Then Anzahl=Anzahl+1
If KeyHit(208) Then Anzahl=Anzahl-1
If Anzahl>50 Then Anzahl=50

flips=flips+1
Flip
Cls
Wend

Function New_Bolt(anzahl=1,sx=400,sy=0)
For steps=1 To anzahl
x=sx
y=sy

Repeat
a=Rand(x-40,x+40)
b=Rand(y+10,y+70)

Color 255,255,0
Line x,y,a,b

For neben=1 To 5
Color 255-neben*50,255-neben*50,200-neben*40
Line x-neben,y,a-neben,b
Line x+neben,y,a+neben,b
Next

x=a
y=b
Until y>600
If y>=600 Then y=600

For feuerp=1 To 20
speicher.Partikel=New Partikel
speicher\x=x
speicher\y=y
speicher\speed_x=Rnd(-1,1)
speicher\speed_y=Rnd(-4,-3)
speicher\rgb=255
Next
Next
End Function

Function renderpartikel()

LockBuffer BackBuffer()
For speicher.Partikel=Each Partikel
Color speicher\rgb,speicher\rgb,0
rgb=speicher\rgb Shl 16+speicher\rgb Shl 8+0

WritePixel speicher\x,speicher\y,rgb
If speicher\x =-1 Or speicher\x =800 Then fehler = fehler +1
If speicher\y =-1 Or speicher\y =600 Then fehler = fehler +1

If speicher\x < -1 Or speicher\x >800 Then fehler1 = fehler1 +1
If speicher\y < -1 Or speicher\y >600 Then fehler1 = fehler1 +1

For neben=1 To 2
rgb=(255-neben*50) Shl 16 + (255-neben*50) Shl 8 + (200-neben*40)
For winkel=0 To 359 Step 10
If speicher\x+Cos(winkel)*neben =-1 Or speicher\x+Cos(winkel)*neben =800 Then fehler = fehler + 1
If speicher\y+Sin(winkel)*neben =-1 Or speicher\y+Sin(winkel)*neben =600 Then fehler = fehler + 1

If speicher\x+Cos(winkel)*neben < -1 Or speicher\x+Cos(winkel)*neben >800 Then fehler1 = fehler1 + 1
If speicher\y+Sin(winkel)*neben < -1 Or speicher\y+Sin(winkel)*neben >600 Then fehler1 = fehler1 + 1

WritePixel speicher\x+Cos(winkel)*neben,speicher\y+Sin(winkel)*neben,rgb


Next
Next


speicher\rgb=speicher\rgb-10
speicher\x=speicher\x+speicher\speed_x
speicher\y=speicher\y+speicher\speed_y
speicher\speed_y=speicher\speed_y+0.3

If speicher\y>599 Then Delete speicher
Next
UnlockBuffer BackBuffer()

End Function
[BB2D | BB3D | BB+]

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group