Turtle graphics in Perl/Tk
Gedetaillieerde uitleg van de werking van het Perl/Tk programma (heel
bruikbaar als frame voor je eigen Perl/Tk applicaties) op de Turtle Graphics uitleg pagina.
Een voorbeeld van uitbreidingen op Perl: het gebruik van de Tk user
interface/grafische libray. Hiermee is het heel makkelijk om een kleine maar
gebruiksvriendelijke 'applicatie' te maken, zoals de onderstaande
'Turtle graphics' (schilpad-tekenen). Leuk om je kinderen te leren programmeren.
Hoe teken je bijvoorbeeld een vierkant? Met de denkbeeldige schildpad
('turtle') een fluitje van een cent, kijk naar in de figuur hiernaast.
Eenvoudig, nietwaar? Vandaar dat dit oorspronkelijk ook bedacht is om te leren
programmeren, en met name wordt gebruikt bij de programmeertaal SmallTalk (al
die ik het hier dus met Perl).
Toch kan je op deze manier heel ingewikkelde patronen maken, denk maar aan
bijvoorbeeld de boom van Pythagoras, zoals hieronder weergegeven.
Maar waar het mij vooral om gaat is de kracht van Tk in combinatie met Perl.
Het ziet er uit als een behoorlijk complex programma, maar voor die knoppen etc
bied Tk heel wat hulp, eigenlijk is het een fluitje van een cent.
Help-ballonnetjes, Alt-x shortcuts, files laden en opslaan, het is allemaal zo
geregeld.
Bekijk het eens, ik heb het programma samen met wat
voorbeeld-turtle-routines in een zip gepakt: turtle.zip, inclusief voorbeelden
slechts 7 Kbyte! De uitleg van dit programma staat op deze paginas. Je hebt uiteraard wel een
Perl met geinstalleerde Tk uitbreidingslibrary nodig (maar da's eenvoudig te
vinden, op ActiveState voor Windows
gebruikers, of anders op CPAN: Comprehensive Perl
Archive Network).
De schildpad kent de volgende commando's
(kijk in de voorbeelden voor het gebruik er van):
- Beweging (met optioneel de afstand/draaihoek):
vooruit, links,
rechts, spring (vooruit zonder lijn tekenen), huis (ga naar
startpunt)
- Kleur:
wit, zwart, grijs, rood, groen, geel, blauw
- Test:
als (test) { opdrachten } anders { opdrachten }
- Herhaling:
voor (start .. end) { opdrachten }
- Overigen:
wis (wis het tekenveld)
- Daarnaast zijn alle Perl commando's gewoon bruikbaar.
De boven weergegeven boom van Phytagoras ziet er dan als turtle-programma
als volgt uit (probeer eens te volgen wat er gebeurt):
# boom van pythagoras (voorbeeld van recursie)
$lengte = 80; # lengte van eerste lijn
sub pythagoras { vooruit $lengte; # eerst recht vooruit als ($arg0 <= 1) # dan als we niet meer detail willen { links; vooruit $lengte; links } # keren we om; anders # maar anders gaan we dieper: { $lengte = $lengte / sqrt(2); # eerst de lijn wat kleiner maken rechts 45; pytha($arg0-1); rechts; pytha($arg0-1); rechts 45; $lengte = $lengte * sqrt(2); # en hier de lijn weer als eerst } vooruit $lengte; # en afsluiten naar onderen }
huis; spring -200; # mooi beginplekje pythagoras 7; # 7 stappen diep
# einde van dit voorbeeld
Bekijk eens de voorbeelden, of probeer zelf iets leuks te tekenen! Of kijk
hoe dit programma in Perl is gemaakt op de Turtle
Graphics uitleg pagina's.
|