Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   scrollen ohne scrollbar (https://www.delphipraxis.net/159522-scrollen-ohne-scrollbar.html)

fox67 31. Mär 2011 17:02

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?

stahli 31. Mär 2011 17:39

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...

DeddyH 31. Mär 2011 17:57

AW: scrollen ohne scrollbar
 
Wäre das nicht ein Anwendungsfall für Andorra?

fox67 31. Mär 2011 18:07

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.

himitsu 31. Mär 2011 18:35

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).

fox67 31. Mär 2011 18:53

AW: scrollen ohne scrollbar
 
Zitat:

Zitat von himitsu (Beitrag 1092274)
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).

ich glaube dass ist zu kompliziert mann müßte hinten die teile löschen und vorne die neuen wieder hinzufügen. wenn es keine andere möglichkeit gibt werde ich es mit einem timer versuchen der verhindert dass man vor oder zurückscrollt

Medium 31. Mär 2011 23:29

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 ;)

sx2008 1. Apr 2011 03:52

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

Memnarch 1. Apr 2011 14:43

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:
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.
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.

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 01:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz