Grafika Ţóîwia W latach 80-ych, gdy królowaîy komputery 8-bitowe (przynajmniej w Polsce) popularnym językiem programowania byîo LOGO. Ten prymitywny język miaî jednć cechę odróţniajćcć go od innych - sposób tworzenia grafiki. (Bardziej zaawansowani wybaczć mi ten wykîad, ale jest on konieczny dla osób mniej oklepanych z tematem). LOGO do rysowania wykorzystywaîo umownego ţóîwia. Dzięki temu nie musimy znaç ţadnych wspóîrzędnych punktów, a ţóîwia moţna obróciç o dowolny kćt w prawo lub lewo. Przykîadowo moţemy ţóîwiowi rozkazaç iőç naprzód 50 kroków, obróciç się w lewo o 32 stopnie i ruszyç do tyîu o 32 kroki. Dzięki takiemu tworzeniu grafiki bardzo îatwo moţemy się pokusiç o stworzenie prostego fraktala lub innych ciekawych efektów. No dobrze, ale wiekszoőç znanych mi języków nie ma procedur obsîugi ţóîwia. A więc naleţy je stworzyç i ten artykuî ma za zadanie pomóc Ci w tym. Uwaga techniczna: sposób tworzenia procedur dotyczy AMOS`a, ale ich przejrzystoőç pozwala na îatwe przetîumaczenie na C lub Pascala. Nasza mini-biblioteka potrzebuje do dziaîania kilku zmiennych globalnych: _PENDOWN - odpowiada za podniesienie lub opuszczenie pisaka. Ţóîw z opuszczonym pisakiem (_PENDOWN=1) poruszajćc się będzie zostawiaî őlad, natomiast z podniesionym (_PENDOWN<>1) nie będzie zostawiaî őladu. ANGLE# - kćt obrócenia ţóîwia. Moţemy go zmieniaç za pomocć procedur TURNLEFT i TURNRIGHT lub bespoőrednio np. ANGLE#=24.0. XCOR# i YCOR# - wspóîrzędne ţóîwia. PROP# - staîa konieczna, aby linia narysowana procedurć _FORWD(50) w pionie byîa równa dîugoőcić z linić narysowanć tć samć procedurć w poziomie. Wićţe się to őciőle z ksztaîtem pixela, bo o ile pixel w trybie Lores moţemy uznaç za kwadratowy, to w trybie Medres jest on dwa razy wyţszy niţ szerszy, Dlatego dla trybu Lores PROP#=1, a dla Medres PROP#=2. Tutaj bardzo waţna sprawa, biblioteka matematyczna w AMOS`ie oblicza kćty w radianach. Aby to zmieniç musimy uţyç instrukcji Degree na poczćtku programu. A więc zaczynamy: `-----GraphTurtle ver. 1.0 ------ Degree Global_PENDOWN#,ANGLE#,XCOR#,YCOR# Praktycznie jest to wszystko co musimy umieőciç na poczćtku naszego programu, aby móc wykorzystywaç grafikę ţóîwia. Resztę mini-biblioteki stanowić procedury, które naleţy daç na koniec programu poza gîównym listingiem. Pierwszć procedurć jest INIT_TURTLE, która inicjuje ţóîwia. Procedure INIT_TURTLE PROP#=1 _HOME _PENDOWN=1 EndProc Następnć procedurć jest procedura _HOME, która umieszcza ţóîwia na őrodku ekranu, zwróconego gîowć do góry. Pozycja ţóîwia w procedurze _HOME moţe byç oczywiőcie zmieniana. Procedure _HOME XCOR#=160.0 YCOR#=100.0 ANGLE#=-90.0 Gr Locate XCOR#,YCOR# EndProc Teraz dwie procedury do obracania ţóîwiem. Parametr ALPHA oznacza liczbę stopni. Procedure TURNLEFT[ALPHA#] ANGLE#=ANGLE#+ALPHA# EndProc Procedure TURNRIGHT[ALPHA#] ANGLE#=ANGLE#-ALPHA# EndProc Przyszîa kolej na najwaţniejszć procedurę _FORWD. Parametr N# odpowiada za liczbę kroków. N# ujemne oznacza ruch do tyîu. Procedure _FORWD[N#] XCOR#=XCOR#+N#*PROP#*Cos(ANGLE#) XCOR#=Int(XCOR#) YCOR#=YCOR#+N#*PROP#*Sin(ANGLE#) YCOR#=Int(YCOR#) If _PENDOWN=1 Draw To XCOR#,YCOR# Else Gr Locate XCOR#,YCOR# EndProc To juţ ostatnia procedura, która przesunie ţóîwia do wyznaczonej pozycji. Procedure JUMPTO[NX#,NY#] XCOR#=XN#:YCOR#=NY# Gr Locate XCOR#,YCOR# EndProc Kiedy juţ się oswoimy z naszym zwierzakiem, moţemy zaczćç pisaç programy lub procedury, wykorzystujćce grafikę ţóîwia. Na dysku w katalogu SOURCES w pliku GraphTurtle.AMOS znajduje się wklepana biblioteka w AMOS`ie, a plik Przyklady.AMOS zawiera przykîady wykorzystania naszych procedur, które warto przeanalizowaç. Miîej analizy ţyczy Piotr Wocal (PMW) PS. Pozdrowienia dla CDX`a i grupy GENERATION