Scrollbares Berichtfenster (viewport??)
Übersicht

Donald Agu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also Jungs, vielen Dank erstmal für eure Bemühungen.
Ich hab inzwischen mein ganzes schönes Spiel auf DoubleBuffering umgeschrieben und es ist KAPUTT ![]() also eher gesagt, die ergebnisse sind mehr als mies: es flimmert bei jedem "cls" (wohlgemerkt: es ist ein TEXTSPIEL), außerdem sehe ich bei Eingaben immer wieder andere Screens aufflackern, manchmal sehe ich die richtige Seite, manchmal die falsche etc.etc.etc. könnte natürlich auch daran liegen, dass ich das "flip" bisweilen falsch platziert habe, aber ich denke ich hab's so gemacht wie in euren Beispielen. Oder gibts da vielleicht noch andere bestimmte Regeln, die man diesbezüglich befolgen muss, vielleicht mit Eingaben oder so? Oder darf man "Flip" nur in Schleifen verwenden? Wo kommen eigentlich die kleinen Babys her? ![]() ![]() auf jeden fall sehe ich bisher überhaupt keinen anreiz, das mit dem DB so zu lassen... und es muss doch IRGENDWIE möglich sein, das tolle beispiel von rallimen auch mit single buffering umzusetzen, das mit dem scrollen, meine ich. Geschwindigkeitsprobleme gibt's bei meinem Spiel sicher net ![]() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstens:
Ein sinnvoll strukturiertes Game kommt mit einem(!) Flip aus. Dann flimmerts auch nicht. Zweitens: Es sind -glaubs mir- Basics sein Game mit DB auszustatten. Das muss laufen. Drittens: Es ist eben vonnöten, Text zu nutzen und Input() durch eine kleine Routine zu ersetzen. Davon gibt es mehrere im Codearchiv. Auch zu DB gibt es Tuts. Viel Erfolg. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Donald Agu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Tut mir Leid, dass ich schon wiede Terror machen muss ![]() ich habe einige Input-Befehle, auch ne simpelste 3-Zeilen Inputfunktion. dass da irgendwo der Fehler drinsteckt, liegt nahe. aber: Zitat: Es ist eben vonnöten, Text zu nutzen und Input() durch eine kleine Routine zu ersetzen. Davon gibt es mehrere im Codearchiv. ich habe mir mal einige dieser "kleinen Routinen" im codearchiv mal angeschaut ![]() aber wie ist es zu erklären, dass ich zuweilen den falschen Screen sehe bzw. Screens, die mich schon längst nicht mehr interessieren?? ![]() aber zurück zur Ausgangsfrage: Ist es möglich, Rallimens Beispiel ooooohne DB umzusetzen? (*fleh*) ![]() AGU |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Ist es möglich, Rallimens Beispiel ooooohne DB umzusetzen? (*fleh*)
Ohne das es flackert...... sehe ich keine Chance! Mit Vwait und scanline könnte man das Flackern mindern, aber sicher nicht beseitigen! |
||
[BB2D | BB3D | BB+]
|
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: aber wie ist es zu erklären, dass ich zuweilen den falschen Screen sehe bzw. Screens, die mich schon längst nicht mehr interessieren??
das kommt -wahrscheinlich- daher dass du entweder: - mehrere Flip im code hast oder - Input mit DB benutzt oder - deine Inputroutine falsch eingebunden ist. Was zu deiner Frage (wir drehen uns im Kreise...) die Antwort bringt: am Besten gar nicht. Üb und lern bis das DB funktioniert. Noch einmal das Prinzip des DB: BlitzBasic: [AUSKLAPPEN] Graphics x,y |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Donald Agu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich hatte tatsächlich mehrere "flip" in meinem Prog, aber trotzdem bin ich davon überzeugt, dass mein game zumindest HALBWEGS sinnvoll strukturiert ist ![]() ich gebe mich geschlagen, ihr habt gewonnen! aber ich hab immer noch ne Frage von vorhin, die (wie so viele andere ![]() Ich hoff, ich geh euch net zu sehr auf die Nerven ![]() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wir hab nicht gewonnen. Es ist einfach nur ne Tatsache. Es geht hier ja nicht drum dich runter zu machen. Aber wenn ich dir helfe dann so dass du es richtig machst. Und dazu gehört DB unverzichtbarerweise dazu.
Ein "negativer Viewport" ist mit kleinen Umwegen machbar. Mich hat ne Grippe erwischt und ich bin nur kurz am Rechner, aber ich werde Dir morgen das Grundprinzip posten. Dann kannst Sie Schreiben. Wenn Du allerdings DB nutzt, brauchst du keinen "AntiViewport" mehr. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, der AntiViewPort:
Damit die Funktion richtig arbeiten kann benötigt sie folgende Angaben: - obere linke Ecke des Viewport als x und y. - Breite und Höhe des Viewport - Koordinaten der zu überprüfenden Graphik (x,y) sowie deren handle Jetzt wirds dann lustig. Erstmal machst du ne Grobüberprüfung anhand der Koordinaten: - wenn bild(x,y) > VP(x+b,y+h) dann liegt es ausserhalb, ebenso wenn bild(x+bildbreite,y+bildhöhe) <VP(x,y). Zu beachten hierbei dass ich es vereinfacht geschrieben habe, Du musst nämlich auf die Achsen einzeln prüfen). - liegt das Bild komplett ausserhalb, super, zeichnen und fertig. - nun die obige prüfung nochmal durchführen, allerdings "nur" auf die eigentlichen Grenzen des Viewports (bei x,breite und y,höhe minus der imgagebreite/höhe). So kannst du herausfinden ob das Bild komplett im Viewport liegt. - wenn ja sei glücklich, zeichne es nicvht und raus aus der Funktion. - nun kommt der worst case. Alle noch nicht gefilterten Ergebnisse beinhalten bilder die teilweise verdeckt sind - im schlimmsten Fall liegt der Viewport innerhalb eines Bildes. Jetzt hilft nur eines - das Bild pixel für Pixel in einer For-Next-Doppelschleife durchgehen und für die einzelnen Koordinaten schauen ob sie innerhalb des Viewportes liegen. Wenn das nicht der Fall ist, auf den Imagebuffer des Bildes wechseln, das passende Pixel auslesen und dann in den Frontbuffer wieder eintragen. Um das Ganze zu beschleunigen kann man es auch in einer Bank zwischenkopieren. Ich persönlich weise meinen Funktionen häufig noch eine Rückgabe zu um ihren Erfolg überprüfen zu können, aber das ist Geschmackssache. So, viel Spass beim Erstellen deines Antiviewportes... ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Donald Agu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So, Danke erstmal ![]() Freue mich, dass der beschriebene Fall möglich ist, aber in meinem speziellen Fall (meinem TEXTSPIEL, das hattest du möglicherweise überlesen ![]() AGU |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und - ich wiederhole mich - es gehört zum Grundrüstzeug, DB zu beherrschen. Dann kannst dir nämlich Funktionsmonster wie das oben beschriebene sparen (welches auch für Text umsetzbar wäre).
Aber wenn Du dir lieber viel Arbeit machen willst, Bitteschön. Mit DB zeichnest/schreibst einfach alles im Hintergrund, Machst deinen Viewport, schreiben, flippen, fertig. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Donald Agu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja ich würd ja gern, aber dann gibts die bereits angesprochenen Probleme mit dem blöden Input und der Funktion
Code: [AUSKLAPPEN] Function Input1$() return chr$(waitkey()) end function wobei ich keine Ahnung habe, was die Funktion überhaupt macht, weiß nur, dass sie im Prinzip das gleiche bedeutet wie die QB-Anweisung Code: [AUSKLAPPEN] input blabla$(1) oder so... also praktisch das Prog bis zum Tastenhieb anhält und die Eingabe in ner Variable speichert, in dem Fall nen String. Außerdem ist mein Spiel bisher absolut auf FrontBuffering ausgelegt, daher bring ich nicht das ganze Prog mit einem Flip unter einen Hut... ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group