Hilfe:Quellcode darstellen

Aus Spieleprogrammierer-Wiki
Wechseln zu: Navigation, Suche

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=Zeilennummern-Liste]>

 /* Hier der Quellcode ... */

</sourcecode>

Attribute:

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#
  • python: Python
  • lua: Lua
  • xml: XML
  • html4strict: HTML 4 Strict
  • html5: HTML 5
  • css: CSS
  • php: PHP
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. 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. Wird ein i einer Angabe vorangestellt, so bezieht sich die Angabe auf die Zeilennummer innerhalb des Quellcodes, also ohne Berücksichtigung der Startzeilennummer. i1-3 hebt beispielsweise immer die ersten drei Zeile hervor, egal welchen Wert start hat.

Beispiele

Beispiel für C++ 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();
            }
        }
    }
};

Beispiel für einen Python-Quelltext mit aktivierten Zeilennummern, die bei 42 beginnen, und einigen hervorgehobenen Zeilen:
<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

Tabs im Quellcode können bei Bedarf durch Leerzeichen ersetzt werden. Dazu gibt es das Attribut tab, das Werte von 0 bis 8 annehmen kann. 0 (Standardeinstellung) bedeutet, dass Tabs nicht in Leerzeichen konvertiert werden. Beispiel:

<sourcecode tab=0> ... </sourcecode> (Tabs bleiben erhalten):

a	b	c	d
10	20	30	42

<sourcecode tab=4> ... </sourcecode> (Tabs werden in max. 4 Leerzeichen verwandelt):

a   b   c   d
10  20  30  42

<sourcecode tab=8> ... </sourcecode> (Tabs werden in max. 8 Leerzeichen verwandelt):

a       b       c       d
10      20      30      42
Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge