bewegen mit mausklicks

  • VB6

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Agent.

    bewegen mit mausklicks

    Hi,
    ich will ein Strategie spiel machen in welchem man die Figuren bewegt, indem man per Mausklicks bestimmen soll, wo diese hingehen sollen.
    Ich hab' mir gedacht, dass ich einfach die Koordinaten von der Figur und der Mausposition hernehme und so berechne wohin er gehen soll.
    Mein Problem ist nur, wie ich schaffe, dass die Figur sich immer gleichschnell bewegt , d.h. dass ich nicht einfach die Gesamtlänge der Weges z.B. durch 40 teilen und so meine Figur bewege (Figur.left = Figur.left + (Mauszeigerentfernung / 40)).
    ?(

    P.S.: Die Figur soll schräg zum Zielpunkt gehen.(nicht im ZichZack)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcus^^“ ()

    ms = Millisekunden (1/1000 Sekunde)

    Du sollst doch einfach jeder Streckeneinheit eine Zeiteinheit zuordnen, z.B. 1 Pixel = 1 Sekunde.

    Dann rechnest du die Entfernung (!) zwischen zwei Punkten aus.

    Bei 10 Pixeln braucht der Spieler dann 10 Sekunden, bei 20 Pixeln 20 Sekunden, usw.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Die einfachste Möglichkeit ist:
    if Figur.left > ZielX Then Figur.left=Figur.left-1
    if Figur.left < ZielX Then Figur.left=Figur.left+1
    und das gleiche für Y
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau

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

    Marcus, in deiner Aussage steckt ein logischer widerspruch:
    Du kannst nicht zu beliebig weit entfernten Objekten
    nicht im ZickZack gehen, wenn die Geschwindigkeit
    die du zu Left und Top addierst gleich bleiben soll!

    @Agent, was passiert denn, wenn das ziel bei
    (0.5 | 1) liegt ? Dann würde der ja ewig rumlatschen ;)
    @Agent:
    Danke(dass ich daran net gedacht hab' -.-..)

    @Unknown:
    Ich meine, dass die Figur gleichzeitig left+ und top+ machen soll.
    (nicht erst left+ dann top+...).Was is da der Widerspruch??


    P.S.: für (0.5;1) kann man ja nen Spezialfall machen:
    ElseIf Koordinaten = (0.5;1) Then
    .....
    End If
    Stichwort "Rekusion", also eine sich selbst aufrufende Funktion, die alle möglichen Wege durchläuft und am besten den kürzesten zurückgibt. Ist aber nicht so einfach, denn diese Funktion sollte nicht zuviel CPU-Leistung fordern bzw macht man schnell mal ne Endlosschleife...
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau