Archive for Sep. 2012

Monodroid - Erste Schritte und ein Sprung

Da ich seid neustem auch ein tolles Smartphone (Samsung Galaxy S Plus) besitze, musste ich doch mal schauen was man tolles damit anstellen kann. Da ich nicht mit Java als Sprache anfangen wollte gab es nur eine Alternative: Monodroid!

Monodroid ist Mono auf Android portiert. Die mitgelieferte IDE MonoDevelop macht einem das Entwickeln wirklich leicht. Durch Verknüpfung mit dem Android SDK lassen sich in MonoDroid Emulatoren und Geräte laden, zur Laufzeit debuggen und natürlich Applikationspakete (*.apk) erstellen.

Da ich weiterhin auf meinem Netbook entwickle hatte ich Probleme die Emulatoren zum laufen zu bringen. Da die Trial-Version von MonoDroid aber nur diese Emulatoren unterstützt habe ich schlichtweg die gecrackte Version verwendet. Das hat den Vorteil dass ich das APK-Dateien erstellen kann, wer also ebenfalls ein Android Phone besitzt kann dieses heute entwickelte Programm ebenfalls nutzen.

Nachdem das Hello-World-Programm lief wagte ich mich an die Erweiterung des Programms, bis schließlich ein 9Gag-Picture-Dumper entstanden war:

Das Programm ließt die Website 9Gag Mobile Website aus und holt sich so viele weitere Seiten des 9Gag-Portals wie angegeben (Im Bild die Zahl 3). Aus diesen Seiten werden die Bilder per Regex geparsed und schließlich nacheinander auf die Interne SD-Karte geladen. Zwar gibt es 9Gag Viewer, diese können aber nur die Bilder anzeigen und nicht herrunterladen. Da ich die Bilder aber gerne ohne Internetverbindung anschaue war so ein Dumper das perfekte Projekt.

Weiterlesen

9 people like this post.

Finite State Engine - Messaging

Basierend auf dem Artikel “Pseudointelligente Gamebots” und der dort entwickelten FSE (Finite State Engine) ist nun eine Erweiterung geschrieben worden.

Es begann mit einem Email-Kontakt mit dem User wieschoo, welcher ein ganz interessantes Projekt am laufen hat: Die BotSuite.NET. Diese Suite stellt bisher Funktionen für Bilderkennung, Benutzereingaben und Ausgaben bereit. Wie gut das funktioniert kann man auf diversen Videos des Autors bestaunen ;-) Eine FSE würde da gut reinpassen, daher bat er mich drum eine solche FSE für ihn zur Verfügung zu stellen. Damit Ihr aber auch davon profitiert werde ich in wenigen Auszügen die Änderungen an der FSE erklären und am Ende das Beispiel etwas näher beleuchten.

Die State-Klasse hat sich etwas geändert. Statt der abstrakten Funktion “Execute” gibt es nun auch “Enter” und “Leave”, welche einmalig beim Ändern des States aufgerufen werden. Zudem muss jeder State “bool OnMessage(BaseEntity, Telegram)” überschrieben, die Funktion zum Handeln einer Message. Mehr zum Message-System gleich, ist nur wichtig im Hinterkopf zu behalten.

Leider ist es bei einem Message-System unabdingbar mit Entites zu arbeiten, sonst würde das Message-System keine Ahnung haben an wen die Nachricht gehen sollte. Daher ist eine BaseEntity mit einer ID und einer abstrakten HandleMessage-Funktion dazugekommen, ein Singleton einer EntityManager-Klasse stellt Funktionen wie “RegisterEntity” und “GetEntityByID” bereit.

Das eigentliche Message-System arbeitet mit sog. “Telegrams”. Ein Telegram besteht einfach aus folgenden Variablen:

public struct Telegram
    {
        public Int32 Sender; // ID des Senders
        public Int32 Reciever; // ID des Empfängers
        public Int32 Message; // ID der Message 
 
        public DateTime DispatchTime; // Zeit, in der die Message abgeschickt werden sollte
        public Object AdditionalInfo; // Zusätzlicher Parameter

Weiterlesen

5 people like this post.