Geocaching Tools

Veröffentlicht von Lukas am

Unsere Geocaching-Tools

Gestern habe ich mich erstmals an eigene Tools für das Geocachen gesetzt. Das Ergebnis kann sich meiner Meinung nach inzwischen auch sehen lassen.
Zum aktuellen Zeitpunkt gibt es genau zwei Tools:

  • BWW
  • Rot13

Doch ich möchte nicht all zu viel über die Tools in der Nutzung schreiben, sondern auf die Programmierung eingehen. Die Lösung für dieses Skript lässt sich eventuell auf andere Problemstellungen übertragen, weshalb ich es unbedingt erwähnen möchte.


Kommen wir direkt zur Programmierung.

Vorab: Ich liefere kein fertiges Skript, sondern lediglich einen Lösungsansatz. Die eigentliche Programmierung obliegt dir selbst. Ich bin allerdings bereit dazu, individuelle Hilfestellung zu geben, sofern von dir gewünscht. Hierfür kannst du mir gerne eine E-Mail schreiben oder in den Kommentaren deine Frage oder dein Problem formulieren.

Wie geht man nun an ein solches Problem ran? Nehmen wir uns das Beispiel des Buchstabenwortwerts (BWW) vor.
Dein Skript muss in der Lage sein, eine Art Verzeichnis über alle Buchstaben und deren zugehörigen Werte auszulesen.
Doch welche Art von Verzeichnis kann man hier nutzen?

Möglichkeit 1: Ein Textdokument

Ein Textdokument, in welchem alle Buchstaben und deren Werte gespeichert sind, wäre möglich. Jedoch müsste man ständig auf die Datei zugreifen, was ein hoher Aufwand beim Programmieren wäre und nur zu einem sehr langen Skript führen würde.

Möglichkeit 2: Eine Datenbank

Zugegeben, die Möglichkeit mit der Datenbank ist sinnvoll, wenn man sehr viele „Definitionen“ festlegen muss und diese auch häufig vor hat zu ändern. Allerdings wäre das in unserem Fall nicht so, weshalb unsere Datenbank aus einer minimalen Anzahl von Datensätze bestehen würde und nur einen Bruchteil der Speicherkapazität nutzen würde, die man bei einem Hoster zur Verfügung hat.

Doch was sonst?

Wie viele andere Programmiersprachen unterstützt PHP Arrays.
Einfach gesagt ist ein Array eine Variable, welche viele Werte beinhalten kann – ähnlich einer Liste (bitte nicht verwechseln mit Listen als Begriff in der Programmierung!).

Daher nutzen wir:

Möglichkeit 3: Arrays

In einem Array speichern wir alle Werte, welche unser Skript unterstützen soll und weisen diesen Werten wiederum andere Werte zu.

Das könnte dann wie folgt aussehen:

$abc = array("A" => 1, "B" => 2, "C" => 3);

Wie man erkennen kann, ist die Definition eines Arrays sehr einfach. In unserem Beispiel achten wir lediglich darauf, dass wir einem String einen Integer-Wert zuweisen. Damit erleichtern wir uns später das Rechnen, da man mit einem String bekanntlich nicht rechnen kann.

Jetzt mehr erfahren:  Wie du PHP Session-Probleme lösen kannst

Natürlich ist der Code des Arrays oben nicht vollständig, denn du musst alle Zeichen festlegen, welche später vom Benutzer genutzt werden sollen. Alles was dort nicht drinsteht, wird nicht unterstützt. Das Array bildet sozusagen eine Art Lexikon für unser Skript, wo dieses automatisch die Zeichen nachschlägt.

Kommen wir zum Programmkern:

Im Programmkern läuft die eigentliche „Berechnung“ ab. Die Berechnung kommt in eine Funktion, welche mithilfe von Parametern gerufen wird. Übergeben werden müssen das Array und die Eingabe des Benutzers.

Aussehen könnte der Rumpf der Funktion dann so:

function berechnen($eingabe, $lexikon) {
         hier der Kern
}

An dieser Stelle seid nun ihr gefragt. Wer sich öfter schon mit PHP beschäftigt hat, wird dieses Problem in Minuten lösen können.

Du solltest dann zu deinem Skript eine HTML-Seite schreiben, wo die Ausgabe der Berechnung und die Eingabe des Wortes stattfinden.


Alles in Allem möchte ich euch hiermit einen Anstoß liefern, wie man ein solches Skript innerhalb von kurzer Zeit selbst schreiben kann. Die Schwierigkeit besteht hier lediglich darin zu wissen, wie man es anstellt, dass das Skript alle Buchstaben durchläuft und die Werte aufsummiert.

Die Ausgabe kann erfolgen per Rückgabe einer Variable oder direkt im PHP-Skript. In letzterem Falle wäre eine schöne Trennung von Skript und HTML allerdings nicht möglich.

Zudem ist es auch möglich, dieses Skript auf einer einzigen PHP-Seite zusammen mit dem HTML-Text unterzubringen! Da müsst ihr allerdings etwas erfinderisch sein, da vom Formular keine Daten an eine andere Datei übergeben werden können.
Als Anregung und Stichwort sage ich hier nur: GET.

Zu Beginn des Skripts müsstet ihr im Falle von GET eine zusätzliche Abfrage einbauen. Mehr verrate ich nicht.

Ich würde mich sehr darüber freuen, wenn der Eine oder Andere ein eigenes Skript schreibt und bereit ist, dieses zu zeigen. Im Gegenzug dazu dürft ihr selbstverständlich auch die Programmierung des Skripts von hobbyblogging.de einsehen.

Für Fragen zur Programmierung stehe ich zur Verfügung.

Ich wünsche dir nun viel Spaß beim Basteln.


Tools: Hier klicken (derzeit leider offline)


Lukas

Hi, ich bin Lukas, ein leidenschaftlicher Wirtschaftsinformatiker und Smart Home-Enthusiast. Seit Jahren teile ich meine Erfahrungen und Kenntnisse über Hausautomation und Digitalisierung auf meinem Blog. Meine fachliche Expertise in IT-Systemen und Netzwerken ermöglicht es mir, komplexe Smart Home-Lösungen zu entwerfen und zu implementieren, speziell mit dem Einsatz von ioBroker. Mein persönliches Smart Home-Projekt, das ich auf einem selbst konfigurierten Server-Cluster in meinem Keller betreibe, ist ein Zeugnis meiner Fähigkeiten und meines Engagements für intelligente Technologie. In meinem Blog erkundest du die faszinierende Welt der Hausautomation, mit besonderem Fokus auf ioBroker, und erhältst Einblicke in die neuesten Trends und besten Praktiken. Ob du ein Anfänger oder ein erfahrener Smart Home-Nutzer bist, hier findest du nützliche Tipps, um dein Zuhause sicherer, komfortabler und effizienter zu gestalten. Folge mir auf Social Media über die Links oben, um keine Updates zu verpassen. Ich freue mich darauf, dich auf der Reise zu einem fortschrittlichen und vollwertigen Smart Home zu begleiten!

0 Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert