Mensch Ärgere dich nicht Figuren bewegen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Eistee.

    Mensch Ärgere dich nicht Figuren bewegen

    Hallo ihr leiben Mitglieder,

    Ich bin zurzeit dabei das Spiel Mensch ärgere dich nicht zu Programmieren. Meine Form des Spiels wäre jetzt folgende:

    Ich habe Mehrere PictureBoxes auf einer WindowsFormsanwendung zu einem Spielfeld zusamengefügt und nun soll jedes Feld wenn man die Figur bewegt in die jewalige farbe dieser eingetaucht werden (also Figuren eher weniger die Felder zeigen sozusagen den standort der figur an)

    jetzt aber meine Frage: Gibt es einen Anderen weg als für jede Figur jede möglichkeit auf jedem Kästchen einzuprogrammieren?( (eine Mathematische formel z.B.) weil mir fällt da nichts anderes ein, als das für jedes Käastchen zu machen.

    Freue mich auf eure Antworten und bedanke mich schonmal im Voraus

    MfG

    Xalabama
    Du kannst Dein ganzes Spielfeld auf der gesamten Form im Paint-Event malen.
    Ich denke, da ergeben sich weitaus mehr Möglichkeiten, als bei einzelnen PictureBoxen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich habe bereits ein "Dont get angry" - Spiel programmiert. Unterschied ist: Ich habs leider nicht in VB, sondern in C# gemacht und ich habe keine PictureBoxen benutzt, sondern wie hier schon erwähnt ein Paint-Event, bzw bei mir eine abgewandelte Form davon. Dazu kommt noch, dass ich das XNA-Framework benutzt habe, da mir das Ergebnis viel besser gefallen halt (persönliche Meinung, bitte jetzt kein Offtopic hier raus machen).

    Ich will und kann dir jetzt hier nicht meinen Code geben, da dich das auch nicht weiter bringt und ich nicht das standard Spielfeld gezeichnet habe, sondern einen Kreis um mal was neues zu machen. Den Kreis habe ich damals mittels der mathematischen Formel für die Kreis - Berechnung zeichnen lassen.

    TIPP: Mache dein Spiel OOP, sonst ist es nachher einfach nur Mist. Zum zeichnen von Spielveränderungen nehme ich normalerweise IMMER 2-Dimensionale Arrays und verschachtele dann for-Schleifen.

    Du könntest nun so weiter machen wie bisher, aber das Ergebnis wird am Ende nicht schön werden. Statt dessen empfehle ich dir OOP zu programmieren und dich mit komplexeren Lösungen vertraut zu machen.

    lg aetium

    PS: zwei von vielen mathematischen Formeln, die ich verwendet habe ( werden dir nichts bringen, aber nur um dir zu zeigen, was für einen Umfang sowas annimmt ). Solltest schon ein gewisses mathematische Verstädnis haben, wenn du mit Formeln arbeitest.

    (385 + (int)(Math.Sin(2 * Math.PI / 360 * 9 * i) * 240), 285 + (int)(Math.Cos(2 * Math.PI / 360 * 9 * i) * -240), 30, 30)

    (385 + (int)(Math.Sin(2 * Math.PI / 360 * 9 * i) * (205-j*35)), 285 + (int)(Math.Cos(2 * Math.PI / 360 * 9 * i) * -(205-j*35)), 30, 30);

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „aetium“ ()

    pseudocode:

    Quellcode

    1. erstelle ein Mehrdimensionalesarray ( 2 dimensionen reichen ) mit breite und höhe
    2. schreibe in jeden eintrag die Koordinate
    3. rechne im Paintevent die Koordinaten im Array hoch
    4. zeichne auf dem hochgerechneten Array

    fertig^^
    da haste dann ein array
    0,0|1,0|2,0
    1,0|1,1|2,1
    2,0|1,2|2,2

    und dadrin zeichnest in GDI
    Ich glaube bei einem Don't get angry würde ich die Felder alle ein einem Array durchnummerieren (eindimensionales Array).
    Daran könnte man ohne großen aufwand, die Positionen festhalten und sogar die Koordinaten für die zeichnungen ablesen.

    Hab mir ejtzt nicht viel gedaken gemacht, wäre aber auf anhieb meine Lösung.

    @AliveDevil

    0,0|1,0|2,0
    1,0|1,1|2,1
    2,0|1,2|2,2 <-- Was soll das darstellen?