czwartek, 5 czerwca 2014

5. Figury do wykonania

Figury do wykonaniaw Kojo - kliknij !

4. Podręczniki do podstaw programowania LOGO w KOJO w języku angielskim


  1. Kojo 1
  2. Kojo 2
  3. Kojo 3
  4. Proste ćwiczenia

3. Komendy po polsku

Komendy po polsku
===============

angielski - odwołanie do poleceń dla żółwia w języku angielskim - np. żółw.angielski

czasSystemowy - pobiera aktualny czas w sekundach

- - Przykład: - - 

val start = czasSystemowy
drukuj("Odliczanie!")
okrąg(34)
val stop = czasSystemowy
val s = stop - start
drukuj("Upłynęło " + zaokrągl(s,1) + " sekund.")

czyść() - czyści zawartość płótna

czyśćStylPisaka - anuluje ustawienia koloru i grubości linii Zwraca prawdę lub fałsz informujący czy pisak jest opuszczony true czy nie false
czyśćWyjście() - czyści okno wyjścia (komunikatów) 

dom() - żółw wraca do położenia (0,0) i ustawia się w kierunku północnym.

dopóki(warunek) { polecenia } - powtarza polecenia dopóki warunek logiczny warunek jest prawdziwy

- - Przykład: - - 

var i = 0
dopóki(i<10) {
drukuj(i)
i = i + 1
}

drukuj(tekst) - drukuje napis do okna wyjścia - Przykład: drukuj("hej")

grubość(grubość) - Ustawia grubość pisaka
idźDo(x, y) - przesuwa po linii prostej żółwia do punktu(x,y) - Żółw zostawia na trasie ruchu linię

kierunek(x, y) - ustawia żółwia w kierunku punktu o współrzędnych (x,y)

kolor(kolorpisaka) - Ustawia kolor pisaka - Zdefiniowane kolory: - niebieski, czerwony, żółty, zielony, filoletowy, różowy, brązowy, czarny, biały, przezroczysty. - Można też ustawić kolor korzystając z obiektu Color

- - Przykład: - - 
kolor(niebieski)
naprzód()
kolor(Color(220,30,40,250)) //(fioletowy) maksymalna wartość to 255, czerwony, zielony, niebieski, przezroczystość
naprzód(200)

kostium(Costume) - ustawia obrazek żółwia, zdefiniowany w obiekcie Costume

- - Przykład: -- 

czyść()
kostium(Costume.bat1)
naprzód(100)
val nietoperz = new Żółw(100,100,"ścieżka_do_pliku")
nietoperz.naprzód(100)

kąt - pobiera wartość aktualnego kąta ustawienia

lewo(kąt) - obraca żółwia w lewo o zadany kąt, domyślnie 90 stopni

liczbaLosowa(maksimum) - losuje liczbę z zakresu od 0 do (maksimum - 1)

 - Przykład: -

 def rzut_kostką = LiczbaLosowa(5) + 1
- losuje liczbę od 1 do 6

liczbaLosowaRzeczywista(maksimum) - losuje liczbę z zakresu od 0 do maksimum (przedział lewostronnie otwarty)

-- Przykład: - 

def losowa = liczbaLosowaRzeczywista(20) + 1.0

- losuje liczbę od 1.0 do poniżej 21.0

naprzód(kroki) - porusza żółwia w kierunku głowy o zadaną ilość kroków, lub gdy nie podamy parametru o 25 kroków. (piksele)

-- Przykład: - - 

czyść() //czyść płótno
naprzód(100) //przesuń żółwia do przodu o 100 kroków
naprzód() // przesuń żółwia o 25 kroków
podnieśPisak //podnieś pisak - żółw idąc nie rysuje
naprzód(200) //przesuń żółwia o 200 kroków
prawo(45) //obróć żółwia w prawo o 45 stopni

odtwórzKierunek() - odtwarza kierunek żółwia wcześniej zapamiętany funkcją zapamiętajKierunek

okrąg(promień) - rysuje okrąg o zadanym promieniu
opuśćPisak() - umożliwia rysowanie gdy żółw się porusza

pisz(tekst) - Żółw pisze po płótnie (w prawo od kierunku ustawienia) - Przykład: pisz("hej")

podnieśPisak() - po uruchomieniu polecenia poruszający się żółw nie zostawia śladu


pokaż() - pokazuje postać żółwia

pokażOś() - pokazuje oś wskazującą kierunek ustawienia żółwia

powtarzaj(ilość) { polecenia } - powtarza polecenia w nawiasie zadaną ilość razy.


- - Przykład: - - 

powtarzaj(4) {
naprzód
lewo
}

powtarzajZLicznikem(ilość) { i => polecenia } - powtarza polecenia możemy użyć zmiennej oznaczające nr pętlii

-- Przykład: - - 

powtarzajZLicznikem(10) { i =>
drukuj(i)
}

położenie - pobiera położenie żółwia w danym momencie jak punkt Point(x,y)

- - Przykład: - - 

drukuj(położenie)
drukuj(położenie.x)
drukuj(położenie.y)

var x = położenie.x
var y = położenie.y
x = x - 300
skoczDo(x, y)

południe() - ustawia żółwia w kierunku południowym (w dół).
prawo(kąt) - obraca żółwia w prawo o zadany kąt, domyślnie 90 stopni
przywróćStyl() - Służy do odczytu zapamiętanego stylu funkcją przwróćStyl

północ() - ustawia żółwia w kierunku północnym (w górę).

rozmiarCzcionki(rozmiar) - Ustawia wielkość czcionki do pisania.

skocz(kroki) - idzie naprzód bez rysowania o zadaną liczbę punktów

