Leider kann Ihr Browser nicht alle Designelemente dieser Seite korrekt darstellen. Damit Sie trotzdem die kompletten Inhalte sehen können, bieten wir Ihnen diese abgerüstete Version an. Um das korrekte Design der Seite zu sehen, probieren Sie bitte einen anderen Browser.

 

Aufgabe

Du bist ein Schatzsucher und steuerst ein Segelschiff.

Deine Aufgabe ist es, möglichst viele Schätze zu heben und wieder zum Heimathafen zu bringen. Natürlich hast Du auch eine Schatzkarte, aber nicht alle Schätze sind dort vermerkt. Während der Fahrt musst Du also nach weiteren Schätzen Ausschau halten. Aber damit nicht genug: Auf den Meeren kreuzen auch Piraten, die versuchen, Dir Deine Schätze wieder abzujagen.

Schließlich gibt es noch den Wind, auf den Du achten musst. Bei Flaute kommst Du nicht voran, bei Sturm wird Dein Schiff beschädigt. Du kannst Dir eine Windvorhersage geben lassen, um kritischen Situationen auszuweichen oder zu ankern (was Dich ebenfalls vor Schäden schützt).

Das TheWayOut-Framework stellt eine Schnittstelle IStrategy und eine Basisimplementierung davon (AbstractStrategy) bereit. Deine Lösung muss die Schnittstelle IStrategy implementieren. (Es ist sinnvoll, gleich von AbstractStrategy abzuleiten, weil Du so eine Menge sinnvoller Hilfsmethoden erbst.)

Und weil Du einen effektiven Algorithmus schreiben sollst, gibt es auch zeitliche Grenzen. Auf unserem Auswertungsrechner (mit Core2Duo 2GHz) darf die Rechenzeit der Strategie nicht über 80 Sekunden liegen und Dir stehen auch nur 4000 Timeticks zur Verfügung.

nach oben

 

Randbedingungen

Damit Deine Strategie gewertet werden kann, muss sie ein paar Konventionen entsprechen.

  • Deine Strategie liegt im Package de.thewayout.o8.strategy.<forumLogin> .
  • Deine Strategie ist public und ihr Klassenname beginnt mit Strategy (z.B. StrategyHandsDownWinner).
  • Deine Strategie verwendet nur Klassen und Schnittstellen
    • aus de.thewayout.o8.api,
    • aus dem eigenen Package oder Unterpackages und
    • Collection-Klassen.
    • elementare Datentypen und deren Wrapper (boolean und Boolean, ...)
  • Auch wenn der vorherige Punkt bereits eindeutig ist, sollen hier auch noch einmal jene Punkte genannt sein, die definitiv verboten sind:
    • externe Bibliotheken
    • JNI
    • jede Form der persistenten Datenspeicherung
    • Casting auf Framework-Klassen außerhalb von de.thewayout.o8.api
    • Reflection
    • java.util.Random (jedes Schiff hat einen Würfelbecher, der Zufallszahlen liefern kann)
    • java.lang.Math (verwende stattdessen de.thewayout.o8.api.Trig)
nach oben

 

Technische Basis

  • JDK Java 5 oder besser
  • ANT (Voraussetzung zum Erstellen einer Lösung)
  • Windows (Wegen der 3D-Funktionen sind wir auf plattformspezifische Bibliotheken angewiesen, Linux folgt voraussichtlich auch noch)
  • Der 3D-Simulator basiert auf der Eclipse Rich Client Plattform. Das macht den initialen Download zwar recht groß, aber durch die integrierte Update-Funktion werden Aktualisierungen deutlich kleiner ausfallen.
  • Wenn Dein PC leistungsfähig genug für Eclipse ist, kann er auch den 3D-Simulator von TheWayOut ausführen.
nach oben

 

Beispiel

Um den Einstieg zu erleichtern, haben wir ein Beispiel veröffentlicht, das wichtige API-Funktionen demonstriert.

Demonstriert wird, wie man

  • ankert,
  • die Windstärke abfragt,
  • zu Beginn aus dem Heimathafen kommt,
  • etwas im Logbuch vermerkt,
  • einen zufälligen Kurs einschlägt,
  • die verstrichene Zeit und die Timeticks abfragt und
  • wieder zum Heimathafen findet

Quelltext

nach oben