Werken met Amos deel 83 """"""""""""""""""""""" Het bewegen van een objekt. """"""""""""""""""""""""""" Zoals je mag verwachten van een doordachte animatie taal, kun je je objekten op vele manieren bewegen. De meest eenvoudige manier is met het Move kommando. Move (Beweeg een objekt) M w,h,n Het m kommando beweegt een objekt zoveel w eenheden naar rechts en zoveel h delen naar onder in precies n bewegings stappen. Als de koordinaten voor je objekt (X,Y) waren, dan zou het objekt achtereenvolgens bewegen naar X+W,Y+W. Stel dat je de sprite koordinaten 100,100 hebt opgegeven. De instruktie M 100,100 zou het bewegen naar 200,200. De snelheid van deze beweging hangt af van het aantal bewegingsstappen. Is n te hoog, dan wordt elke sprite beweging te klein en beweegt de sprite erg langzaam. Aan de andere kant, als de waarde van n te laag is, dan gaat de sprite weer veel te snel. Hier volgen enkele voorbeelden van het Move kommando: Rem De oktopus sprite gaat van boven naar beneden over het scherm via AMAL Load"AMOS_DATA:Sprites/Octopus.abk" : Get Sprite Palette Sprite 8,300,0,1 Amal 8,"M 0,250,50" : Amal On 8 : Wait Key Rem Deze oktopus gaat van links naar rechts Load"AMOS_DATA:Sprites/Octopus.abk" : Get Sprite Palette Sprite 9,150,150,1 Amal 9,"M 300,0,50" : Amal On 9 : Wait Key Rem En deze gaat schuin naar beneden over het scherm Load"AMOS_DATA:Sprites/Octopus.abk" : Get Sprite Palette Sprite 10,150,150,1 Amal 10,"M 300,-100,50" : Amal On 10 : Wait Key Rem Verschillende Move kommando's Load"AMOS_DATA:Sprites/Octopus.abk" : Get Sprite Palette M$="Move 300,0,50 ; Move -300,0,50" Sprite 11,150,150,1 Amal 11, A$ : Amal On 11 : Wait key Kijk hoe wij de M gebruiken in plaats van Move in het bovenstaande program- ma. Omdat de letters "move" in kleine letters geschreven zijn, worden ze door het AMAL systeem niet herkend. Op het eerste gezicht lijkt Move een krachtige maar niet veel doende instruktie. Het is ideaal om objekten te bewegen zoals projektielen, maar verder kun je er niet veel bij verzinnen. Eigenlijk is dat niets minder maar. Dat komt omdat de parameters van de MOVE instruktie niet beperkt zijn tot enkel wat cijfers. Je kunt ook ingewikkelde rekenkundige uitdrukkingen verwerken samen met een van de verscheidene AMAL funkties. Voorbeeld: Load"AMOS_DATA:Sprites/Octopus.abk":Get Sprite Palette Sprite 12,150,150,1 Amal 12,"Move XM-X,YM-Y,32" Amal On 12 : Wait Key Nu beweegt samengestelde sprite nummer 12 zachtjes naar de huidige muis positie. X en Y bevatten de koordinaten van je sprite en XM en YM zijn de funkties die aan de huidige muis koordinaten gegeven worden. Het is mogelijk om dat effekt uit te buiten in spellen zoals Pac-Man om je objekten het figuurtje waar de speler mee werkt na te jagen. Een demonstratie van deze procedure kun je vinden in 2. Het MOVE kommado kan ook gebruikt worden om een heel scherm te animeren. Hier is een voorbeeld: Load Iff"AMOS_DATA:IFF/AMOSPIC.IFF",1 Channel 1 To Screen Display 1:Rem Verwijst het AMAL programma 1 naar scherm 1 Amal 1,"Move 0,-200,50 ; Move 0,200,50" Amal On 1 : Direct CHANNEL verwijst een AMOS programma naar een bepaald objekt. We zullen hier wat verderop met meer bijzonderheden ingaan, maar de syntax is: CHANNEL p To objekt n p is het nummer van je AMAL programma. De waarden varieren van 0 tot 63, hoewel alleen de eerste 16 daarvan interrupts (onderbrekingen) kunnen uitvoeren. objekts bepaalt het soort objekt dat je met het AMAL programma wilt bewerken. De volgende betekenissen kun je daaraan toevoegen: Sprite (Waarden groter dan 7 verwijzen naar samengestelde sprites) Bob (Blitter Objekt) Screen Display (Het scherm beweegt) Screen Offset (Hardware scrolling) Screen Size (Verandert de scherm maat via een interrupt) Rainbow (Animeert een regenboog effekt) n is het nummer van het te animeren objekt. Dat objekt moet vervolgens bepaald worden met de SPRITE, BOB of SCREEN OPEN instrukties. Voorbeeld: Channel 2 To Bob 1 : Rem Animert Bob 1 via AMAL programma nummer 2 Channel 3 To Sprite 8 : Rem Wijst channel drie naar een samengestelde sprite Channel 4 To Screen Display 0 : Rem Verplaatst het standaard scherm via AMAL Channel 5 To Screen Offset 0 : Rem Verandert de scherm buiten maat met AMAL