Oznámení

Sbalit
Aktuálně žádná oznámení.

AMOS: animační string v AMALu

Sbalit
X
 
  • Filtr
  • Čas
  • Zobrazit
Vymazat vše
new posts

    AMOS: animační string v AMALu

    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:

    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
    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:
    Code:
    Do
    If Mouse Key=1 Then MOVEMENT
    Loop
    Tím program skočí na vykonání procedury MOVEMENT, která vypadá takto:

    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
    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)?
    "Venku leje. Naimpregnuju si hlavu pivem." (Červ, 2023)

    #2
    O: AMOS: animační string v AMALu

    Nejde ty promenny nastavit na typ Global aby se s tim nemusels prcat pres amreg?
    Umřít v nejlepším umí málokdo. Dokázala to jen Amiga a Šlacha.

    Komentovat


      #3
      O: AMOS: animační string v AMALu

      Nejde, AMAL je z hlavniho programu nebere.
      "Venku leje. Naimpregnuju si hlavu pivem." (Červ, 2023)

      Komentovat


        #4
        O: AMOS: animační string v AMALu

        Tak problém byl vyřešen, měl jsem špatně použitý právě ten příkaz Amreg.


        Code:
        Procedure MOVEMENT
        Amreg(1)=Y Mouse-42-B
        Amreg(0)=X Mouse-128-A
        Bob 3,A,B,3
        A$="S: Move RA,RB,100; Pause;"
        Amal 3, A$
        Amal On 3
        End Proc
        Když to daám takhle, dělá to to co chci.
        "Venku leje. Naimpregnuju si hlavu pivem." (Červ, 2023)

        Komentovat


          #5
          O: AMOS: animační string v AMALu

          Zdá se, že parametr Amreg se již moc nekamarádí s jiným, než 16kovým zápisem
          Amiga - PMD 85

          Komentovat

          Zpracovávám...
          X