Kapitel 5. Skript

Kig låter dig skapa egna typer med skriptspråket Python. Det är en mycket avancerad funktion, och jag känner bara till ett annat interaktivt geometriprogram som har en liknande funktion (GNOME-programmet Dr.Geo).

Grundfunktionen i Kigs Python-skript är att låta dig skapa dina egna objekt från vissa ursprungsobjekt. Om du till exempel är matematiklärare, och har ett avancerat sätt att räkna ut en intressant punkt på en kon, kan du skriva ner hur punkten ska beräknas med Python-kod, istället för att bråka med komplexa konstruktioner och makron, så visar Kig den åt dig.

Antag att du inte var medveten om Kigs inbyggda mittpunktstyp, och du ville visa mittpunkten för två givna punkter. Då skulle du klicka på knappen   Pythonskript i verktygsraden, eller välja ObjektÖvrigtPythonskript i menyraden. Då visas en guide för dig som låter dig gå vidare.

Skriptobjektguiden

Det första du måste göra är att välja argument för skriptobjektet. I vårt exempel, betyder det de två punkterna som vi vill visa mittpunkten för. Markera dem i Kigs huvudfönster, och klicka på Nästa för att gå vidare.

Nu visas en textredigeringsruta, där du kan skriva in koden för skriptobjektet. Mallkod och några kommentarer finns redan på plats. Det är viktigt att försäkra dig om att din kod är giltig Python-kod. Personer som är bekanta med Python observerar att vi definierar i själva verket en Python-funktion, som heter calc. Därför är det nödvändigt att följa Pythons regler för definition av funktioner. Varje rad i funktionen måste till exempel börja med ett tabulatortecken. Den första raden som inte börjar med ett tabulatortecken avslutar funktionens definition.

Python-funktionen som vi vill definiera heter calc, och i vårt fall tar den två argument. De är objekten som du har markerat som argument på föregående skärm. Du behöver lika många argument som du markerade där. De kallas arg1 och arg2, men du kan ändra namnen till något meningsfullare om du vill.

Du kan göra alla sorters beräkningar i funktionen som du anser vara nödvändiga, med användning av de två argumenten om det behövs. Du ska returnera objektet som du vill definiera. I vårt fall är det ett punktobjekt. De två argumenten är också punktobjekt, och vi kan använda funktionen Point.coordinate() för att definiera de två givna punkternas koordinater.

Beräkningen som krävs i vårt exempel är mycket enkel. Vi lägger helt enkelt ihop de två koordinatuppsättningarna, och dividerar resultatet med två. Därefter skapar vi en ny punkt med resultatet. Python-koden som behövs är:

def calc( a, b ):
m = ( a.coordinate() + b.coordinate() ) / 2;
return Point( m )
Skriva in koden för mittpunkten i Skriptobjektguiden.

Om du nu klickar på knappen Slutför, visas det nya objektet i Kigs dokument. Om du flyttar en av punkterna, flyttas den nyskapade punkten med den. Mycket mer kraftfulla objekt kan byggas på detta sätt: Du uppmuntras att försöka dig på det.

Det nykonstruerade skriptobjektet

Alla objekt i Kig kan användas i Python-kod. Som vi såg ovan, har punkter klassen Point, och du kan till exempel använda metoden Point.coordinate(). Du kan också returnera alla sorters objekt, inte bara Point. Många fler klasser och metoder är tillgängliga i Kigs Python-kod, och en mer fullständig referens om dem tillhandahålls Kigs webbsida.