![]() |
scrollen ohne scrollbar
hallo
ich bin gerade dabei ein super mario klon zu programmieren. mein problem ist wenn ich bei der scrollbar visible auf false setze funktioniert das scrollen nicht mehr. doch es sieht erstens hässlich aus mit der scrollbar und man könnte vorscrollen ohne mit der figur weiterzulaufen was ja nicht der sinn des spieles ist. gibt es da eine andere methode? |
AW: scrollen ohne scrollbar
Ich denke, Du solltest dafür nicht die VCL verwenden.
Für Spiele sind grafische Umgebungen sicher besser geeignet. Ich habe aber damit keinerlei Erfahrungen - es gab mal ein Buch, in dem die Spieleentwicklung mit Delphi erklärt wurde... |
AW: scrollen ohne scrollbar
Wäre das nicht ein Anwendungsfall für
![]() |
AW: scrollen ohne scrollbar
eigentlich würde ich gerne bei vcl bleiben da dass einfacher ist. Und nicht so viel quellcode und daher viel verständlicher und übersichtlicher.
|
AW: scrollen ohne scrollbar
Du kannst die Komponenten auch selber verschieben.
einfach entsprechend Left und Top setzen alles in ein großes Panel und dann dieses Panel verschieben bringt auch nicht viel, da es eine maximale Größe für solche Komponenten gibt (die Desktopgröße). Ich würde eh nicht alles gleich erstellen. rechts außerhalb des Bildes alles dynamisch erstellen, kurz bevor es eingeblendet wird und link alles wieder freigeben, sobald es aus dem Bild rausgewandert ist. Nun muß man nur noch die wenigen sichtbaren und derzeit erstellten Komponenten verschieben (Left). |
AW: scrollen ohne scrollbar
Zitat:
|
AW: scrollen ohne scrollbar
Das ist nicht zu kompliziert, das ist ganz genau so, wie man es von je her macht. Und zwar aus gutem Grund ;)
|
AW: scrollen ohne scrollbar
Viele 2D-Spiele und erst recht 3D-Spiele bauen auf folgenden Grundprinzip auf:
1.) die Spielewelt ist zunächst nur ein virtuelles Model. Spielfiguren, Waffen,usw sind zunächst nichts anderes als Objekte mit entsprechenden Eigenschaften 2.) Das was der Spieler optisch zu sehen bekommt ist ein Ausschnitt aus diesem virtuellen Modell (somit ist Scrollen nur ein Verschieben des Ausschnitts) 3.) alle Objekte, die im sichtbaren Ausschnitt sind werden an ihren jeweiligen Positionen gezeichnet 4.) viele Objekte werden nicht komplett neu gezeichnet, sondern liegen schon fertig als kleine Bitmaps vor (Sprites) 5.) um Flackern zu unterdrücken wird meist auf einen sog. Framebuffer (im Prinzip ein Bitmap) gezeichnet und dieser Framebuffer in den Videobuffer der Grafikkarte kopiert bzw. eingeblendet Tja, und gilt auch noch: Spieleprogrammierung ist höchst anspruchsvoll, mal eben so einen SuperMario Klon zu programmieren wird nicht klappen. Als Spieleprogrammierer muss man wohl einen langen steinigen Weg gehen. Das heisst man sollte folgende Spiele schon mal programmiert haben: (in Reihenfolge aufsteigender Schwierigkeit) Tic-Tac-Toe, Memory, 4-Gewinnt, Tetris, Meteor Wars, 3D-Tetris |
AW: scrollen ohne scrollbar
zu dem bild ausschnitt ist zu sagen:
Alle deine obkete die sichtbar sein köönten(also grafische), haben eine Position(nehmen wir mal x/y dafür). Diese positionen werden relativ zur kamera gezeichnet. DAs heißt das die Position des Objektes(Weltkoordinaten) subtrahiert werden, mit der position der Kamera. So erhälst du die ViewKoordinaten. wenn du also folgendes machst(vor jedem zeichnen):
Delphi-Quellcode:
Damit erhälst du die richtigen koordinaten. Wenn deine map scrollen soll, "bewegst" du einfach die kamera. Das ist alles. Vor dem zeichnen dann nurnoch checken ob das objekt innerhalb des Views ist und das wars.
PosToDraw.X := Object.X - Kamera.X;
PosToDraw.Y := Object.Y - Kamera.Y; //<--Bei Delphi muss hier ADDIERT werden, da Y von oben nach unten verläuft. Beispiel gilt für Y wen es von unten nach oben geht. Aus obigem vllt eine funktion machen wie TranslateWorldToViewPos ;) PS: außerdem am besten NICHT mit einzelnen VCL komponenten für jedes Spielobjekt hantieren. Das einzig grafische ist eine Paintbox, und darauf werden alle bitmaps gezeichnet ;) MFG Memnarch |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz