Innen: Hungarian Scratch-Wiki
A toll a Scratch egy olyan funkciója, amely lehetővé teszi a szereplők számára formák, színes pixelek és egyebek rajzolását a képernyőre a toll blokkokkal. Először a Scratch 1.0 verziójában jelent meg. A toll a Logo teknős grafikájához vezethető vissza a mozgás blokkokhoz hasonlóan, amelyekkel együtt használható a toll.
A vonal, a pont, a téglalap és a kör a legegyszerűbben lerajzolható alakzatok, de elegendő programozással bármilyen forma létrehozható.
Működése
A teknőcgrafika olyan grafikai modell, melyben mindent egy mozgó objektummal rajzoltatunk meg, amely vagy húz maga után vonalat, vagy nem. (Lehetne grafikai elemeket úgy is a képernyőre rajzoltatni, hogy csak megnevezzük a grafikai elem nevét, s elhelyezzük a képernyőn valahol. Esetleg valamilyen paramétereket is megadunk, amellyel az elem egyes tulajdonságait szabhatjuk meg, pl. a színét.) A teknős grafika esetében azonban mozgó rajzolónk van. A Logo nyelvekben, vagy például a Python Turtle könyvtára ez a rajzoló objektum egy teknős, a Scratchben meg bármely szereplő működhet ekként a Toll kiegészítő használata segítségével.
Fontos, hogy ez a mozgó objektum kis lépésekre felbontott parancsokkal irányítható. Például, hogy tegye le a tollat, azaz a parancstól kezdve húzzon csíkot maga után, vagy haladjon előre valamennyi lépést, forduljon valamennyit stb. A szereplő mozgatását a Scratchben a mozgás blokkok segítségével lehet elérni, a "nála levő tollat" pedig a Toll kiegészítő blokkjaival lehet működtetni.
Toll blokkok
töröld a rajzokat
– törli az összes tollnyomot a képernyőrőlkészíts lenyomatot
– rajzol a szereplőről egy másolatot a színpadratollat tedd le
– működteti az adott szereplő toll funkcióját, vagyis a szereplő tollnyomot fog hagyni a képernyőn bárhova mozdul el, amíg a toll deaktiválódiktollat emeld fel
– kikapcsolja a toll funkciót, így a szereplő már nem fog tovább írni a tollal, amikor mozogtoll színe legyen (#ffffff)
– a toll színét egy meghatározott értékre állítjatoll ( v) változzon ()
– a toll egyik tulajdonságát egy adott értékkel változtatja megtoll ( v) legyen ()
– a toll egyik tulajdonságát egy adott értékre állítjatoll mérete változzon ()
– a toll méretét a kiválasztott értékkel módosítjatoll mérete legyen ()
– a toll méretét a beírt értékre állítja
Használata
A toll blokkokat gyakran használják:
Megjegyzés: | Példa projekteket találhatsz az egyes felhasználási kategóriák mögött lábjegyzetben[megj. 1] |
- kígyós játékok (en: „snake game”) készítésekor [példák 1]
- nyomvonalat hagyó szereplőknél [példák 2]
- animációk készítésére (például Intrók/Outro-k esetében) [példák 3]
- tárgyak, objektumok rajzolására egyszereplős projektekben[példák 4]
- minták, fraktálok rajzolására [példák 5]
- grafikonok létrehozására[példák 6]
- grafikai szerkesztőprogramoknál (pl. rajzoló[példák 7], képszerkesztő[példák 8], animáció-szerkesztő[példák 9] programok)
- ún. platformer típusú játékokban a platform megalkotására[példák 10]
- 3D-s projektekben (leginkább játékokat kel érteni ezalatt) a nagyon sokféle és gyorsan változó látvány megrajzolására [példák 11]
- szövegkiírásra (en: „text rendering”)[példák 12]
- vagy logikai játékok elkészítésére [példák 13]
Példák a használatra
- ↑ Kígyós játék (en), Slither.io (en)
- ↑ Bogárka tányéron (hu)
- ↑ Óra animáció, Varázslat (en, 1. intró (en), 2. intró (en), 1. outro (en), 2. outro (en), 3. outro (en)
- ↑ Scratch Projekt: 525277044 (en), Scratch Projekt: 602571199 (en), Scratch Projekt: 714283726
- ↑ Mintakészítő (en), Menő minták, Koch fraktál (hu), Sierpenski háromszög (en)
- ↑ Scratch Projekt: 89042838 (en, Scratch Projekt: 429901948 (en), Scratch Projekt: 764634827 (en)
- ↑ Egyszerű rajzoló program (hu)
- ↑ Fejlettebb képszerkesztő
- ↑ Pixel animátor
- ↑ Scratch Projekt: 146120846, Scratch Projekt: 252744806
- ↑ A torony játék (en), Repülő szimulátor (en), Kristálykereső RPG (en), Minigolf (en, Labirintus (en), Minecraft (en), Tornyos védekező játék, ún. Tower defence (en), Kockás ügyességi játék (en), Platformer (en, Domborzat-generáló (en), Bolygó készítő (en), Rubik kocka
- ↑ Tollat használó szövegkiíró-motor
- ↑ Scratch Projekt: 119960353, Scratch Projekt: 847205776, Scratch Projekt: 145930269
Átlátszó toll
A Toll átlátszósága alapvetőleg a toll (átlátszósága v) legyen ()
és a toll (átlátszósága v) változzon ()
blokkokkal változtatható. Azonban be lehet állítani az átlátszóság értékét a toll színe legyen [#0000FF]
blokkal is az alábbiakban leírt módon.
Képlet
Az ARGB-s színmeghatározás hasonló az RGB-shez, csak ki van bővítve egy további értékkel, ami az átlátszóság, vagy jobban mondva az átlátszatlanság megadásáért felel. (Átlátszatlanság, ugyanis a maximum értéknél egyáltalán nem átlátszó, s 0-nál meg teljesen.) Az átlátszóságot megadó értéket alfa értéknek nevezzük, melyet A-val rövidítünk, s ezért kerül az RGB betűk elé egy A is az átlátszatlanságot is használó színképletbe. Ahol az R amúgy a piros értéknek felel meg, a G a zöldnek, s a B a kéknek. Ezek a jelölések színek angol neveiből erednek (red, green és blue). Az összetett színt úgy határozzuk meg, mint ennek a három színnek a kevertjeként. Hogy milyen erősen vannak meg az összetett színben a piros, zöld és kék, azt az értékeik mutatják meg. Általában az RGB-s és az ARGB-s színkeverés értékei 1-től 255-ig terjednek (ugyanis így az értékeiket 16-os számrendszerben még 2 számjeggyel pont le lehet írni). Ez az alfa értékre is igaz.
A színmeghatározást RGB értékek esetében a következőképpen teheted meg a Scratchben:
toll színe legyen ((((R) * (65536)) + ((G) * (256))) + (B)) // Fontos, hogy a színbemenetes blokkot használd toll színe legyen [#0000FF] // Ez a színbemenetes blokk
ARGB esetében pedig:
toll színe legyen ((((A) * (16777216)) + ((R) * (65536))) + (((G) * (256)) + (B)))
Figyelem: | Győződj meg róla, hogy az A, R, G és B értékek egész számok, így nem a más színértékeket befolyásolják. Ha bármelyikük lehet törtszám is, akkor a lenti kerekítéses kódot használd (legbiztosabb, ha mindig kerekítesz persze) |
ARGB esetén kerekítést használva:
toll színe legyen (((((A) kerekítve) * (16777216)) + (((R) kerekítve) * (65536))) + ((((G) kerekítve) * (256)) + ((B) kerekítve)))
A „Futtatás képernyőfrissítés nélkül”-t használó saját blokkok előnyei
- Főcikk: Képkockafestő szkript
A „Futtatás képernyőfrissítés nélkül”, az egy működési formája a saját blokkoknak, ami megtakarít munkafolyamatokat azáltal, hogy a képernyőt csak a (saját blokk alatt meghatározott) művelet befejeztével frissíti. Ennek a működésnek az eléréséhez csak a saját blokk készítésénél, vagy szerkesztésénél található jelölőnégyzetet kell bepipálni, amelynek szövege pont így hangzik: „futtatás képernyőfrissítés nélkül”.
A Scratch normális működése mellett egy hosszú rajzolási folyamatot nagyon lassan tud csak lefuttatni, de elképzelhető, hogy a rajzolni kívánt mintának csak a végeredményére van szükségünk, s a maga a rajzolási folyamatot nem szeretnénk megjeleníteni (mint például 3D projektek esetében, amikor az aktuális látványt szeretnénk kirajzolni lehetőleg minél gyorsabban, hogy időben minél több legyen a frissítése a látványnak, vagyis nagy legyen az FPS szám). Ekkor nagyon sokat segít nekünk a képernyőfrissítés-mentes futtatása a rajzolásnak.
Tekintsük például a két következő saját blokkot, amely a színpad minden pixelét kifesti valamilyen színűre. Az első esetben egy listában vannak eltárolva a képpontok színei.
színpadfestés meghatározása [hely v] legyen (0) // A változónk a képpont sorszámának nyomonkövetésére a listában toll mérete legyen (2) // A toll mérete 2 legyen (noha képpontokként fogunk haladni), hogy egy Flash Player hibát kikerüljünk ugorj ide: x: (-240) y: (180) // A képernyő bal felső sarka ismételd (360) ismételd (480) [hely v] változzon (1) // Növelődjön a változó, hisz új képponthoz értünk toll (színe v) legyen ([képpontok lista v] (hely) eleme) // A toll színe az aktuális képpont színe kell legyen (listában meghatározva) tollat tedd le // Lenyomat tollat emeld fel x változzon (1) // Következő képpont end // x iránybeli ismétlés y változzon (-1) // Újabb sor x legyen (-240) // Vissza a képernyő bal oldalára end // y iránybeli ismétlés
A következő esetben egy változóban ((változó)
névvel) vannak felsorolva pontosan 3 számjeggyel a képpontok színei (ha az első képpont színe például 1, akkor 001-el fog kezdődni a változónk).
draw meghatározása [hely v] legyen (0) // Ez lesz a változónk, hogy nyomonkövessük a változóban az aktuális képpont színadatának helyét toll mérete legyen (2) // A toll mérete 2 legyen (noha képpontokként fogunk haladni), hogy egy Flash Player hibát kikerüljünk ugorj ide: x: (-240) y: (180) // A kezdeti pozíciónk most is bal fent ismételd (360) ismételd (480) [hely v] változzon (3) // Egy adatnak a hosszával (3 karakter) változtassuk a helyet megadó változónkat [ideiglenes v] legyen [] // Egy ideiglenes változót használunk a színadat kinyeréséhez [ideiglenes v] legyen ((változó) ((hely) - (2)) betűje) // Első számjegy [ideiglenes v] legyen ((ideiglenes) ((változó) ((hely) - (1)) betűje) együtt) // Első és második számjegy [ideiglenes v] legyen ((ideiglenes) ((változó) (hely) betűje) együtt) // Mindhárom számjegy együtt toll (színe v) legyen (ideiglenes) // A kinyert adatra állítjuk a toll színét tollat tedd le // Lenyomat tollat emeld fel x változzon (1) // Következő képpont end // x irányú ismétlés y változzon (-1) // Eggyel alatti sorba x legyen (-240) // Vissza a sor elejére end // y irányú ismétlés
Bármelyik esetet is használjuk, összesen 172 800 képpontunk van (!), s ezeknek mindegyikének a színét el kell tároljuk vagy a listában vagy a változóban (ekkor 518 400 számjegy hosszú lesz a változónk!). Ez még megoldható, viszont kivárni, hogy képernyőfrissítéssel végigfesse az egész színpadot elég hosszas lenne. Ezért használjuk ilyenkor mindenképpen a frisstés nélküli futtatás funkcióját. Kisebb felbontás is persze használható, s olyankor gyorsabban végez a festés és kevesebb adatot is kell eltárolnunk (például ha tényleg 2 képpontokként fessük le a színpadot, az már lefelezi mindkét értéket).
Lásd még
Külső linkek
Ez a szekció tartalmaz linkeket külső weboldalakra vagy programokra mutatva, amikben nem bízik meg feltétlen a Scratch, vagy nem a Wikipédialapok egyike. Ne feledkezz el az internet biztonságos használatáról, tekintve, hogy mi nem tudunk garanciát vállalni az ezen oldalakon való böngészésért. |
Megjegyzések
- ↑ A listába került projektek készítői semmilyen anyagi javakat nem juttattak a wiki szerkesztői részére annak érdekében, hogy projektjeik kiválasztásra kerüljenek. A választás csupán az első alkalmas projektekre esett. Ennek megfelelően kibővíthető. Ha javasolnál is még példát mutató projektet, még ha nem vagy szerkesztő, akkor is írhatsz Szerkesztő:Simiagain, vagy más szerkesztő profiljára a Scratchen.