AMIGA E - Prakticky
Vítám vás u nového seriálku o programování v AMIGA E! A hned z kraje prdim
na úvody a du rovnou do toho...
Dvourozměrné pole v éčku
AMIGA E umí pouze jednorozměrná pole, která se definují jako:
<proměnná>[<počet buněk>]:ARRAY OF <typ>
Chcete-li mít dvouruzměrné pole, pak si pro 2D přístup musíte vytvořit vlastní
přepočítávací funkci, která přepočte 2D souřadnice (x, y) na 1D souřadnici (x).
Není to nic těžkého, stačí trochu popřemýšlet - nebo kouknout do správné knihy.
A zde ji máme:
PROC locbuff(x, y, l) -> přepočítá 2D souřadnice na 1D
DEF a
a := ((y - 1) * l) + x - 1
/*
sem je dobrý dát nějaký podmínky, kdyby vám sem vlezly nevhodný souřadnice
x, y nebo ujetý l!
*/
ENDPROC a
-
Vstupy:
- x, y - 2D souřadnice z intervalu x = <1 - n>, y = <1 - m>
- l - délka "řádky" = m
-
Výstupy:
- a - pozice v bufferu (1D souřadnice v intervalu a = <0 - i>, kde
- i = (n * m) - 1
Chápačka? :-)
Kreslení nevyplněných obdélníků
V éčku není funkce pro kreslení nevyplněných obdélníků, proto si ji uděláme...
PROC draw_box(xp, yp, w, h, colour)
Line( xp, yp,xp+w, yp,colour)
Line( xp, yp, xp,yp+h,colour)
Line(xp+w, yp,xp+w,yp+h,colour)
Line(xp+w,yp+h, xp,yp+h,colour)
ENDPROC
- Vstupy:
- xp, yp - levý horní bod
- w, h - šířka a výška (zadávejte o 1 méně než potřebujete)
- colour - barva, kterou se bude kreslit
- Výstupy:
- - nakreslený cosi
Hovadina, co!?
Kolik to má vlastně řádek?
Jak spočítat, kolik má text řádek? Jednoduše - stačí spočítat počet znaků
LF (Line Feed - ASCII 10) a je to v suchu.
PROC countlines(tlen)
DEF i, j, lines = 1
FOR i := 0 TO tlen
j := tbuff[i]
IF j = 10 THEN lines++
ENDFOR
ENDPROC lines
- Vstupy:
- tlen - délka textu
- tbuff - ukazatel na text v paměti (buffer)
- Výstupy:
- lines - počet řádek
Až mě napadne něco dalšího, tak vyplivnu díl II. Čau!
E.N.I.F.
Další ve frontě:
|
|
|
|
|
|
|
|
Vokecávky |
Hardware | Warez | WBoviny | Dema |
Gfx&Muz | Pařby | Vokecávky 2 |