Laufende Figur

hallo,

Ich möchte fragen ob man irgendwie eine laufenede Figur machen kann, die genau dorthin lauft, wo man klickt.
Ausserdem sollte sich die grafik ändern, wenn sie nach links oder rechts lauft.

Wie bei www.travianer.de

Hoffe könnt Mir helfen

PS:
Habe JQuery

Da muss ich schon fast lachen :smiley:
Hab sowas mal zu hause gemacht. Zum Testen auch eine Travianer Figur verwendet.

Also zunächst einmal musst du die maus abfangen. Diese Gibt dir ja auch die aktuellen Koordinaten wieder.
Da du ja ein Element bewegst (höchstwahrscheinlich ein img) ,kannst du auch von diesem die Position ermitteln. Das machst du am besten mit dieser Funktion:

[code]
/**

  • Ermittelt die Position eines Elementes
    */
    this.getTopLeft = function(elm) {
    var x, y = 0;
    //set x to elm’s offsetLeft
    x = elm.offsetLeft;
    //set y to elm’s offsetTop
    y = elm.offsetTop;
    //set elm to its offsetParent
    elm = elm.offsetParent;
//use while loop to check if elm is null
// if not then add current elm’s offsetLeft to x
//offsetTop to y and set elm to its offsetParent

while(elm !== null) {
 x = parseInt(x) + parseInt(elm.offsetLeft);
 y = parseInt(y) + parseInt(elm.offsetTop);
 elm = elm.offsetParent;
}
return {Top:y, Left: x};

};
[/code]Mit .animate (.animate() – jQuery API) kannst du das Element bewegen lassen.
Dabei musst du nun 2 Sachen beachten. Ist die X-position der Maus kleiner als die der Figur setzt due die Grafik nach links. Ansonsten nach rechts.
Die zweite Sache ist, dass du die figur zwar animieren kannst, aber keine Geschwindigkeit eingeben kannst, sondern nur die Dauer der Bewegung.
So würde deine Figur mit fester zeiteinstellung für eine 100px Strecke genau so lange brauchen wie für 500 px.
Um die zeit also variabel zu machen brauchst du die Strecke.
Da wir 2 punkte haben, kannst du die Strecke Prima über den Satz des Pythagoras ausrechnen.(a² + b² = c²) Da hab ich auch noch eine Skizze für dich :smiley:
Wenn du dann die Strecke hast musst du nur vorher als Variable die Pixel pro sekunde zu definieren.
Dann Strecke/variable_pixel_pro_sek → Zeit.
Probier dich einfach mal damit. :slight_smile:

Irgendwie krieg ich das nicht hin :frowning:

Die Aussage ist nicht hilfreich. Willst du es denn selber machen? Wenn ja. Sag wo es hapert. :slight_smile:

Ja ich will es selber machen, es hapert bei dem teil, das wen ich klicke, das die Figur einen weg entlang läuft.

Du hast jetzt nur wieder dein Ziel geschrieben. Dass es daran hapert wussten wir ja. Aber wo bleibst du technisch genau stecken?
Keinen Lösungsansatz? Kannst du überhaupt etwas Javascript?
Wo genau hört dein Wissen auf. Was könntest du denn umsetzen?
Kannst du denn mit dem jQuery Framework umgehen?
Du siehst Fragen über Fragen. Ohne genaue Beschreibung wo du denn nun scheiterst kommen wir nicht weiter.

Ich kann mehr oder weniger nur die basis von JS
Ich habe bereits den code das wenn ich auf den boden klicke, das er dort hin fährt.
Jetzt ist aber das problem, das er nur dem weg entlang gehen sollte.

Anders gesagt: Du möchtest eine Wegfindung implementieren? Da wird es etwas Theorie brauchen.

A*-Algorithmus

danke, aber das problem ist, das dies mir nicht besonders weiter hilft.

Ich habe bereits den code das wenn ich auf den boden klicke, das er dort hin fährt.
Jetzt ist aber das problem, das er nur dem weg entlang gehen sollte.

Na ja, was erwartest du als Antwort auf solche allgemeinen Aussagen? Du solltest lernen, deine Problembeschreibungen und Fragen zielgerichteter zu formulieren – auch in Hinblick auf die Umsetzbarkeit durch ein Computerprogramm. Mir ist klar, dass das schwierig ist und eine Menge Übung braucht.

Es dürfte in der Regel helfen, ein Problem so lange in kleinere Teile zu zerlegen, bis du irgendwann auf einer Ebene angelangt bist, auf der du dir zumindest vorstellen kannst, wie du es als Quellcode umsetzen würdest.

Solche „zerlegenden“ Fragen wären hier zum Beispiel:

  • Wie speichere ich in einer Datenstruktur, ob ein beliebiger Punkt ein „Weg“ ist oder nicht?
  • Wie definiere ich einen „Schritt“?
  • Brauche ich irgendeine Art von Zeitkonzept, damit ich sagen kann: „ein Schritt pro Zeiteinheit/Runde“?

Ich weiß nicht, ob diese Fragen relevant sind für das, was dir vorschwebt. Aber ich hoffe, es verdeutlicht in gewisser Weise, wie sich ein komplexes, unüberschaubares Problem in kleinere Aufgaben aufteilen lässt.

Ich sehe, das ist komplexer als ich dachte, ich vergesse das einfach wieder, ist ne nummer zu hoch für mich