vb.net kartenspiel paint, grafic versus Picturebox

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von joha2017.

    vb.net kartenspiel paint, grafic versus Picturebox

    Hallo Leute,

    ich habe mal eine grundsätzliche Frage. Ich habe in vb,net 2010 Ein Tarot Karten Programm mit mehreren Auslage Möglichkeiten geschrieben. Alles funktioniert auch ganz prima. Allerdings habe ich Pictureboxen verwendet. Meine Frage an Euch. Es funktioniert wie gesagt, genau wie es soll. Aber ich hab mich jetzt doch etwas näher mit dem Thema Grafik befasst und lese Pictureboxen sind an sich eine schlechte Lösung.

    Meine vielleicht dumme Frage, wenn alles funktioniert. Warum dann keine Pictureboxen verwenden? Ich steige jetzt tiefer in die Grafik ein und fange an mich mit Paint usw. zu befassen. Aber hat jemand eine Antwort. Ob mein voll funktionierendes Programm nichts taugt?

    Ich wünsche allen einen ruhigen 1ten Advent und verzeiht mir die vielleicht etwas naive Frage.
    Es kommt darauf an was du mit den Pictureboxen anstellst.
    In meinem Kopf ist Tarot, wie die meisten Kartenspiele*, eher etwas statisches. Die Karten werden immer auf Feste vordefinierte plätze gelegt, und allzu viele davon gibt es afaik auch nicht, sodass du am Ende lediglich eine recht überschaubare Menge an Pictureboxen auf deiner Form hast.

    Was oft gemeint ist mit den "bösen Pictureboxen" ist, dass Leute hier schon öfters versuchten die Pictureboxen als "GameObject" zu verwenden. Sie werden also ständig hin und her bewegt, erzeugt und gelöscht, müssen ständig andere Bilder anzeigen (Walk-Cycle einer Figur), usw. Dafür sind sie jedoch nicht ausgelegt. Klar kann man das machen, jedoch hat allein das dynamische erzeugen einer Picturebox nen gewissen overhead, selbes gilt auch für das Bewegen, Resizen usw. was dann oftmals sehr schnell zu einer miserablen Performance führt. Wenn man ein umfangreicheres Spiel schreiben möchte, sollte man auch zu entsprechenden Werkzeugen greifen.

    *Mir ist bewusst, dass Tarot kein Kartenspiel an sich ist, jedoch aus der Sicht eines Programmierers als solches gut beschrieben werden kann.
    SIMDoku (Simple Dokumentenverwaltung)
    Mein Lernprojekt um die verschiedensten Facetten der .NET Entwicklung zu erkunden.
    GitHub

    VB Paradise Dark Theme
    Inoffizieller VB-Paradise Discord.
    klasse, danke für deine schnelle Antwort du hast schon recht es ist statisch, nur die Karten selber ändern sich, nicht die Positionen. Ich war echt irritiert über die Ablehnung von Pictureboxen, an deine Begründung hatte ich gar nicht gedacht, da sich ja nichts bewegt, ausser dass verschiedene Karten angezeigt werden. Danke dir.
    Ich würde auch nie Pictureboxen verwenden - liegt daran, dass ich mit OwnerDrawing gut klarkomme.
    Ich meiner Welt ist ein Spiel v.a. eine Datenverarbeitung, also man muss ein geeignetes Datenmodell schaffen (ein typisiertes Dataset eignet sich dafür sehr gut).
    Und die DatenObjekte (also die typDataRows) müssen auch angeben, wie und wo sie gezeichnet werden - dass ist die Besonderheit an dieser Art von Datenverarbeitung.

    Evtl ist in OwnerDrawing iwas dabei, was für dich in diese Richtung interessant ist.

    Auch gugge du kannst in allgemeine Zugriffs-Lösung für: MySql, Access, SqlCe, SqlServer, DatasetOnly .
    Dort gehts weniger um Karten, aber dafür ist da ein typDataset eng mit OwnerDrawing verheiratet.
    danke dir jür deine Antwort und Tips. Ich schau mir das ganze in c# an, hab mir grade den Kurs bei Unity geholt. Die Software funktioniert mit Pictureboxen allerdings eineandfrei. Wenn ich dich richtig verstehe wäre sie aber nur für mich privat zu gebrauchen und nicht geeignet für eine Veröffentlichung wegen den benutzten Pictureboxen, oder?
    Da interpretierst Du entweder mehr in die Antwort rein als nötig oder ich filtere mehr Informationen raus als sinnvoll. PicBoxen haben doch ihre Daseinsberechtigung, nur werden sie eben manchmal für Sachen hergenommen, die eben mit anderen Mitteln besser erreichbar sind. Wenn es bei Dir um statische Karten geht, ist doch alles gut. Anders ausgedrückt: Nein, eine PicBox disqualifiziert Deine App nicht für die Veröffentlichung.

    Zum Thema andere Herangehensweise: Genausogut könnte ich auch sagen, dass ich für Datenverarbeitung eigene Klassen ohne ein tDS mache, darin Bitmap-Objekte haben und die Bitmaps mittels BindingSource in PicBoxen anzeigen lasse. Und das De/Serialisieren (alias Persistieren und Wiederherstellen alias Speichern und Laden) mach ich über einen BinaryFormatter.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    vielen lieben Dank, ich war echt verunsichert, inzwischen habe ich die Software mit Innosetup sogar voll installtionsfähig gemacht sie läuft absolut fehlerfrei. Meine Verunsicherung kommt daher, dass ich mir alles selber angeeignet habe, ohne Lehrer und da eben unsicher bin. Da ich jetzt aber eh tiefer in Grafik und Spiele einsteige werde ich auch mit Graphic und Paint arbeiten , dann wird meine Unsicherheit wohl vergehen Danke an euch ihr habt echt geholfen.
    Dafür gibt es das Showroom-Unterforum. Beachte bitte die Regeln, die Marcus in dem Erklärungsthread auflistet. Eine ausführbare Datei muss dabei sein. Der Quellcode darf dabei sein. Du kannst beides dann bereinigt (außerdem ohne bin-, obj-, .vs- und .git-Ordner) und gezippt dort über [+ Erweiterte Antwort] -> _|Dateianhänge|_ -> [Hochladen].
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.