Pic Box von X nach Y in Schritten

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von romibi.

    hallo eistee,

    meinst du die picturebox selbst ?
    dann setz einfach die location eigenschaft entsprechend.
    eine schleife wäre da eine möglichkeit.

    oder

    meinst du das bild ?
    dazu schaust du dir am besten mal die drawimage eigenschaft der graphics-klasse an.

    gruss

    mikeb69
    Das mit einer Schleife ist eine gute idee (ist meine erste "eigene" :D )

    Doch jetzt habe ich ein Problem:


    Do PLAYER.Location.X + 2 And PLAYER.Location.Y + 2 Exit Do PLAYER.Location.X = 467 And PLAYER.Location.X = 467
    Loop

    Der rote PLAYER ist ein Syntax fehler ?(
    :D

    Also ich hab das so aus meinem Buch verstanden

    Do, Anweisung, Exit Do, Anweisung, Loop

    Also Do öffnet die Schleife dan die Anweisung

    VB.NET-Quellcode

    1. PLAYER.Location.X + 2 And PLAYER.Location.Y + 2
    Dan Exit Do wen das passirt --->

    VB.NET-Quellcode

    1. PLAYER.Location.X = 467 And PLAYER.Location.X = 467


    Loop <--- Beendet die Schleife also so hab ich das aus dem Buch verstanden bitte korrigier mich wen es Falsch ist
    hallo eistee,

    eine do ... loop schleife sieht in etwa so aus

    VB.NET-Quellcode

    1. Do
    2. 'deine befehle
    3. 'evtl. abbruchbedingung
    4. If .... Then Exit Do
    5. 'ende der schleife mit abbruchbedingung
    6. Loop While ......


    jetzt kommst du - wie soll es in deinem fall aussehen

    gruss

    mikeb69

    Ich habs mal veruscht klappt aber nicht ganz da durch das X +2 oder Y +2 niemals auf X 467 Y 467 kommt.. also gehts unendlcih weiter und nach 3 - 5 sekunden stürtzt VB ab

    VB.NET-Quellcode

    1. Do
    2. PLAYER.Location.X +2 And PLAYER.Location.Y + 2
    3. If PLAYER.Location.X = 467 And PLAYER.Location.X = 467 Then Exit Do
    4. Loop

    VB.NET-Quellcode

    1. Do
    2. PLAYER.Location = New Point(PLAYER.Location.X + 2, PLAYER.Location.Y + 2)
    3. If PLAYER.Location.X = 467 And PLAYER.Location.X = 467 Then Exit Do
    4. Loop


    Das ist meine Schleife doch sobald ich Test stürtzt VB nach 3 - 5 Sekundne ab da bei +2 und +2 nie 467 X und 467 Y erreicht wird und die schleife somit unendlich wird :(

    Sorry für Doppelpost :S mein Explorer hing irgentwie und ich dachte die Nachricht wurde nicht abgeschickt KEINE absicht

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

    hallo eistee,

    1. die zeile mit dem player würde ich anderst schreiben
    schau dir mal

    VB.NET-Quellcode

    1. Point.Add

    an.

    2. prüf auf > nicht auf =
    es sollte klar sein, dass wenn man eine zahl immer um 2 erhöht diese nicht unbedingt einen ungeraden wert bekommen wird.

    gruss

    mikeb69
    hallo eistee,

    mit dir krieg ich diese woche mad andy noch (anzahl der beiträge).

    ich mein das in etwa so

    VB.NET-Quellcode

    1. If PLAYER.Location.X => 467 And PLAYER.Location.X => 467 Then Exit D

    wenn du immer 2px schritte gehst hast du einen fehler von maximal 1px - das sollte genau genug sein.

    und vergiss 1. nicht

    gruss

    mikeb69
    :rolleyes: Kannst du mir villeicht ein beispiel mit Poind.Add schreiben wo das bild von 100X 100Y in "einer" schritten nach 300X 500Y verschiebt den ich finde einfach nicht den zusammen hang also was das machen soll bin so ein Visueller Lerntyp komm da grad voll nicht klar :wacko:

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

    Sry wenn ich nochma Frage aber ich habe es nach 5 Tagen immernoch nciht verstanden wie ich das anstellen soll das eine piturebox sich von 100X 100Y in "einer" schritten nach 300X 500Y verschiebt :(

    Kann mir villeicht jemand ein beispiel code dazugeben ich kriegs nciht hin :( please

    Edit: Weiß das wirklich keiner ;( häng grad voll im meinen Projekt fest deswegen würd nicht so betteln wens nicht wichtig wäre Bidde Helft mir

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

    Überlege mal:

    von 100x 100y nach 300x 500y
    sind 200 mal +1x und 400 mal +1y
    oder auch 200 mal +1x und +2y

    Wenn jetzt nicht der Zufall wäre dass man um 200 und 400 verschieben muss, dann macht man halt so:
    grössere zahl um die man verschieben muss durch kleinere zahl um die man verschieben muss (400/200 = 2 oder Bsp. 375/258 = 1.3...)
    dann in die kürzere Richtung um 1 verschieben und in die längere Richtung um das Resultat (2 oder Bsp. 1.3)
    bei Kommas muss man halt die eigentlichen Zwischenpositionen mit Kommastellen noch zwischenspeichern und beim setzen die gerundeten nehmen.
    Aber nicht immer mit den Gerundeten weiter rechnen. Das gäbe wohl eine Verschiebung des Ziels.
    Auch mit Weiterrechnung mit ungerundeten Zahlen kann ich mir vorstellen dass das Ziel leicht verschoben wird, desshalb würde ich am schluss noch das Ziel genau setzen also nicht mit + oder -.

    Viel Glück :)