Scrollbares Berichtfenster (viewport??)

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Donald Agu

Betreff: Scrollbares Berichtfenster (viewport??)

BeitragFr, März 04, 2005 16:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Ich möchte in mein Spiel ein Fenster integrieren, in dem Berichte ausgegeben werden. Man soll das Fenster auch scrollen können, sobald der Platz auf dem Bildschirm ausgeschöpft ist. Leider Gottes habe ich überhaupt keinen Plan, wie ich das anstellen soll. Gescrollt werden soll übrigens nicht mit der Mouse, sondern mittels Tastatur. Ich hab mir mal den Befehl "Viewport" angeschaut, weiß was er macht und wie er funktioniert, aber hilft der mir da überhaupt? ich glaub, das muss irgendwie anders gehen. Bitte um Hilfe! Wink

THX

AGU Question Question Question
 

FBI-blitz

BeitragFr, März 04, 2005 16:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Müsste gehen!

ORIGIN X, Y
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+

Hubsi

BeitragFr, März 04, 2005 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Viewport ist bestens geeignet für solche Geschichten. Viewport macht nämlich nichts anderes als den "bemalbaren" Bereich einzugrenzen. Aussehen könnte das ganze etwa so:Code: [AUSKLAPPEN]
; Die Map, Spieler, etc. malen
ViewPort 200,100,300,200
; Den Bericht anzeigen
ViewPort 0,0,screenwidth,screenheight
Und fertig ist die Laube Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Donald Agu

BeitragSa, März 05, 2005 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, Hubsi. Aber ich wusste bereits, was viewport macht, aber du hast mich glaube ich net ganz verstanden... Sad

Das "Berichtfenster" (assiger Name, irgendwie Confused ) soll immer erscheinen, während das Prog außenrum weiterläuft. Kann ich da vielleicht mit viewport irgendwie den ganzen Screen MIT AUSNAHME eines Textfensters definieren, da dieses ja stehen bleiben soll? Question Question
Außerdem möchte ich, dass man das Fenster scrollen kann, um Berichte nachzulesen. Da stehe ich echt vor nem Problem... Crying or Very sad

Freue mich auf weitere Hilfe Wink

AGU

Hubsi

BeitragSa, März 05, 2005 15:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Upsala, ja Quatsch gelesen. Very Happy Binde den Code in der Form in die Hauptschleife ein, wenn Du scrollen willst musst du ohnehin den Bericht jedesmal neu auf den Bildschirm pinseln. Viewport kannst Du ohne Bedenken auch Realtime ausführen, falls Dir das Sorgen macht Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Donald Agu

BeitragMo, März 07, 2005 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie würde denn das mit dem scrollen etwa aussehen? Ich hab da nämlich keine ahnung und stell mir das ganze furchtbar kompliziert vor... Embarassed

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, März 07, 2005 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist es eigendlich nicht...

Erstmal das Fenster selbst...
Einfach in der Hauptschleife, bevor du den Bildschirm mit Flip neu einzechnest eine zusätzliche function einbauen die auf dem ganzen noch ein Anzeigefeld drübermalt
am besten noch dieses ein/ausschaltbar machen, was noch einfacher ist!

Soll das nur zum coden sein oder auch später im Spiel mit drin bleiben,
so wie es bei manchen Spielen der Fall ist?

zum Scrollen vieleicht die Bild Rauf und runterTaste nehmen
da braucht du nur den orgin rauf oder runter setzten und das Viewport so belassen dann scrollt das automatisch..
[BB2D | BB3D | BB+]

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, März 07, 2005 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab da mal ein kleine Beispiel gecodet!
Code: [AUSKLAPPEN]
Graphics 800 ,600,16,2
;variablen für das Fenster
Global BF_X = 100 ,BF_Y = 100 ,TextScrollY = 0

SetBuffer BackBuffer ()
While Not KeyDown (1) ;##########
    ;Spielschleife
    Color 0,0,255
    Rect 10 ,10,200,100,1
    Color 0 ,0,0
    Text 50 ,50,"Normaler Bildschirm"
    ;Die Function für das Fenster
    Update_Berichtfenster ()
    Flip
    Cls
Wend ;############

End

Function Update_Berichtfenster ()
    ;fenster verschieben
    BF_X = BF_X + (KeyDown (32) - KeyDown (30) ) * 3
    BF_Y = BF_Y + (KeyDown (31) - KeyDown (17) ) * 3
   
    ; text Scrollen
    TextScrollY = TextScrollY + (KeyDown (209) - KeyDown (201) ) * 2
   
    ; die Viewportgeschichte
    Origin BF_X,BF_Y + TextScrollY
    ;Viewportkoordinaten  werden nicht von Orgin beinflußt
    Viewport BF_X,BF_Y,300,150
   
    ; das ViewportFenster mit neuer Farbe
    ClsColor 0 ,0, $C0C0C0
    Cls
   
    ;Neue textfarbe
    Color 0 ,0, $FFFF00
    ; der Text halt
    Text 10 ,10,"Mein ViewPort geht"
    Text 10 ,40,"Taste >W A S D< verschibt das Fenster"
    Text 10 ,60,"Taste >Bild Rauf runter< zum Text verschieben"
   
    ;Alles wieder zurücksetzten
    Origin 0 ,0
    Viewport 0 ,0,GraphicsWidth () ,GraphicsHeight ()
    ClsColor 0 ,0,0
End Function

Inckusive spärliche Erklärzeilen
[BB2D | BB3D | BB+]
 

Donald Agu

