Konsolenfenster unter Mono schließen

Möchte man unter .NET/Mono das Schließen einer Konsolenanwendung abfangen so kann man dies mit einigen Methoden lösen, wie zum Beispiel die Anwendung bestimmten pInvoke Techniken unter Windows. Allgemeiner kann man das ganze mit dem „CancelKeyPress“ Event gestalten was dann so aussieht:

Console.CancelKeyPress+=new ConsoleCancelEventHandler(Console_CancelKeyPress);
...
static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
  WriteErrorToConsole("Programm wird abgebrochen...");
  e.Cancel=true; // Event abbrechen
}

iOS Open Source Game Engines

Bei der Spieleentwicklung auf iOS Geräten ist es von Vorteil eine Engine zu benutzen um sich einige „lästige“ Arbeit vom Hals zu schaffen. Unter http://maniacdev.com/2009/08/the-open-source-iphone-game-engine-comparison/ gibt es dazu eine schöne Liste von Open Source Engines für iOS. Dabei wurden nur Engines aufgelistet, welche auch darauf basierende Software im AppStore haben. Mir persönlich gefällt das Sparrow Framework ganz gut welches unter http://gamua.com/sparrow/ zu finden ist und sich für 2D Spiele eignet.

Openbook über iOS Entwicklung

Galileo Computing hat seit einiger Zeit auch ein Buch über iOS als OpenBook verfügbar. Das Buch fängt dabei mit einer Einführung in das iOS System an, und ergänzt das dann in späteren Kapiteln mit Praxisbeispielen. Später werden dann Dinge wie sichere Implementierung und Animationen behandelt. Zu finden ist das Buch unter http://openbook.galileocomputing.de/apps_entwickeln_fuer_iphone_und_ipad/.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Apple_iOS

C++ nach C# Portierungen

Portierungen sind eine schöne Sache wenn man sich die Zeit vertreiben möchte ;) Bei der Portionierungen von C/C++ nach C# wird dabei immer wieder Dinge sehen die Schema F betreffen wie z.B. bestimmte Datentypen:

unsigned int -> uint
unsigned -> uint
unsigned char -> byte
std:string -> string
size_t -> Int64

Andere sehr beliebte Sachen sind Kollektionen wie Listen oder die Vektorklasse. Aus Dingen wie:

std::vector Things;
std::list Things();

wird dann meist immer ein:

List<Thing> Things;

Die Map:

std::map<unsigned short, unsigned> nodes;

wird dabei durch ein Dictionary ersetzt:

Dictonary<unsigned short, unsigned> nodes;

Immer wieder schön sind die Typedefs wie z.B.

typedef std::vector<Account> Accounts;

welche bei mir dann auch in eine Liste umgewandelt werden, an den Stellen an denen sie benutzt werden:

List<Account> Accounts;

Beim portieren von Klassen werden Header und C Datei in eine gemeinsame Datei geworfen und die Doppelungen entfernt. Aus den Klassenfunktionen aller:

void Thing::MakeFoo(int value)

wird dabei ein:

void MakeFoo(int value)

Bei While Schleifen wird aus einem:

while (message.getUnreadLength())

ein

while (message.getUnreadLength()!=0)

Aus einem Vergleich:

if(!receiver)

wird ein

if (receiver!=null)

Iteratoren sind auch immer wieder schöne Sachen. Aus

for (ChatChannels::const_iterator i = mChatChannels.begin(), i_end = mChatChannels.end());

wird ein:

foreach(ChatChannel channel in mChatChannels)

Sicherlich gibt es auch noch andere Schema F Konstrukte, dies sind allerdings die bei mir am häufigsten vorkommenden.

Weitere Informationen gibt es unter:
http://stackoverflow.com/questions/3659044/comparison-of-c-stl-collections-and-c-sharp-collections
http://stackoverflow.com/questions/6274878/what-is-c-time-t-equivalent-for-c-sharp

GWEN.NET

Wenn man ein Spiel in OpenGL realisiert, hat man meist irgendwann das Problem das man auch Bedienelemente wie Menüs, Checkboxen, Textfelder etc. im Spiel haben möchte. Diese sollen dann natürlich auch noch Events erhalten und möglichst auch in OpenGL gezeichnet werden (da niemand z.B. GDI Objekte im OpenGL haben möchte).

Die GWEN.NET Beispielanwendung

Für .NET/Mono gibt es hierfür eine Portierung von GWEN welche GWEN.NET heist und unter http://code.google.com/p/gwen-dotnet/ zu finden ist. Diese arbeitet z.B. mit OpenTK zusammen. Das ganze ist dabei unter der MIT Lizenz verfügbar.

Weitere Informationen gibt es unter:
http://omeg.pl/blog/2011/07/the-quest-for-c-opengl-gui/