• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

play-anywhere-wherigo aber wie?

FSNTL

Geocacher
Moin,
ich überlege aus meinem Wherigo einen play-anywhere zu erstellen, habe aber leider keinen Plan von LUA...

Könnte mir hier Jemand eine LUA Funktion zur verfügung stellen mit der ich meine erstellten Zonen "moven" kann?
(es sind 48 Zonen die in einem bestimmten Muster angeordnet werden müssen)


Danke und Gruß
FSNTL
 

dennistreysa

Geocacher
Das mit dem 'moven' klappt leider nicht auf allen Geräten, zumindest scheint es auf dem iPhone ab und zu Probleme zu geben, aber ich sage dir trotzdem mal wie ich es für meine Cartridge gemacht habe (http://coord.info/GC5CG80).

Zu allererst musst du deinen Zonen einen festen Variablennamen geben, dies machst du unter 'Identifier', in meinem Beispiel wäre das 'zone_1'
Unbenannt-1_zpsrq76we8l.jpg

Dann benötigst du eine Funktion die eine Zone verschieben kann, allerdings muss man sich vorher ein paar Dinge überlegen.

Frage 1: Wohin sollen die Zonen verschoben werden?
Nun, man braucht eine Art Fixpunkt mit dessen Hilfe man die Zonen verschieben kann, man könnte auch sagen der Ursprung mit dem wir später relativ die Zonenpunkte verschieben werden. Schau dir dazu folgendes Bild an:

Unbenannt-2_zpsikq1wxij.jpg

Die linkte untere Zone habe ich so angelegt, dass alle 3 Punkte auf der selben Koordinate liegen (es gibt bei Wherigos so etwas wie einen einzelnen Punkt gar nicht), dies ist unser Ursprung. Das Rote Gebilde ist die Zone die wir verschieben wollen.
Um nun auf die Frage zurückzukommen, wohin die Zonen verschoben werden sollen machen wir es uns einfach und legen einfach fest, dass der Spieler immer im Ursprung steht, d.h. war eine Zone vorher östlich des Ursprungs wird sie nach dem Verschieben östlich vom Spieler sein. Das ist nicht nur einfach, sondern so können wir auch genau planen, wo der Spieler stehen muss.

Frage 2: Wie verschieben wir?
Nun, der Mathematiker sagt sich jetzt: 'Das ist einfach, wir berechnen einfach die Entfernung und den Winkel zwischen dem alten Ursprung und der Spielerposition und können dann sämtliche Zonenpunkte um diese Distanz und den Winkel verschieben'. Diese Annahme ist an sich auch völlig korrekt, die Sache hat nur einen Haken! Manche Player scheinen nicht wirklich genau zu rechnen (zu wenig Nachkommastellen), dies führt dazu dass die Zonen unschön 'abdriften' wenn der Spieler zu weit weg vom originalen Ursprung steht, WhereYouGo hat das zumindest bei mir so gemacht. Wir brauchen also einen besseren Ansatz! Meine Idee (und die scheint in der Praxis auch zu funktionieren) sieht folgendermaßen aus: Wir berechnen für alle Punkte der Zonen den Abstand und den Winkel zum Ursprung und legen einen neuen Punkt an, der eben diesen Abstand und Winkel hat, diesesmal aber relativ zur Spielerposition, also dem neuen Ursprung. Aber Vorsicht: Das klappt natürlich nur, wenn der Abstand zwischen originalem Ursprung und den Zonenpunkten vergleichsweise klein ist (mehrere hundert Meter maximal)!

Frag 3: Und wie sieht das nun im Code aus?
Als erstes Brauchen wir eine Funktion, die uns für zwei gegebene Punkte den Abstand und den Winkel berechnet. Da gibt es zwar die Wherigo-Interne Funktion 'VectorToPoint', diese produziert aber auf alten iPhone-Playern ein um 180° gedrehtes Ergebnis, aus diesem Grund basteln wir uns unsere eigene zusammen (habe ich aus dem WherigoHandbuch 'geklaut'): http://pastebin.com/Kp3jMz3y
Wie wir diese verwenden zeige ich später.
Als nächstes brauchen wir die eigentliche Verschiebe-Funktione, diese bekommt als Input die Punkte der Zone die wir verschieben wollen, den alten und den neuen Ursprung (dieses Mal selbst programmiert :D): http://pastebin.com/KJ8RTKA5
So, nun haben wir die beiden wichtigen Funktionen, doch wie geht es weiter?
Ich habe mir mal erlaubt den Rest direkt im Code zu kommentieren. Mit der Funktion 'createGame' werden all unsere Zonen verschoben: http://pastebin.com/728R8N2f

Ganz außen bleibt dann nur noch der Aufruf von createGame() übrig ;)