BeitragDi, März 08, 2005 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
@rallimen: Vielen Dank für das tolle Beispiel, echt klasse!! Very Happy

habe aber ein problem, und zwar benutze ich in eminem Prog kein Double Buffering, da ich das net richtig kapiere (selbst bei den einfachsten Beispielen Embarassed ) und ich damit immer nur nichts als Probleme hatte.
Ich hoffe, das ist dazu nicht UNBEDINGT nötig Shocked

ansonsten sehe ich jahrzehntelange nervige aufräumarbeiten in meinem prog auf mich zu kommen Crying or Very sad

das fenster brauch ich gar net zu verschieben, dann muss ich den origin auch net versetzen, oder? Question

um auf deine frage zurückzukommen, falls ich sie richtig verstanden habe Wink , das fenster soll im spiel schon noch sichtbar sein...
das mit dem ein/ausschalten isn guter tip, das bring ich glaub ich dann noch selber hin... Smile

THX

AGU

BladeRunner

Moderator

BeitragDi, März 08, 2005 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
für vernünftige Graphikgestaltung ist Doublebuffering unerlässlich. Also investier die Zeit und üb es bis du es verstehst.

Die neue, verbesserte Forensuche sollte dir eigentlich gute Ergebnisse liefen.
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

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, März 08, 2005 15:50
Antworten mit Zitat
Benutzer-Profile anzeigen
so wie schon BladeRunner schrieb ist gehts ohne Doublebuffering nicht!
Bei BlitzPlus ist das zB garnicht anders möglich!
dabei ist das doch so einfach

Stell dir einfach vor du kritzelst was auf einen Zettel,

und wenn du fertig bist zeigt du es!
[BB2D | BB3D | BB+]
 

Donald Agu

BeitragMi, März 09, 2005 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber immer mit diesem blöden "cls" dann und aberaber und aberaber... Crying or Very sad

ne, im ernst, wenn ich das ausprobiere, mit irgend nem simplen beispiel, dann seh ich immer die eine seite, beim nächsten flip dann wieder die andere, so isses ja bestimmt auch gedacht Idea

aber die seiten werden nie leer gemacht Arrow ich seh immer noch die "Reste" von der letzten Seite, die ich natürlich net will.
Wenn ich jetzt aber das cls in die Schleife schreib, seh ich NIE was, einfach zum Heulen Crying or Very sad

gehts auch wirklich net ohne, auch wenns nur ein textspiel is? Wink

Rob_

BeitragMi, März 09, 2005 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Was gibts denn da für ein Problem?

Code: [AUSKLAPPEN]

Graphics 1600,1200,32,2
setbuffer backbuffer()


fenster_vaR = 1

While not keyhit(1)
cls

(Hier rein schreibst du alles das wird auch angezeigt)
(wenn du etwas machen willst das z.b ein fenster der auf auszuschalten geht machst du ne variable und ne function z.b)

if fenster_var = 1 then fenster()

flip
wend
end

function fenster()



rect 10,10,10,10,0

blbllb

.... . ... . .. . . .



end function




Wenn du wieder ausschalten willst einfach die fenster variable ausschalten.

[EDIT]
Gefixt!
AMD Athlon 64 3500+ | Infineon 1 GB DDR RAM | nVidia Geforce 7800 GTX
  • Zuletzt bearbeitet von Rob_ am Mi, März 09, 2005 18:58, insgesamt einmal bearbeitet

BladeRunner

Moderator

BeitragMi, März 09, 2005 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
SetBuffer BackBuffer()
.
.
.

Repeat
Cls
;alles zeichnen etc.
Flip
Until KeyHit(1)


Die Position des Cls spielt ne massgebliche Rolle Wink
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

Artemis

BeitragMi, März 09, 2005 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
BladeRunner hat Folgendes geschrieben:
BlitzBasic: [AUSKLAPPEN]
SetBuffer BackBuffer()
.
.
.

Repeat
Cls
;alles zeichnen etc.
Flip
Until KeyHit(1)


juhuu
der syntax funzt wieder
danke walski!!

BladeRunner

Moderator

BeitragMi, März 09, 2005 18:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Rob_, was ist denn ne until ...wend -Schleife?
Wenn du ihm Code gibst, gib ihm richtigen code, bitte.
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

BeitragDo, März 10, 2005 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
@bladerunner: until...wend? wo hast du denn das gelesen??? Shocked

@alle: muss ich da auch wieder irgendwann auf frontbuffer umschalten? oder darf ich das überhaupt? wenn ich muss, WANN? Question Question Question Question Question

ansonsten danke schonmal, ich probiers aus und werd mein werk "umgestalten" Crying or Very sad

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDo, März 10, 2005 18:09
Antworten mit Zitat
Benutzer-Profile anzeigen
setbuffer Frontbuffer() wird normalerweise nie benutzt
[BB2D | BB3D | BB+]

Hubsi

BeitragDo, März 10, 2005 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
SetBuffer benutzt man in der Regel nur einmal, meist gleich nach Graphics. Dann benutzt Du das Gerüst von Blade und alles ist im grünen Bereich Very Happy Pinsel generell alles neu auf den Bildschirm (bzw. Buffer), kein Flimmern, keine Probleme, jede Menge Spaß Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

BladeRunner

Moderator

BeitragDo, März 10, 2005 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Donald Agu hat Folgendes geschrieben:
@bladerunner: until...wend? wo hast du denn das gelesen???


Das hatte Rob_ in seinem mittlerweile bearbeiteten Posting stehen Wink
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

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group