CLS Effekt
Übersicht

Blitzkrieg BopBetreff: CLS Effekt |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo Leute.
Guckt euch bitte mal folgenden Source an: Code: [AUSKLAPPEN] Graphics 800,600,16,2 SetBuffer BackBuffer() Type dot Field x,y Field speed End Type For i = 1 To 2 d.dot = New dot d\x = 0 d\y = (i*200) d\speed = Rand(3,6) Next Repeat ;Cls For d.dot = Each dot d\x = d\x + d\speed Plot d\x,d\y Next Flip Until KeyHit(1):End Ihr seht 2 Punkte, die sich von links nach rechts bewegen. Da kein CLS vorhanden ist, kommt dieser "Linien-Effekt" zustande. Doch sobald man das auskommentierte CLS wieder aktiviert sind es nur 2 normale Punkte, die sich bewegen. Und nun zu meiner Frage: Wie würdet ihr so einen "Linien-Effekt" am besten lösen, natürlich unter beibehaltung von CLS! Ich hätte zwar eine Methode, die aber sehr Speicherfressend ist ![]() Also, ich bin gespannt! MFG |
||
~ Hey Ho Let's Go ~ |
![]() |
dominik |
![]() Antworten mit Zitat ![]() |
---|---|---|
du meinst jetz also das man das mit dem line befehl macht oder?:
line startx, starty, zielx, ziely Code: [AUSKLAPPEN] Graphics 640, 480
Repeat Cls Line 0, 100, i ,100 i = i + 1 Delay 10 Until i >= 480 End so vll? |
||
BB+ 1.41|Sempron 2.8|geforce fx5200|1GB DDR|XP home SP2 / prof. |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Dominik!
Ne, also das ist es eher nicht, was ich wollte... Das Problem sollte lieber mit Plot bzw. Rect/Oval gelöst werden! |
||
~ Hey Ho Let's Go ~ |
![]() |
dominik |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja dann machs halt mit rect. ic hversteh nich ganz wo jetzt hier dein Problem is.
du musst nur in meine code anstatt line rect reinschreiben und fertig. |
||
BB+ 1.41|Sempron 2.8|geforce fx5200|1GB DDR|XP home SP2 / prof. |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Gut, dann beschreib ichs genauer:
Später soll diese Bewegung lenkbar sein. Du drückst Pfeiltaste nach oben und die Bewegung läuft nach oben! Du drückst nach links und die Bewegung geht nach links. Und das ganze sollte auch so sein, das es für jeden Type hinkommt. Also irgendwie was allgemeineres ![]() |
||
~ Hey Ho Let's Go ~ |
![]() |
dominik |
![]() Antworten mit Zitat ![]() |
---|---|---|
dann speicherst du das ganze in types und machst in die repeat haubtschleife ne for next schleife rein die dann jede linie einzelnt berechnet.
hast dich jetzt überhaubt schon mit atan und sin cos beschägtigt? dann solltest da auch drauf kommen. |
||
BB+ 1.41|Sempron 2.8|geforce fx5200|1GB DDR|XP home SP2 / prof. |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So, darauf lief es ja hinaus. Komme ich also nicht um die Winkelberechnung herum? | ||
~ Hey Ho Let's Go ~ |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
da sehe ich viele Möglichkeiten von langsam bis schnell
Frage ist nur wie viele Punkte es denn max. werden können oder sollen! immer waagerecht oder auch senkrecht und diagonal oder ganz wirr? Hat sich dann wohl geklärt!, meien frage Sollen denn die Punkte immer an bleiben Also eine Möglichkeit ist das alles in ein Image zu schreiben und das dann einzeichnen Da werden dann keine weiteren großen Functionen mehr benötigt! Code: [AUSKLAPPEN] Graphics 800,600,16,2
SetBuffer BackBuffer() Bild = CreateImage(GraphicsWidth (),GraphicsHeight ()) Type dot Field x,y Field speed End Type For i = 1 To 2 d.dot = New dot d\x = 0 d\y = (i*200) d\speed = Rand(3,6) Next Repeat Cls For d.dot = Each dot d\x = d\x + d\speed SetBuffer ImageBuffer(bild) Plot d\x,d\y SetBuffer BackBuffer() Next DrawImage bild,0,0 Flip Until KeyHit(1):End |
||
[BB2D | BB3D | BB+]
|
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hm, also um die Bewegung zu verdeutlichen:
So wie bei Snake - also Senkrecht und Waagerecht. @Ralli: Ja, die Punkte sollen eine gewisse Zeit alle gezeichnet stehen bleiben, bis irgendwann alle Punkte gelöscht werden. Aber wie genau meinst du das mit einem Image? BTW: Ein Punkte-Limit gibt es nicht! Edit: Ich sehe gerade deinen Source, moment eben ... Okay, also das ist eine gute Idee, Ralli. Nur wie sieht das ganze später aus, wenn der Punkt mit nem Stein z.B kollidiert und halt auch andere Bilder zu sehen sind? Edit2: Habs grad getestet! Also ich glaube, deine Idee hat keinerlei Einschränkungen auf Kollision oÄ, nicht wahr Ralli? |
||
~ Hey Ho Let's Go ~ |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie meinste das mit kollisionen,
wenn es nicht mit diesem Dummybild geprüft wird dann gibt es auch keine Kollision! |
||
[BB2D | BB3D | BB+]
|
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das meine ich:
Code: [AUSKLAPPEN] Graphics 800,600,16,2 stein = CreateImage(20,20) SetBuffer ImageBuffer(stein) Color 255,0,0 Rect 0,0,20,20 SetBuffer BackBuffer() Bild = CreateImage(GraphicsWidth (),GraphicsHeight ()) Type dot Field x,y Field speed End Type For i = 1 To 2 d.dot = New dot d\x = 0 d\y = (i*200) d\speed = Rand(3,6) Next Repeat Cls For d.dot = Each dot d\x = d\x + d\speed SetBuffer ImageBuffer(bild) Color 255,255,255 Plot d\x,d\y SetBuffer BackBuffer() If ImageRectCollide(stein,500,200-20/2,0,d\x,d\y,1,1) Then End Next DrawImage bild,0,0 DrawImage stein,500,200-20/2 ;DrawImage stein,500,400-20/2 Flip Until KeyHit(1):End Klappt eigentlich ganz gut. Nun gibt es noch ein weiteres Prob, dazu gleich mehr - ich mach mal nen Sample... |
||
~ Hey Ho Let's Go ~ |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So, nun hat das ganze schon nen bisschen das Snake-Feeling
(Mit den Pfeiltasten wird gelenkt): Code: [AUSKLAPPEN] Graphics 800,600,16,2 stein = CreateImage(20,20) SetBuffer ImageBuffer(stein) Color 255,0,0 Rect 0,0,20,20 SetBuffer BackBuffer() Bild = CreateImage(GraphicsWidth (),GraphicsHeight ()) Type dot Field x,y Field speed End Type For i = 1 To 1 d.dot = New dot d\x = 0 d\y = 200;(i*200) d\speed = Rand(3,6) Next r = 6 Repeat Cls For d.dot = Each dot Select r Case 6 d\x = d\x + d\speed Case 8 d\y = d\y - d\speed Case 4 d\x = d\x - d\speed Case 2 d\y = d\y + d\speed End Select SetBuffer ImageBuffer(bild) Color 255,255,255 Plot d\x,d\y SetBuffer BackBuffer() If KeyHit(200) r = 8 ElseIf KeyHit(208) r = 2 ElseIf KeyHit(203) r = 4 ElseIf KeyHit(205) r = 6 EndIf If ImageRectCollide(stein,500,200-20/2,0,d\x,d\y,1,1) Then End Next DrawImage bild,0,0 DrawImage stein,500,200-20/2 Flip Until KeyHit(1):End Wie könnte man am besten eine Selbstüberschneidung abfragen? Also angenommen man lässt das Ding nach rechts fahren, lenkt dann nach oben, nach links und anschließend nach unten: Wie fragt man dann ab, ob das Teil sich selbst sozusagen überschneidet? ![]() Code: [AUSKLAPPEN] If RectsOverlap(d\x,d\y,1,1,d\x,d\y,1,1) Geht nicht ![]() |
||
~ Hey Ho Let's Go ~ |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Must einfach mit dem image bild überprüfen Code: [AUSKLAPPEN] SetBuffer ImageBuffer(bild)
If ReadPixel(d\x,d\y ) And $ffffff Then Stop WritePixel( d\x,d\y,$FFFFFF) SetBuffer BackBuffer() Hab deinen Plot mal abgeändert in writepixel, ist schneller..... und debugger an wegen dem STOP |
||
[BB2D | BB3D | BB+]
|
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Stimmt, so kanns gemacht werden! Dann darf aber nichts anderes die Farbe der Punkte haben, wenn ich das überprüfe ![]() |
||
~ Hey Ho Let's Go ~ |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
du überprüft doch das dummybild, und nicht den Backbuffer
da gibt es doch nur die weißen Punkte! ein Problem könnte noch auftauchen wenn die Speed nicht konstant bleibt da du dann zwischen den Punkten durchschlüpfen könntest dann must du noch jeden einzelnen Punkt zwischen den 2 Sichtbaren einbauen mit einer Farbe nahe Schwarz die dann auch geprüft werden kann z.b. rgb= $010101 |
||
[BB2D | BB3D | BB+]
|
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja stimmt. Denkfehler...
Nun bin ich gerade dabei, den Kram richtig einzufügen... Doch irgendwo ist ein Fehler. So zeige ich das Bild an: Code: [AUSKLAPPEN] SetBuffer ImageBuffer(bild) DrawImage b1,l\x,l\y SetBuffer BackBuffer() Doch leider zeigt der mir nichts an! Erst, wenn ich Setbuffer Imagebuffer() und Setbuffer Backbuffer() auskommentiere, zeigt der mir das Bild an. Doch dann geht diese Bewegung ja nicht mehr ![]() Ansonsten befinde ich mich im Backbuffer() und habe ein globales Bild erstellt: Code: [AUSKLAPPEN] Global Bild = CreateImage(GraphicsWidth (),GraphicsHeight ()) Das große Imagebuffer Bild wird nach dem b1 Bild gemalt. Wo könnte der Fehler liegen? |
||
~ Hey Ho Let's Go ~ |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
So wie es aussieht malst du auf das DummyBild wo nur die linien gespeichert werden ein Bild hinein
Das geht natürlich nicht weil du dann die linien übermalst! Wahrscheinlich kommst mit den buffern ein wenig durcheinander!? und was fügst du denn jetzt alles ein.... Und was soll das denn werden wenn es fertig ist ? |
||
[BB2D | BB3D | BB+]
|
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Was es werden soll?
Das ist noch nicht der Rede Wert ![]() Naja, ich bin heute Abend zu faul und frag zuviel! Wahrscheinlich hast du mit den Buffern recht, ich werds halt durchchekcen und selbst probieren und rausfinden... ![]() Aber Danke Ralli. |
||
~ Hey Ho Let's Go ~ |
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du einen Snake Clon machen willst,dann mach den bitte Tile-basiert und nicht sooo ![]() So ist das doch so gut wie unmöglich da etwas vernünftiges zu bekommen,aber du kannst mich gerne eines besseren belehren ![]() |
||
Asus F53z
Das Leben ist eine reine Konkatenation... |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie im ICQ erwähnt: Kein Snake Clone ![]() |
||
~ Hey Ho Let's Go ~ |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group