Hilfe:Quellcode darstellen
Aus Spieleprogrammierer-Wiki
Version vom 3. September 2011, 09:10 Uhr von David Scherfgen (Diskussion | Beiträge)
Da sich dieses Wiki an Spieleentwickler richtet, gibt es natürlich auch die Möglichkeit, Quellcode in einen Artikel einzubetten. Wie das genau funktioniert, wird in diesem Artikel beschrieben und mit Beispielen demonstriert.
Inhaltsverzeichnis |
Das "sourcecode"-Tag
Quellcodes inklusive Syntax-Highlighting für viele verschiedene Sprachen können mit Hilfe des sourcecode-Tags dargestellt werden:
<sourcecode [lang = Sprachkürzel] [tab = Tab-Breite] [line] [start = Startzeilennummer] [highlight = Liste von Zeilennummernangaben] > /* Hier der Quellcode ... */ </sourcecode>
- lang
- Legt die Sprache des Quellcodes für das Syntax-Highlighting fest. Wird das Attribut nicht angegeben oder auf "text" gesetzt, dann erfolgt kein Syntax-Highlighting. Es folgen einige wichtige Sprachkürzel:
- c: C
- cpp: C++
- csharp: C#
- java: Java
- java5: Java 5
- python: Python
- lua: Lua
- xml: XML
- html4strict: HTML 4 Strict
- html5: HTML 5
- javascript: JavaScript
- css: CSS
- php: PHP
- sql: SQL
- tab
- Setzt die Breite der Tabs (Werte zwischen 0 und 8 sind zulässig). Wird das Attribut nicht angegeben oder auf 0 gesetzt, so werden im Quelltext vorkommende Tabs unverändert gelassen. Ansonsten werden sie durch die angegebene Anzahl von Leerzeichen ersetzt (abhängig von der Position des Tabs in der Zeile).
- line
- Wird dieses Attribut angegeben, dann werden die Zeilen im Quellcode nummeriert.
- start
- Gibt die Startzeilennummer an (Standard: 1).
- highlight
- Legt fest, welche Zeilen hervorgehoben werden sollen, und aktiviert auch automatisch die Zeilennummerierung. Beispiel für eine Zeilennummern-Liste: 1,2,3,4,8,9 oder 1-4,8-9. Die Nummern berücksichtigen auch die eventuell mit start festgelegte Startzeilennummer, es sei denn, der Angabe wird ein i vorangestellt. i1-3 hebt beispielsweise immer die ersten drei Zeile hervor, egal welchen Wert start hat.
Beispiele
Es folgen einige Beispiele für die Quellcode-Formatierung.
C++-Quelltext mit Tab-Breite 4
<sourcecode lang=cpp tab=4>
class GameGUI : public GUI_Element, public sigslot::has_slots<> { public: void onMouseDown(const Vec2i& position, int buttons) { game.showCursor = 200; // Wurde eine Spielfigur angeklickt? Vec2i c = game.engine.getCursorPosition() / 16; std::vector<Object*> objects = game.p_level->getObjectsAt(c); for(std::vector<Object*>::const_iterator i = objects.begin(); i != objects.end(); ++i) { Object* p_obj = *i; if(p_obj->getType() == "Player") { #if defined(DEBUG) writeToLog("Spielfigur angeklickt!"); #endif static_cast<Player*>(p_obj)->activate(); } } } };
Python-Quelltext mit Zeilennummern und Hervorherbung
<sourcecode lang=python line start=42 highlight=44-48,52>
def get_player_count(server):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(1.5);
sock.sendto("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffgie3\xff", servers[server])
data, addr = sock.recvfrom(1024)
sock.close()
data = data[14:]
slots = data.split("\x00")
return int(slots[6])
except Exception as e:
print("Exception thrown: %s" % e)
return -1
Verschiedene Tab-Breiten
Tabs bleiben erhalten:
<sourcecode tab=0> ... </sourcecode>
a b c d 10 20 30 42
Tabs werden in max. 4 Leerzeichen verwandelt:
<sourcecode tab=4> ... </sourcecode>
a b c d 10 20 30 42
Tabs werden in max. 8 Leerzeichen verwandelt:
<sourcecode tab=8> ... </sourcecode>
a b c d 10 20 30 42