Hilfe:Quellcode darstellen

Aus Spieleprogrammierer-Wiki
Wechseln zu: Navigation, Suche

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>

  1. def get_player_count(server):
  2.     try:
  3.         sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  4.         sock.settimeout(1.5);
  5.         sock.sendto("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffgie3\xff", servers[server])
  6.         data, addr = sock.recvfrom(1024)
  7.         sock.close()
  8.         data = data[14:]
  9.         slots = data.split("\x00")
  10.         return int(slots[6])
  11.     except Exception as e:
  12.         print("Exception thrown: %s" % e)
  13.         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
Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge