BlitzMaker

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

TheMatrix

Betreff: BlitzMaker

BeitragDi, Nov 07, 2006 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leutz,

ich hab gerade eben endlich herausgefunden, wie man ganz einfach verschiedene Blitze zeichnen kann( Brauch das unbedingt für mein Spiel, weil die alte Funktion von mir nicht richtig funktionierte Rolling Eyes ).
Vielleicht kann dieser Code auch der Allgemeinheit weiterhelfen.

Am besten ihr spielt mal ein wenig mit den Parametern herum.

Code: [AUSKLAPPEN]

Graphics 640,480,16,2
setbuffer backbuffer()

While Not KeyHit(1)
Cls
mx = MouseX() : my = MouseY()
x# = 320 : y# = 240 : zx = mx : zy = my
; Refraktor
; w = 30 : s = 1

; Eisblitz
; w = 20 : s = 10

; Blitz
 w = 4 : s = 30

; Blitz 2
; w = 15 : s = 30

; Blitz 3
; w = 10 : s = 70
blitz(x#,y#,mx,my,w,s)


Flip
Wend
End

Function blitz(x1,y1,x2,y2,weite = 10, staerke = 20)
If weite > 0 And staerke>0
winx = GraphicsWidth()-1 : winy = GraphicsHeight()-1
r = 255 : g = 255 : b = 255 ; <-- Farbe kann hier definiert werden

x# = x1 : y# = y1 : difx = x2-x1 : dify = y2-y1


f = r*$10000 + g*$100 + b
LockBuffer BackBuffer()

While e=0
ow# = w#
w# = ATan2(x2-x#,y2-y#)

For b=1 To weite
 w# = w# + Rnd(staerke*-1,staerke)
 x# = x# + Sin(w#) : y# = y# +Cos(w#)
If x#>=0 And x#<winx And y#>=0 And y#<winy Then WritePixelFast x#,y#,f
newdifx = x2-x# : newdify = y2-y#

If ((difx>=0 And newdifx<=0) Or (difx<=0 And newdifx>=0)) And ((dify>=0 And newdify<=0) Or (dify<=0 And newdify>=0)) Then e = 1 : Exit

Next
Wend

UnlockBuffer BackBuffer()
End If
End Function


mfg
  • Zuletzt bearbeitet von TheMatrix am Mi, Nov 08, 2006 0:54, insgesamt 3-mal bearbeitet

SpionAtom

BeitragDi, Nov 07, 2006 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Konnte deines noch nicht testen, weil ich gerade in der Uni bin. Aber das Thema kam mir bekannt vor: Guckst du hier Rolling Eyes
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

TheMatrix

BeitragDi, Nov 07, 2006 14:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hui, da bin ich wohl nicht der Einzigste den sowas beschäftigt Very Happy

Hatte auch schon solche Ansätze, wie du sie gemacht hast, aber es war halt immer das Problem, das Blitz an manchen Stellen nicht richtig dargestellt wurde, oder das halt der Blitz halt die FPS runterzieht.

Beispiel bei dir: Wenn man den Blitz langzieht, dann wird der Blitz zu gerade dargestellt. Wird er gequetscht, dann ist zuviel gekrakel Razz. Wenn man wenig Segmenete anwählt (Bsp.1), dann geht der Blitz am Anfang nach hinten los.

Diese Funktion, denke ich, ist schön smart, rechnet schnell und stellt den Blitz doch zielmich gut da Razz . Verändern kann man ihn sehr gut durch rumspielen mt den Parametern. Hab bis jetzt noch keine Bugs gefunden.
Wenn man einen dicken Blitz darstellen will, dann kann man auch die Funktion blitz mehrmals mit verschiedenen Parametern aufrufen.

Bin aber immer für Verbesserungsvorschläge offen Razz

(PS: Ich glaub ich habe diese Funktion bereits 5x auf Darkbasic programmiert und 3x in BB, weil mich irgendwie immer was gestört hat. Ich hoffe jetzt ist sie endlich ausgereift genung Very Happy )
°_° °.° °~° °v° .. -.-

PSY

BeitragDi, Nov 07, 2006 15:10
Antworten mit Zitat
Benutzer-Profile anzeigen
TheMatrix hat Folgendes geschrieben:
Hab bis jetzt noch keine Bugs gefunden


aber ich. gibt direkt ne MAV beim starten Wink

l8er,
psy

Blitzcoder

Newsposter

BeitragDi, Nov 07, 2006 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie wäre es mit
Code: [AUSKLAPPEN]
setbuffer backbuffer()

vor der Schleife? Sonst sieht man rein gar nichts.

Ansonsten ist es Ok Wink

TheMatrix

BeitragDi, Nov 07, 2006 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:

aber ich. gibt direkt ne MAV beim starten Wink


Oh weh... doch ein Bug? Nicht gut... aber gleich beim start? Seltsam Confused

Zitat:

Wie wäre es mit
Code:
setbuffer backbuffer()

vor der Schleife? Sonst sieht man rein gar nichts.


Welche BB Version benutzt ihr? Also ich habs in BB+ geprogt und da zeigt der mir sofort ne Grafikausgabe Very Happy . Habs aber nochmal oben nochmal mit reineditiert, will ja das es auch jeder benutzen kann Wink
°_° °.° °~° °v° .. -.-

Christoph

BeitragDi, Nov 07, 2006 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Oh weh... doch ein Bug? Nicht gut... aber gleich beim start? Seltsam Confused

Das liegt höchstwahrscheinlich daran, dass vorher kein Backbuffer() gesetzt war, und du im Backbuffer rumzeichnen willst... Smile
Zumindest hat er bei mir dauert Writepixelfast markiert.

FreetimeCoder

BeitragDi, Nov 07, 2006 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn man mit der Maus über den unteren Bildrand kommt, gibts nen Fehler. Aber sonst ganz schön!
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

D2006

Administrator

Betreff: Re: BlitzMaker

BeitragDi, Nov 07, 2006 16:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
...
winx = 640 : winy = 480     ; <-- Fenstergröße bitte angeben
...


Siehe ql:Graphicswidth und ql:Graphicsheight
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

TheMatrix

BeitragDi, Nov 07, 2006 18:46
Antworten mit Zitat
Benutzer-Profile anzeigen
@D2006
Ich glaub, da war ich mal wieder zu faul selbst nachzugucken Rolling Eyes .
Aber Danke, habs gleich verbessert Very Happy

mfg
°_° °.° °~° °v° .. -.-

StepTiger

BeitragDi, Nov 07, 2006 19:49
Antworten mit Zitat
Benutzer-Profile anzeigen
also das von the matrix finde ich besser, als das im zweiten post
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Spikespine

BeitragDi, Nov 07, 2006 20:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir auch ein MAV wenn man an die Fensterkante kommt. Das liegt daran, dass er zum Beispiel an eine Position mit der y-Koordinate von 479.78 einen Pixel setzen muss und dann das 480. nimmt was schon außerhalb des Bildschirms liegt. Also: abrunden. ql:Floor
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

TheMatrix

BeitragMi, Nov 08, 2006 0:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Stimmt, ihr habt alle recht. Mein Fehler Rolling Eyes sorry!

Habs jetzt noch mal verbessert und winx = GraphicsWidth()-1 gesetzt.

Ich denke jetzt kann ich den Code als Bugfrei bekanntgeben Very Happy

mfg
°_° °.° °~° °v° .. -.-

SpionAtom

BeitragMi, Nov 08, 2006 12:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt hab ichs mir auch angeschaut. Und es gefällt mir sehr gut. Da es auf Punkten und nicht auf Linien basiert (wie bei mir), kommt am Ende imo ein schönerer Blitz heraus. Surprised
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

TheMatrix

BeitragMi, Nov 08, 2006 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Thx für dein Lob Surprised !

Nach 8 Versuchen(in 2 Jahren) musste es ja auch irgendwann mal klappen, dass die Funktion was hergibt. Schön das euch gefällt Very Happy

mfg
°_° °.° °~° °v° .. -.-

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group