Grafiken verschieben und Ziel "erkennen lassen"

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von MithCode.

    Grafiken verschieben und Ziel "erkennen lassen"

    Hallo! :)

    Ich programmiere momentan an einem Spiel herum und dazu möchte ich, dass es möglich ist, von einem Feld eine Grafik (momentan benutze ich dazu ne PictureBox) in ein anderes Feld zu ziehen (ins Spielfeld). Je nachdem, welche Koordinaten bzw welche (oder wie viele) Felder das Objekt ausfüllt, sollen die betroffenen Felder geändert werden. Die Felder bestehen aus PictureBoxen, welche ich durch nen Array erzeugt habe.

    Mein Problem jedoch: Ich bekomm es zwar hin, dass der Benutzer mit der Maus die PictureBox verschieben kann (was übrigens grauenhaft aussieht, urgh), aber die Ebenen stimmt nicht (Bild verschwindet hinter nem Panel oder sowas). Dabei muss das Objekt ja mit dem Spielfeld (bzw. nem anderen Panel oder ner anderen Grafik/PictureBox) "interagieren", damit ich das Objekt auf das Spielfeld setzen kann. Wie ich das genau hinbekomme, weiß ich allerdings leider nicht.

    Hat irgend jemand eine Idee oder einen Lösungsansatz?

    Ich bin dankbar für jede Hilfe! :)
    Der Ansatz, Controls als Daten zu verwenden, führt immer wieder in solche Sackgassen. Ganz allgemein sollte man immer Datenverarbeitung und Gui getrennt denken und implementieren.
    Also müssen Datenklassen her, die die Logik repräsentieren - wie diese Daten angezeigt werden steht auf einem anneren Blatt.

    So auch beim Spiel: Bastel dir Datenklassen, die die Logik des Spiels abbilden. Da diese Daten v.a. grafisch mittm User interagieren, sollten sie zusätzlich "wissen, wie sie sich zeichnen müssen". Dazu ein Zeichenflächen-Control proggen, auf dem sie gezeichnet werden.

    gugge Gezieltes OwnerDrawing, ZeichenObjekte im Dataset, Control mit beweglicher Figur, Outlined und ziehbare Schrift.

    Ein spiel zu proggen verlangt ziemliche Kenntnisse, sowohl bei der Datenverarbeitung (Dataset, relationales Datenmodel) als auch bei der Darstellung (OwnerDrawing).