RicScript

 

RicScript ist eine Text-basierende Methode um RIC Dateien zu erzeugen und wurde von John C. Hansen entwickelt.

 

Auch mit RicScript kann man jede gewünschte RIC Datei erzeugen, die auch mit nxtRICeditV2 zu erstellen ist - jedoch mit dem großen Unterschied, dass man dafür einen Text basierenden Editor verwenden muss. Der Syntax von RicScript ist nicht sehr komplex und wird wie folgt beschrieben:

 

Element Definition

Description

desc( options, width, height );

 

In der aktuellen Version der Firmware wird der Parameter options nicht unterstützt und sollte daher auf 0 gesetzt werden. Die anderen beiden Paramter werden nur für die graphische Entwicklungsumgebung von NXT-G verwendet und erzeugen keine Ausgabe auf der NXT Bildschirm.

 

Beispiel:  

  desc( 0, 50, 20 );  

 

Sprite

sprite( id, bitfields );

sprite( id, hexfields );

sprite( id, import( filename ) );

sprite( id, import( filename, brightness-threshold ) );

sprite( id, import( filename, brightness-threshold, destination_width, destination_height ) );

 

Hier kann ein Sprite definiert werden, welches eine monochrome Bitmap speichert. Dabei kann diese Bitmap direkt angegeben werden (binär oder über hexadezimal) oder es kann über die import Option eine bestehende Grafikdatei importiert werden.

 

Beispiel 1:  

 

sprite( 1, 11111111,

           10000001,

           10000001,

           11111111  );

 

 

Beispiel 2:  

 

sprite( 2, 0xFF,

           0x81,

           0x81,

           0xFF  );

 

 

Beispiel 3:  

 

sprite( 2, import( "c:\temp\picture.bmp", 50, 80,40 );

 

 

VarMap

varmap( id, interpolation-point-definitions );

 

Über dieses Element kann eine Umrechnungsfunktion definiert werden, die die angegebenen Stützpunkt für die lineare Interpolation verwendet. Der Domainwert kann dabei im Bereich von 0 bis 255 angegeben werden. Der Stützwert selbst liegt im Bereich von 00 bis 65535. Es müssen immer mindestens 2 Stützwerte definiert werden - maximal sind bis zu 256 Stützpunkte möglich.

 

Beispiel:

 

varmap( 4, f(3)=10,

           f(10)=0,

           f(20)=200,

           f(50)=100 );

 

 

CopyBits

copybits( copyopt, spriteid, source_x, source_y, width, height, dest_x, dest_y );

 

Dieses Element kopiert einen rechteckigen Bereich einer Sprite Bitmap auf den Bildschirm. Der Parameter copyopt wird von der aktuellen Firmware nicht unterstützt und sollte auf 0 gesetzt werden.

 

Beispiel:  

 

copybits( 0, 1, 10, 10, 30, 20, 0, 0 );

 

 

Pixel

pixel( copyopt, pos_x, pos_y );

pixel( copyopt, pos_x, pos_y, value );

 

Pixel zeichnet einen einzelnen Punkt auf das Display. Der optionale Parameter value wird von der aktuellen Firmware nicht unterstützt und kann weggelassen werden. Auch der Parameter copyopt wird von der aktuellen Firmware nicht unterstützt und sollte auf 0 gesetzt werden.

 

Beispiel:  

 

pixel( 0, arg( 0 ), maparg( 4,0 ) );

 

 

Line

line( copyopt, start_x, start_y, end_x, end_y );

 

Zeichnet eine Linie vom Startpunkt (start_x/start_y) bis zum Endpunkt (end_x/end_y). Der Parameter copyopt wird von der aktuellen Firmware nicht unterstützt und sollte auf 0 gesetzt werden.

 

Beispiel:  

 

line( 0, 10, 20, 60, 25 );

 

 

Rectangle

rect( copyopt, edge1_x, edge1_y, edge2_x, edge2_y );

 

Zeichnet ein Rechteck, welches durch die beiden gegenüberliegenden Punkten (edge1_x/edge1_y) und (edge2_x/edge2_y) definiert ist. Der Parameter copyopt wird von der aktuellen Firmware nicht unterstützt und sollte auf 0 gesetzt werden.

 

Beispiel:  

 

rect( 0, 10, 20, 60, 25 );

 

 

Circle

circle( copyopt, center_x, center_y, radius );

 

Diese Anweisung zeichnet einen Kreis auf den NXT Bildschirm. Dabei wird neben dem Kreismittelpunkt auch der Kreisradius angegeben. Der Parameter copyopt wird von der aktuellen Firmware nicht unterstützt und sollte auf 0 gesetzt werden.

 

Beispiel:  

 

circle( 0, 50,32, 30 );

 

 

NumBox

numbox( copyopt, pos_x, pos_y, value );

 

Stellt den angegebenen Wert value als Zahl auf dem NXT Bildschirm an der angegebenen Stelle (pos_x/pos_y) dar. pos_y wird auf ein Mehrfaches von 8 abgerundet, so dass die Ausgabe auf einer der 8 Textzeilen erfolgt. Der Parameter copyopt wird von der aktuellen Firmware nicht unterstützt und sollte auf 0 gesetzt werden.

 

Example:  

 

numbox( 0, 0, 16, arg( 0 ) );

 

 

 

 

Example for a RicScript file which shows following output:

 

Ausgabe auf dem NXT Bildschirm:

 

 

RicScript:

desc( 0, 51, 51 );

circle( 0, 20, 20, 20 );

varmap( 1,
        f( 0)= 0,
        f( 16)= 35,
        f( 42)= 18,
        f( 53)= 7,
        f( 71)= 17,
        f( 76)= 39,
        f( 99)= 63,
        f( 112)= 23,
        f( 178)= 12,
        f( 205)= 35 );

sprite( 2,
        000000000000001000000000000000,
        000000000000001000000000000000,
        000000000000001000000000000000,
        000000000000001000000000000000,
        000000000000001000000000000000,
        000000000000001000000000000000,
        000000000000001000000000000000,
        000000000000001000000000000000,
        000000000000011100000000000000,
        000000000001111111000000000000,
        000000000011111111100000000000,
        000000000011111111100000000000,
        000000000111111111110000000000,
        111111111111111111111111111111,
        000000000011111111100000000000,
        000000000011111111100000000000,
        000000000001111111000000000000,
        000000000000011100000000000000,
        000000000000001000000000000000,
        000000000000001000000000000000,
        000000000000001000000000000000,
        000000000000001000000000000000,
        000000000000001000000000000000,
        000000000000001000000000000000,
        000000000000001000000000000000 );

copybits( 0, 2, 0, 0, 30, 25, 5, 8 );

numbox( 0, 24, 54, maparg( 1, 0 ) );

numbox( 0, 3, 51, arg(0) );

line( 0, 19, 46, 19, 56 );

line( 0, 20, 20, arg(0), maparg( 1, 0 ) );

rect( 0, 0, 46, 49, 11 );