Fensterposition ändern



  • hi!
    ich hab ein prog geschrieben mit einem charakter mit dem man über eine map laufen kann...

    a la diablo..der charakter is fix in de rmitte vom bild und die map bewegt sich.,..
    meine frag jetzt:

    gibts eine bessere methode die position des fensters zu ändern als wenn ich einfach das ganze bild verschiebe?

    also fensterausschnitt nach rechts bedeutet dann für alle bilder und charaktere koordinaten in X minus schrittweite...

    aber das is doch nicht so gut oder?...weil ich dann bei jedem charakter zu den X und Y koordinaten die X und Y des fensters rechnen muss...

    gibts da was anderes?...
    wo ich zb. sage setwindowposition(150,200) oder so? ->ohne dass ich den inhalt verschiebe?

    Greetz Kuldren



  • Dieser Thread wurde von Moderator/in flenders aus dem Forum WinAPI in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Wenn du wirklich nur ein Fenster verschieben willst:

    BOOL SetWindowPos(
    
        HWND hWnd,	// handle of window
        HWND hWndInsertAfter,	// placement-order handle
        int X,	// horizontal position
        int Y,	// vertical position
        int cx,	// width
        int cy,	// height
        UINT uFlags 	// window-positioning flags
       );
    

    Aber ich glaub du hast da irgendwelche anderen schweinereien vor. 🤡

    Vieleicht solltest du das ganze etwas genauer umschreiben, sonst wird dir hier auch keiner helfen können.



  • also...
    ich hab ein fenster in dem ch jetz die map sehe und in der mitte meinen charakter...
    wenn ich den charakter jetz bewegen will...dann muss er sich ja jetzt über die map bewegen
    allerdings bewege ich die map!...
    in dem ich die koordinaten der map einfach um die schrittweite des charakters verschiebe!
    somit bleibt der charakter immer in der mitte des bildes und die map verschiebt sich...
    jetz muss ich aber wenn ein anderer charakter oder ein monster auf der map sind...
    diese natürlich auch um die schrittweite des charakters verschieben!...
    damit sie auf ihrer position auf der map bleiben und sich ned auch bewegen!

    weil ich ja eine map hab die größer is als der bildausschnitt muss ich ja scrollen und das tu ich eben in dem ich die map verschiebe...
    in richtung x und y...

    also wenn ich den charakter nach rechts bewege, bewegt sich in wirklichkeit die map nach links...

    ich hoffe ich hab das jetz verständlicher erklärt...is auch bissal schwer zum rüberbringen^^...

    ich wollt nur so mal fragen wie ihr denn scrollt in euren spielen!...



  • Hihi, du bist lustig.
    Du glaubst, dass dir C oder C++ eine Funktion geben, die dir Ermöglicht, die Koordinaten deiner Viruellen Welt (die du selbst implementiert hast) in Bildschirm Koordinaten umzurechnen! So eine Funktion wirst du nicht in C, nicht in C++, nicht in DirectX, nicht in der SDL, noch in sonst einer Graphikbiliothek finden.

    Du musst halt die Koordinaten, deiner Virtuellen Welt, in Bildschirmkoordinaten umrechen. Du musst dir halt in irgendeiner Variable speichern, wo dein Bildschirm ist...



  • ->das war meine frage!

    ob es da eine bessere methode gibt...also eine art das zu machen...ned einen befehl oder sowas...
    eben einen tip...
    so wie z.b. die wegfindung oder so..
    man kann das unterschiedlich programmieren und ich wollt wissen ob ihr da eine gute art das zu verwirklichen kennt!



  • Speicher in einer Variable, wo sich die obere, linke Ecke deines Bildschirms in deiner virtuellen Welt befindet. Dann musst du nur noch von jedem Bild, das du Zeichnest, diese Koordinaten abziehen.

    Mal so nebenbei: Du hast nach einer fertigen Funktion gefragt, nicht nach einem Lösungsweg.



  • ja genauso mach ich das ja...

    nur so nebenbei: ich hab gefragt wie ihr das in euren spielen so macht, damit ich mal nen analtspunkt habe ob/wie ich das verbessern könnte...

    Greetz Kuldren



  • In der FAQ sollte es noch einen Eintrag dazu geben.

    Bye, TGGC


Anmelden zum Antworten