skoczDo(x, y) - umieszcza żółwia na pozycji (x,y) nie rysując po płótnie

spowolnij(opóźnienie) - ustawia wartość opóźnienia animacji - Domyślnie ustawiona wartość to - spowolnij(1000). Im mniejsza liczba tym szybciej porusza się żółw

tył(kroki) - cofa żółwia o zadaną liczbę kroków, domyślnie 25 kroków

tło(kolorTła) - ustawia kolor tła, zdefiniowane kolory: - niebieski, czerwony, żółty, zielony, fioletowy, różowy, brązowy, czarny, biały, przezroczysty. - Możemy też użyć obiektu Color

tło(kolor1,kolor2) - ustawia gradient zmieniający się w pionie od koloru kolor1 aż do koloru kolor2 - Dostępne zdefiniowane kolory: - niebieski, czerwony, żółty, zielony, fioletowy, różowy, brązowy, czarny, biały, przezroczysty. - Można też użyć obiektu Color

ukryj() - ukrywa postać żółwia

ukryjOś() - ukrywa oś wskazującą kierunek ustawienia żółwia

ustawKąt(kąt) - ustawa kierunek żółwia o danym kącie gdzie 0 to wschód (w prawo).

wejście(tekstKomunikatu) - wyświetla na dole okna wyjścia pole w którym użytkownik wpisuje tekst wczytywany do zmiennej w skrypcie. tekstKomunikatu służy do informacji co użytkownik ma wpisać.

- - Przykład: - - 

val x = wejście("Podaj swoje imię")
drukuj("Hej " + x + "!")

wschód() - ustawia żółwia w kierunku wschodnim (w prawo).

zachód() - ustawia żółwia w kierunku zachodnim (w lewo).

zaokrągl(rzeczywista, miejscPoPrzecinku) - zaokrągla liczbę z przecinkiem do podanej ilości miejsc po przecinku

- - Przykład: - - 

val t1 = zaokrągl(3.991,2)
drukuj(t1)
val t2 = zaokrągl(3.999)
drukuj(t2)

zapamiętajKierunek() - zapamiętuje obecny kierunek w celu odtworzenia go funkcją odtwórzKierunek

zapiszStyl() - Zapamiętuje styl (kolor, grubość pędzla, wypełnienie kolorem) - >Odczyt stylu odbywa się za pomocą przywróćStyl

łuk(promień, kąt) - rysuje fragment okręgu




2. Skrypty z biblioteką


http://lalitpant.blogspot.com/2012/05/playing-with-l-systems-in-kojo.html

1

2

3




Do wklejenia w KOJO
=================================
case class LSystem(axiom: String, angle: Double, len: Int = 100, sf: Double = 0.6)(rules: PartialFunction[Char, String]) {
    var currVal = axiom
    var currGen = 0
    def evolve() {
        currGen += 1
        currVal = currVal.map { c =>
            if (rules.isDefinedAt(c)) rules(c) else c
        }.mkString.replaceAll("""\|""" , currGen.toString)
    }
 
    def draw() {
        def isDigit(c: Char) = Character.isDigit(c)
        val genNum = new StringBuilder
        def maybeDrawBar() {
            if (genNum.size != 0) {
                val n = genNum.toString.toInt
                genNum.clear()
                forward(len * math.pow(sf, n))
            }
        }
        currVal.foreach { c =>
            if (!isDigit(c)) {
                maybeDrawBar()
            }
         
            c match {
                case 'F' => forward(len)
                case 'f' => forward(len)
                case 'G' => penUp(); forward(len); penDown()
                case '[' => savePosHe()
                case ']' => restorePosHe()
                case '+' => right(angle)
                case '-' => left(angle)
                case n if isDigit(n) => genNum.append(n)
                case _ =>
            }
        }
        maybeDrawBar()
    }
}

val bigh = LSystem("[G]--G", 90, 100, 0.65) {
    case 'G' => "|[+G][-G]"
}

val bentBigh = LSystem("[G]--G", 80, 100, 0.65) {
    case 'G' => "|[+G][-G]"
}

val bush2 = LSystem("G", 20) {
    case 'G' => "|[+G]|[-G]+G"
}

val tree2 = LSystem("G", 8, 100, 0.35) {
    case 'G' => "|[+++++G][-------G]-|[++++G][------G]-|[+++G][-----G]-|G"
}

val carpet = LSystem("F-F-F-F", 90, 1) {
    case 'F'=> "F[F]-F+F[--F]+F-F"
}

val koch_wp4 = LSystem("F", 90, 10) {
    case 'F'=> "F-F+F+F-F"
}

val sierp_wp6 = LSystem("F", 60, 2) {
    case 'F' => "f+F+f"
    case 'f' => "F-f-F"
}

val dragon_wp7 = LSystem("FX", 90, 10) {
    case 'X' => "X+YF"
    case 'Y' => "FX-Y"
}

val fplant_wp8 = LSystem("X", 25, 4) {
    case 'X'=> "F-[[X]+X]+F[+FX]-X"
    case 'F' => "FF"
}

val drawing = koch_wp4 //po znaku = wpisujemy nazwę modułu np "fplant_wp8"

clear()
invisible()
setAnimationDelay(0)
setPenThickness(1)
setPenColor(Color(255,255,20))
val gens = 5
repeat (gens) {
    drawing.evolve()
}
// pre drawing adjustments to make the drawing look right in the canvas
// right(10)
zoom(1, 0, 100)
setBackground(Color(0, 0, 29))

drawing.draw()
===============================================================

1. Instalacja KOJO

Instalacja KOJO