heise online
  • c't
  • iX
  • Technology Review
  • Mac & i
  • mobil
  • Security
  • Netze
  • Open Source
  • Developer
  • c't-TV
  • Download
  • Telepolis
  • Resale
  • Foto
  • Autos
  • Preisvergleich
  • Stellenmarkt
  • Abo
  • weitere Angebote
    • Shop
    • Artikel-Archiv
    • Veranstaltungen
    • Whitepapers
    • heise-marktplatz
    • IT-Markt
    • Tarifrechner
    • Jobs bei Heise

c't Magazin
  • Startseite
  • Artikel
  • c't-Projekte
  • Hotline & FAQ
  • Treiber & mehr
  • Kolumnen
Software zu Projekten Allgemeine Hinweise
Archiv-Suche Newsletter RSS-FeedRSS

c't › c't-Projekte

creativ'08: Programmierwettbewerb Asteroids
  • Login
  • Help/Guide
  • About Trac
  • Preferences
  • Wiki
  • Timeline
  • Roadmap
  • Browse Source
  • View Tickets
  • Search

Context Navigation

  • Start Page
  • Index
  • History
  • Last Change

Portierungen in andere Programmiersprachen

Nach einem kurzen Aufruf im Forum haben einige Leser begonnen, das Beispiel in andere Programmiersprachen zu übersetzen. Vielen Dank dafür! Hier ist der richtige Ort, die Portierungen allen zur Verfügung zu stellen. Fragen dazu bitte nur im  Forum stellen, wo die Autoren sicherlich mitlesen werden. Weitere Erklärungen dürfen die Autoren hier gerne selbst ergänzen.

Wer hier Codebeispiele zur Verfügung stellt, stimmt zu, dass andere Teilnehmer sich daraus nach Belieben bedienen dürfen. Es gilt also das Gleiche wie für die von Harald Bögeholz ursprünglich bereitgestellte C++-Implementierung. Niemand wird disqualifiziert, weil er ein paar Zeilen Code aus einem der Beispiele übernommen hat.

Das Folgende ist alphabetisch (und dann chronologisch) nach Programmiersprachen sortiert.

AutoHotKey

Portierung des Beispiels nach AutoHotKey in der Datei Asteroid_AHK.rar Download. Gebraucht wird die aktuelle Version 1.0.47.06.

C

Portierung des Beispiels nach C in der Datei csample.zip Download. Lässt sich unter Windows mit gcc (Cygwin) mit dem makefile bauen, sollte aber auch unter Linux gehen. Das exe setzt ein installiertes Cygwin voraus.

C++

Stark erweitertes Framework von Matthias Fuchs in Asteroids-C++.zip Download. Der Vorteil dieser Version liegt darin, dass die ganze Netzwerkverbindungsimplementierung und die Spielverwaltung in einer eigenen Klasse Connection bzw. Game ausgelagert wurde. Gerade für Anfänger sollte das von Vorteil sein, weil sie diese Klassen vollkommen links liegen lassen können. Lediglich die Methode "MakeTurn" des Players muss ausgetauscht werden bzw. die ganze Klasse ersetzt werden. Projektdateien liegen vor für Visual Studio 2008, Borland Studio 2006, CodeBlock 8.0 mit Gnu und eine einfache Make-Datei. Getestet unter Windows, Linux und Mac sollten aber auch gehen. Big-Endian hoffentlich überall beachtet.

Weitere Merkmale:

  • kann auch ohne Parameter aufgerufen werden und geht dann von localhost (127.0.0.1) aus.
  • gibt die Punkte für jedes Objekt an
  • gibt den Socket wieder frei (auch im Fehlerfall)
  • besitzt gekapselte Ausgaberoutinen und eine Methode zum Test auf LittleEndian
  • Startknopf-Unterstützung bei aktualisierter Mame
  • Auslagerung allgemeiner Funktionen für Spieler in eigenem Modul, dadurch MakeTurn übersichtlicher
  • Erkennung von Level, Leben und Score (mit Überlauf)
  • Erkennung von Explosionen
  • Zustände des Spiels werden erkannt, Ereignisse (z.B. Asteroid zerstört) generiert
  • Kürzel des Spielers wird automatisch in Highscore eingetragen
  • Kein so starkes busy-wait mehr, dadurch Mame auch auf Single-Core-Prozessoren debugbar
  • ExtGameState kann verwendet werden um geometrische Informationen bereitzustellen (z.B. Richtung und Geschwindigkeit von Objekten)

C#

C#-Portierung von Patrick Mortara in  Asteroid-C#.zip.

D

D-Portierung von Vladimir Panteleev in Asteroids-D.zip Download

Delphi

Delphi Portierung von Joe Merten in Asteroids-Delphi.zip Download Mit Grafikanzeige, auslesen der Scores usw. Getestet mit D5 und D7. FPK + Lazarus sehe ich mir demnaechst vielleicht auch noch an. Feedback willkommen.

Delphi (2) und FPC

Delphi und FPC Portierung von Benjamin Rosseaux in Asteroids-DelphiFPC-VCLLess.zip Download Kommt ohne VCL/FCL/LCL aus.

FreeBasic

FreeBasic-Portierung des C-Beispiels in FBAsteroids.zip Download, von Rocco Lavella. FreeBasic ist QBasic sehr ähnlich, aber mit der Funktionalität von C, z.B. Pointer, Operator Overloading, Multithreading usw. wovon das Beispiel auch Gebrauch macht.

Java

In der Datei asteroid-control-java-src.zip Download finden Sie eine Java-Version des Beispielcodes von Bernhard Haumacher.