Puh, was ein langer Text, ich hoffe das hilft dir weiter ;)
 

dennistreysa

Geocacher
Ok, ich habe bei mir keinen Ursprung verwendet, sondern benutze die Linke untere Ecke des Spielfelds, aber kommt auf das Gleiche drauf hinaus ;)

Unbenannt-3_zps7l0gaimb.jpg
 
OP
F

FSNTL

Geocacher
vielen, vielen Dank für eine so lange gründliche Antwort :gott:
Werde ich mir gleich mal in Ruhe ansehen.

Die 999 habe ich gerade im Simulator mal getestet, sehr cool :D


Ich melde mich wieder.
Gruß
Frank
 
OP
F

FSNTL

Geocacher
Ich habe mal den ganzen Code in eine Catrige gebaut und versucht das ganze mit createGame() zu starten...

Dann kommt ne Fehlermeldung (....Die Länge darf nicht kleiner als Null sein.....), wo gebe ich denn eigendlich die Werte ein um die verschoben werden soll, oder die Punkte.....?

Danke und Gruß
Frank
 
OP
F

FSNTL

Geocacher
Ja, funktioniert im Simulator von Urwigo, hat mich auch gewundert.
In wenigen Sekunden hatte ich die Finalkoordinaten :shocked:

Aber richtig gut gemacht mit dem Aufbau, sogar das Spielfeld rotieren ist möglich... :applaus:
 
OP
F

FSNTL

Geocacher
Ach so, noch etwas.

Ich bin gerade Betatester von PIGO, die arbeiten gerade an einer neuen Version der Wherigo App für das IPhone.
(Anzeigen der Zonen als "Form" wird es aber auch da wohl leider nicht geben)
 
OP
F

FSNTL

Geocacher
jipp
 

Anhänge

  • image.png
    image.png
    67,3 KB · Aufrufe: 500
  • image.png
    image.png
    110,4 KB · Aufrufe: 500
  • image.png
    image.png
    90,1 KB · Aufrufe: 500

Charlenni

Geomaster
D.h. Es hat sich wirklich nur die Oberfläche geändert. Oder wurden auch Fehler korrigiert? Z.B. Werden geänderte Daten sofort angezeigt?
 

Charlenni

Geomaster
Nun ja, wenn du einen Gegenstand "Stopuhr" baust, der in der Beschreibung die Restzeit anzeigt, dann wird auf dem iPhone bei fortschreitende Zeit die Beschreibung nicht aktualisiert. Erst wenn du die Details verlässt und wieder aufrufst werden diese aktualisiert.
 

dennistreysa

Geocacher
So, also Fehler gefunden, irgendwie mag Urwigo keine einfachen Anführungszeichen/Hochkommata in den Kommentaren, also diese hier: ' Entfernt man diese läuft es.

Nochmal zur Erklärung was die Verschiebung anbelangt: Du musst keine Entfernung eingeben um die du verschieben möchtest, du legst einfach einen Ursprung fest, dies ist dein Fixpunkt. Möchte der Spieler nun das Spielfeld anlegen wird die Spielerposition als neuer Ursprung angenommen und relativ dazu das Spielfeld aufgebaut, hier nochmal eine kleine Grafik:

Unbenannt-6_zpsemdwjmyz.png

Also war z.B. der Winkel zwischen Ursprung und Punkt 1 der 'alten' Zone 30° und 27m, dann wird Punkt 1 der 'neuen' Zone 30° und 27m von der Spielerposition entfernt angelegt.

Das einzige was du dir überlegen muss, ist wo du den Ursprung platzierst.
 
OP
F

FSNTL

Geocacher
Die Fehlermeldung ist weg, aber im Emulator kommt jetzt beim Auruf dieser Fehler.... :(
 

Anhänge

  • Fehlermeldung_01.JPG
    Fehlermeldung_01.JPG
    33,9 KB · Aufrufe: 454
Oben