Scheme is als dusdanig een taal op hoog niveau. Wanneer we een figuur definiëren, kunnen we bijgevolg van zijn kracht gebruikmaken om dit of dat deel van de figuur op recursieve wijze te definiëren, of om bepaalde objecten op toevallige wijze op de figuur te plaatsen zodat de figuur er telkens lichtjes anders uitziet wanneer men ze opnieuw opent. De DSF zijn kortom bevrijd uit het kader van de grafische interface en winnen aan kracht dankzij Scheme. Een DSF is dus een bestand dat met een tekst-editor wordt aangemaakt en dat in DR. GEO wordt geopend met de opdracht Bestand->Evalueren.
Laat ons een eenvoudig voorbeeld van de DSF bestuderen :
(nieuwe-figuur "Mijn figuur")
Dit is de kleinste DSF die we konden definiëren. Wanneer we het bestand laden in DR. GEO, wordt er louter een nieuwe, lege figuur gecreërd onder de naam "Mijn figuur". Hadden we verschillende commando's in de lijn van (nieuwe-figuur Mijn figuur) ingebracht, dan zouden er evenveel nieuwe figuren gecreëerd zijn.
Laat ons een tweede voorbeeld bekijken :
(nieuwe-figuur "Mijn figuur") (weze Punt "A" willekeurig 1.2 -2)
Deze DSF definiëert een figuur met een willekeurig punt A met coördinaten (1,2 ; -2). De syntaxis is kennelijk relatief aangenaam, te meer omdat zij in de moedertaal gesteld is. Laat ons dieper ingaan op de tweede regel. De syntaxis is immers dezelfde voor alle commando's die objecten definiëren. Een dergelijk commando kan als volgt worden opgesplitst :
Laat ons verder gaan met een derde voorbeeld :
(define (driehoek p1 p2 p3) (Lijnstuk "" uiteinden p1 p2) (Lijnstuk "" uiteinden p2 p3) (Lijnstuk "" uiteinden p1 p3)) (define (toeval) (- 8 (* 16 (random:uniform)))) (nieuwe-figuur "Mijn figuur") (weze Punt "A" willekeurig (toeval) 0) (weze Punt "B" willekeurig 5 0) (weze Punt "C" willekeurig (toeval) 5) (driehoek A B C)
Dit voorbeeld is bijzonder interessant omdat het drie belangrijke zaken demonstreert :
Merk op dat als we geen naam geven bij het definiëren van de lijnstukken, DR. GEO zelf een standaardnaam toekent aan de hand van de uiteinden. De drie lijnstukken zullen dus in ons geval de namen [AB], [BC] en [AC] dragen.
Laat ons dit gedeelte met een laatste voorbeeld beëindigen :
(weze Punt "A" willekeurig 1 0) (weze Punt "B" willekeurig 5 0) (weze Rechte "r1" 2punten A B) (zend A kleur geel) (zend A vorm rond) (zend A grootte groot) (zend B verbergen) (zend d1 dikte streepje)
De drie eerste commando's creëren twee punten en een rechte. Hier belangt ons vooral de reeks geef-commando's aan. Met dit commando kunnen we communiceren met een object waarvan we een symbool hebben opgeslagen. In ons geval hebben we de symbolen A, B en r1. We zenden telkens een boodschap aan een object. In het eerste argument geven we aan met welk object we communiceren en in het tweede argument de boodschap die we willen meegeven. Het derde en de volgende argumenten hangen af van de aard van de boodschap in het tweede argument. Met de zin (zend A kleur geel) stuur je het punt A de boodschap kleur met als parameter geel. De andere geef-commando's zijn zo gemakkelijk te begrijpen. Ze zullen uitgelegd worden in het volgende gedeelte.
Wij hebben onze kleine begeleide wandeling doorheen de Dr. Geo Scheme Figuren afgerond. In wat volgt, zullen wij alle beschikbare commando's om DSF'en te definiëren uit de doeken doen.