Der Java-Code folgt direkt der C++-Lösung. Insbesondere werden Objekte für Spielfeld und Asteroiden nicht dynamisch angelegt sondern bei Programmstart vorinitialisiert. Damit gibt es feste Obergrenzen für die Menge der Objekte des Spielfeldes und der Code sieht recht Java-untypisch aus. Im Vergleich zu der C++-Lösung mussten nur eine Konvertierung der Nachrichten aus der Netzwerkrepräsentation in die Objektdarstellung und zurück ergänzt werden. Die C++-Lösung verlässt sich hier darauf, dass die interne Repräsentation der Datenstrukturen im Speicher mit den Netzwerkpaketen des Simulators übereinstimmt.

Java (2)

In der Datei asteroids_java_0.9.zip Download finden Sie eine Java-Version des Beispielcodes, die stärker objektorientiert ist.

Die Funktionalität folgt der C++-Lösung. Aber die Konvertierung geht noch einige Schritte weiter Richtung Java. Achtung: JDK 5 nötig!

Java (3)

Etwas kleiner, damit es nicht so protzt

Und noch eine Java-Implemtierung, inklusive grafischer Darstellung und der Möglichkeit, die Kommunikation mitzuschneiden und später komfortabel zu analysieren, zu finden auf einer  eigenen Webseite.

Da das Programm auch als Bridge zwischen MAME und ein anderes Programm eingeschleift werden kann, können grafische Darstellung sowie Dump und Analyse auch von anderen Programmen (unabhängig von der Programmiersprache) verwendet werden, allerdings können dann natürlich Timingprobleme entstehen.

Der eingebundene grafische Analysator versteht neben den eigenen Dumpfiles auch die Dumpfiles vom c't-MAME in Version 1 und 2 dient daher als Basis für das auf der  Games-Seite eingebundene Applet (dessen Quellen sind natürlich ebenfalls enthalten).

Seit Version 0.77 kann man mit diesem Programm auch von Hand Asteroids übers Internet spielen, zum Beispiel gegen den bei c't laufenden Asteroids-Server.

Aktuell ist Version 0.77.

LabView

Einfache Portierung des C++-Samplecodes. Das ZIP-File enthält die LabView 8.0-Version - leider kann ich keine LabView 6.1-Version (kompatibel zur Heise-LabView-Distribution) anbieten... Asteroids_LabView80.zip Download

OCaml

Keine Portierung, sondern der C++-Code wird angebunden. Ganz simples Beispiel in main.ml. Unter Windows getestet. ocaml-bindings.tar.gz Download

Python

Spielt nur per Zufall, gibt aber zum Weiterbearbeiten den Bildschirminhalt lesbar aus. Datei Asteroid-Python.tar.gz Download. (Eine Portierung fuer Python 2.4 ist in Asteroid-Python-2.4.tar.gz Download zu finden).

Python (2)

Straight-forward Portierung des Beispiels von Thomas Pani. Download asteroids.py Download.

Ruby

in der Datei asteroid.rb Download ist eine sehr schnelle Portierung auf Ruby.

Visual Basic 2005

und in vb2005-AsteroidsSpieler.zip Download eine auf Visual Basic 2005.

Attachments

  • asteroid-control-java-src.zip Download (15.7 KB) - added by hwb 4 years ago.
  • asteroids_java_0.9.zip Download (11.1 KB) - added by IHateCoffeeButLikeJava 4 years ago.
  • asteroid.rb Download (2.4 KB) - added by adler24 4 years ago.
  • Asteroid-C#.zip Download (14.1 KB) - added by hwb 4 years ago. C#-Portierung von Patrick Mortara
  • csample.zip Download (10.0 KB) - added by Thor 4 years ago.
  • Asteroids-Delph-iExe.zip Download (206.5 KB) - added by JoeMerten 4 years ago.
  • Asteroids-DelphiFPC-VCLLess.zip Download (20.1 KB) - added by BeRo 4 years ago.
  • java-port-3-screenshot.png Download (1.2 KB) - added by Rammi 4 years ago. Etwas kleiner, damit es nicht so protzt
  • vb2005-AsteroidsSpieler.zip Download (85.7 KB) - added by Jaer 4 years ago. Eine Portierung des Beispiels nach Visual Basic 2005
  • Asteroids-C++.2.zip Download (8.7 KB) - added by AstroDefender 4 years ago.
  • Asteroids-Delphi.zip Download (13.8 KB) - added by JoeMerten 4 years ago.
  • Asteroid-Python.tar.gz Download (2.7 KB) - added by Whitie2008 4 years ago.
  • Asteroid-Python-2.4.tar.gz Download (2.7 KB) - added by LiuBei 4 years ago. Portierung auf Python 2.4
  • asteroids.py Download (6.2 KB) - added by thpani 4 years ago.
  • Asteroid_AHK.rar Download (6.4 KB) - added by Gfy 4 years ago.
  • ocaml-bindings.tar.gz Download (8.2 KB) - added by CBauer 4 years ago. OCaml Bindings
  • Asteroids-D.zip Download (3.7 KB) - added by CyberShadow 4 years ago. D-Portierung von Vladimir Panteleev
  • FBAsteroids.zip Download (121.6 KB) - added by RockTheSchock 4 years ago.
  • Asteroids-C++.zip Download (29.0 KB) - added by AstroDefender 4 years ago.
  • Asteroids_LabView80.zip Download (201.5 KB) - added by GerdW 4 years ago. LabView-Portierung des Samplecodes

Download in other formats:

  • Plain Text

Trac Powered

Powered by Trac 0.11.7
By Edgewall Software.

http://www.ctmagazin.de/creativ/08/02/
http://www.ctmagazin.de/creativ/

  • Datenschutzhinweis
  • Impressum
  • Kritik, Anregungen bitte an c't-WWW
  • Mediadaten
  • Copyright © 2011 Heise Zeitschriften Verlag
  • International: The H, The H Security, The H Open Source