12.01.2014 Aufrufe

Dokumentation zum Massive Multiplayer Online Game - Universität ...

Dokumentation zum Massive Multiplayer Online Game - Universität ...

Dokumentation zum Massive Multiplayer Online Game - Universität ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

4. Schiffe und Missionen<br />

40<br />

Um die Flotte nun abzuschicken müssen die Eingaben zunächst überprüft werden. Dazu drückt der User einen<br />

Button, wodurch ein AJAX-Request abgesetzt wird, der die Eingaben auf dem Server überprüft. Sollte es<br />

Probleme geben scrollt die Seite eigenständig nach oben und es wird eine detaillierte Fehlerangabe ausgegeben.<br />

| Fehlerangabe nach Eingabenprüfung<br />

Per javascript wird dabei, je nach Eingabe, <strong>zum</strong> Beispiel folgender Request abgesetzt:<br />

GET json/check?mission=6&fleet=1&Planet=4&ship-1=5&ship-2=2&ress-ore=20000&ress-crystal=10<br />

Auf dem Server in missions_controller.rb passiert dann folgendes: Eine Methode liest die Parameter des<br />

Requests aus und prüft die Eingaben genau so wie sie später <strong>zum</strong> eigentlichen Bewegen der Flotte verwendet<br />

werden, nur dass jeder einzelne Schritt durch einen begin/rescue Statement oder ähnlicher Fehlerbehandlung<br />

abgesichert ist. Sobald also ein bestimmter Block Fehler aufwirft, wird ein betreffender Hinweis in ein Array<br />

gepackt, welches am Schluss in einem JSON zurückgeschickt wird:<br />

fehler = Array.new<br />

fehler = check_helper(params)<br />

if fehler.empty?<br />

render :json => {"ok" => 1}.to_json<br />

else<br />

render :json => {"ok" => 0, "error" => fehler}.to_json<br />

end<br />

Wenn (direkt oder nach Korrektur der Eingabe) alles in Ordnung ist (also "ok" = 1), wird ein Button freigegeben,<br />

durch den die Form abgeschickt werden kann.<br />

| erstellte Form nach Eingabe<br />

Intern wird beim Absenden der Form erneut geprüft, ob alle Eingaben noch aktuell sind. Sollte es Probleme<br />

geben wird der User auf "Missionen", ansonsten auf "Deine Flotten" geleitet.<br />

Sonstige Details<br />

Da das Ziel war die Seite so zu strukturieren, dass sie fehlerhafte Eingaben verhindert, war bei der<br />

Implementation einiges zu beachten. So soll es <strong>zum</strong> Beispiel möglich sein, dass der User seine Eingaben in<br />

vorherigen Inputfeldern ändern kann und diese dennoch berücksichtigt werden. Es kam von Anfang an nicht<br />

in Frage quasi die komplette Seite in eine HTML-Form zu packen, da die Idee eine dynamische Seite zu<br />

gestalten, dies nicht ermöglicht hätte, <strong>zum</strong>indest nicht so einfach.<br />

Die Lösung war es also an jedem Input per Javascript bzw. jQuery einen Eventhandler an<strong>zum</strong>elden, welcher<br />

bei Aktivierung die jeweilige Eingabe als ein verstecktes Input-Feld in eine Form einträgt, die am Ende<br />

abgeschickt werden kann:<br />

$("#travel").on("click",function () {<br />

...<br />

$("#send").append('');<br />

...<br />

}

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!