Snažím se něco vytvořit v AMOSu a narazil jsem na problém, se kterým nemůžu hnout.
Mám zhruba takovýhle program:
Napřed se otevře obrazovka, nastaví se základní parametry a tak dále a pokračuje:
Tím se na náhodné pozici obrazovky zobrazí Bob 1
O kus níž mám smyčku, která hlídá stisk tlačítka myši:
Tím program skočí na vykonání procedury MOVEMENT, která vypadá takto:
Uvnitř AMALu nemůžu používat obecné proměnné z Amosu, takže se tam hodnoty musí propašovat přes registry příkazem (resp. funkcí) Amreg. Tady jsem si vytvořil dvě proměnné RA a RB chci do nich načíst souřadnice myši v okamžiku kliknutí tlačítkem (čili v okamžiku spuštění procedury), upravil o rozdíl hardwarové hodnoty (čili -42 a -128 ) a odečetl od nich hodnoty A a B, což je pozice Bobu 1. Pak se zobrazí Bob 3 na souřadnicích Bobu 1. Já po něm chci, aby se začal pohybovat na souřadnice kliknutí myši a tam zastavil. Čili do animačního stringu jsem dal příkaz Move, který má sytaxi
Move počet pixelů ve směru X, počet pixelů ve směru Y, počet kroků
Počet pixelů, o které se to má pohnout, jsem si zjistil funkcí Amreg, takže do Move dávám její hodnoty RA a RB. No a teď výsledek:
Když program spustím, na obrazovce se náhodně objeví Bob 1. Kliknu tlačítkem myši, na Bobu 1 se objeví Bob 3 a začne se pohybovat směrem k myši, kde zastaví. ALE POUZE V HORIZONTÁLNÍM SMĚRU! Vertikální pozice se nemění. Když si dám vylistovat hodnoty RA a RB, obě jsou stejné, obě mají hodnotu RA. Co dělám špatně? Proč RB nemá hodnotu Amreg(RB)?
Mám zhruba takovýhle program:
Napřed se otevře obrazovka, nastaví se základní parametry a tak dále a pokračuje:
Code:
Channel 3 to Bob 3 Shared A,B,C,D,E,F A=Rnd(200): B=Rnd(100) Set Bob 1,,, Set Bob 2,,, Set Bob 3,,, Bob 1,A,B,1
O kus níž mám smyčku, která hlídá stisk tlačítka myši:
Code:
Do If Mouse Key=1 Then MOVEMENT Loop
Code:
Procedure MOVEMENT Amreg(RB)=Y Mouse-42-B Amreg(RA)=X Mouse-128-A Bob 3,A,B,3 A$="S: Move RA,RB,100; Pause;" Amal 3, A$ Amal On 3 End Proc
Move počet pixelů ve směru X, počet pixelů ve směru Y, počet kroků
Počet pixelů, o které se to má pohnout, jsem si zjistil funkcí Amreg, takže do Move dávám její hodnoty RA a RB. No a teď výsledek:
Když program spustím, na obrazovce se náhodně objeví Bob 1. Kliknu tlačítkem myši, na Bobu 1 se objeví Bob 3 a začne se pohybovat směrem k myši, kde zastaví. ALE POUZE V HORIZONTÁLNÍM SMĚRU! Vertikální pozice se nemění. Když si dám vylistovat hodnoty RA a RB, obě jsou stejné, obě mají hodnotu RA. Co dělám špatně? Proč RB nemá hodnotu Amreg(RB)?
Komentovat