Hilfe:Quellcode darstellen

Aus Spieleprogrammierer-Wiki
Version vom 1. November 2011, 12:18 Uhr von David Scherfgen (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
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.
Die eckigen Klammern um die Attribute bedeuten, dass diese optional sind und somit nicht zwingend angegeben werden müssen:

<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
  • hlsl: HLSL (High Level Shading Language)
  • glsl: GLSL (OpenGL Shading Language)
  • 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 wird die angegebene Tab-Breite durch die Verwendung von Leerzeichen simuliert.
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> oder einfach nur <sourcecode> ... </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