home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / totallyamos / issue5 / programming / 6.seq < prev   
Text File  |  1992-05-13  |  13KB  |  355 lines

  1. fff00000ff00fe0080001a7f
  2. ^4*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF
  3.  
  4. ^2                      T O T A L L Y   A M A L 
  5.  
  6. ^1                            By Paul Townsend
  7.  
  8. ^5                       Of Technical Fred Software
  9.  
  10. ^4*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF
  11.  
  12. ^2 THE  FOLLOWING  TWO  ARTICLES  APPEARED IN THE LAST ISSUE OF TOTALLY
  13. ^2AMOS,  BUT DUE TO THE FACT THAT SOME CHARACTERS USED IN THE TA DRIVER
  14. ^2PROGRAM APPEAR IN THE LISTINGS, THERE WAS A SCRAMBLING OF SOME OF THE
  15. ^2CODE.
  16.  
  17. ^2 TO  AVOID  ALL  CONFUSION,  THESE ARTICLES ARE BEING REPEATED AS THE
  18. ^2DRIVER  PROG  HAS  NOW  BEEN  AMMENDED  TO  TAKE  THE CHARACTERS INTO
  19. ^2ACCOUNT.
  20.  
  21. ^2 PAUL  SENDS  HIS  APOLOGIES  FOR  THE  LACK  OF PART TWO OF BOTH HIS
  22. ^2TUTORIALS,  BUT  THIS  IS DUE TO ILL HEALTH AND OTHER COMMITMENTS, HE
  23. ^2GIVES HIS SOLOMN PROMISE THAT THEY WILL APPEAR NEXT TIME.
  24.  
  25. ^4*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF
  26.  
  27. ^2                     So you want to learn Amal ?
  28.  
  29. ^3                               Sure ?
  30.  
  31. ^7                       In that case read on !
  32.  
  33. ^4*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF
  34.  
  35. ^1                           The Very Beginings
  36.  
  37. ^6 It  seems  that  there  are a lot of people out there who seem to be
  38. ^6getting  the  hang of Amos Basic, but seem to be having difficulty in
  39. ^6using  Amal,  this short tuturial aims to get those people started at
  40. ^6writing simple programs in Amal.
  41.  
  42. ^6 This tutorial has no intentions of teaching you to program in BASIC,
  43. ^6there are enougth books on that already.
  44.  
  45. ^6 I do not think that I am any expert with Amal ( At least not yet !),
  46. ^6I  am  still  getting to grips with some of it's finer details, but I
  47. ^6will try to tell you what little I know in a bit more detail and in a
  48. ^6more understandable way than the Amos manual.
  49.  
  50. ^6 Right that's enough waffle, let's get down to business.
  51.  
  52. ^6 First  I will out line a couple of rules that you must always follow
  53. ^6when using Amal.
  54.  
  55. ^1                               Rule 1
  56.  
  57. ^4This is the one mistake that many new users seem to make,
  58.  
  59. ^2            A M A L   I S   C A S E   S E N S I T I V E 
  60.  
  61. ^4 That  means  that  it  is VERY fussy when it comes down to giving it
  62. ^4commands, you may have noticed that whenever you type in a command in
  63. ^4normal  Amos,  it noes not matter whether you use UPPER case (Capital
  64. ^4letters eg.'ABCD') or lower case letters (small letters eg.  'abcd'),
  65. ^4for  example  take  the  "Print"  command,  Amos does not care if you
  66. ^4type:-
  67.  
  68. ^2PRINT
  69.  
  70. ^2print
  71.  
  72. ^2Print
  73.  
  74. ^4or even :-
  75.  
  76. ^2PrInT
  77.  
  78. ^4It always seems to understand and convert it to :-
  79.  
  80. ^2Print (i.e.  the first letter is Captal, the rest are not !)
  81.  
  82. ^4 You  may  be  forgiven  for  thinking  that  Amal  would  be just as
  83. ^4carefree,  well  sorry  to  disappoint  you, but Amal is nowhere near
  84. ^4being that helpful
  85.  
  86. ^4If you mean,
  87.  
  88. ^2For X=1 To 100 ; Pause ; Next X
  89.  
  90. ^4then that is what you must type in to Amal, it's no good saying,
  91.  
  92. ^2For X=1 to 100 ; Pause ; Next X
  93.  
  94. ^4because it just will not work
  95.  
  96. ^6Spot  the  difference?
  97.  
  98. ^1 Yes  there  is  one,  look  carefully,  the  word 'to' in the second
  99. ^1example  should be 'To' not 'to', you see what a headache Amal can be
  100. ^1to it's newcommers.
  101.  
  102. ^1 Don't  worry  if  you  don't  understand  what the last line of Amal
  103. ^1commands  meant, all will be revealed later, as long as you can see
  104. ^1the  difference between them, then you are over one of the first Amal
  105. ^1hurdles.
  106.  
  107. ^7                               Rule 2
  108.  
  109. ^2Colons (:) in Amal
  110.  
  111. ^6 When  programming  in  BASIC  you  may be used to using the colon to
  112. ^6seperate  commands  that  you  want  to  stay  on  the  same line for
  113. ^6example:-
  114.  
  115. ^2For F=1 To 100 :  Print "Hello" :  Next F
  116.  
  117. ^6The use of the colon changes once in Amal.  (More on this later)
  118.  
  119. ^6 To  keep  things simple, to separate commands in Amal, just use a
  120. ^6semi-colon (;) like I have done in the above examples
  121.  
  122. ^6 To  get  commands  into Amal you first need to get them into an Amos
  123. ^6String, the simplest way I have found is to say somthing like :-
  124.  
  125. ^2AM$="For R0=1 To 100 ; Pause ; Next R0"
  126.  
  127. ^6And then to run it use the following:
  128.  
  129. ^2Amal 1,Am$ 
  130. ^2Amal On
  131.  
  132. ^6 This  will  get your Amal program running, (Hopefully!).  If you run
  133. ^6that last program, what do you see?  If you ran it and got absolutely
  134. ^6nothing  at all, then it probably worked OK.  If you got one of those
  135. ^6ever so helpful "Syntex Error in Animation String" messages then look
  136. ^6carefully  at  the  program and make sure that everything is typed in
  137. ^6correctly.
  138.  
  139. ^6 OK.   so  you want me to tell you why you should have got nothing on
  140. ^6the  screen?   Well  if  you look at the above AM$, you may recognise
  141. ^6that it looks a little like an Amos Basic Program i.e.
  142.  
  143. ^2For R0=1 To 200
  144. ^2Pause
  145. ^2Next R0
  146.  
  147. ^6 The Pause statement in Amal is rather like the Wait Vbl statement in
  148. ^6Amos  Basic  ie does nothing but waits for a while (about the same as
  149. ^61/50th  of  a  second).   This  is why nothing appears on the screen,
  150. ^6because  like  all  computer languages, they only do what is asked of
  151. ^6them  no more and no less.  (That's the theory anyway, I've never yet
  152. ^6ASKED  foe a Guru meditation message in any of my programs, they just
  153. ^6happen  whenever the computer seems to feel like it, but you know how
  154. ^6theories go don't you?)
  155.  
  156. ^7 If  you  want something more interesting to happen then we are going
  157. ^7to  have to tell Amal to move something around for us.  To do this we
  158. ^7need  to  tell a Bob or Sprite to ATTACH itself to your Amal program,
  159. ^7to do that we need a Channel Command ie:
  160.  
  161. ^2Channel (Amal program number) to Bob (Bob number)
  162.  
  163. ^7We will now include that in the above example:
  164.  
  165. ^2Load "Sprites.ABK" REM: LOAD IN A SPRITE BANK HERE
  166. ^2AM$="For R01 To 200 : Let X=R0 : Let Y=R0 : Next R0"
  167. ^2Bob 1,0,0,1
  168. ^2Channel 1 To Bob 1
  169. ^2Amal 1, AM$
  170. ^2Amal On 1
  171. ^2Direct
  172.  
  173. ^7 Type  this  in and run it.  Remember that you will need to load in a
  174. ^7sprite bank!
  175.  
  176. ^7 Hopefully this should move your Bob diagonally on the screen.
  177.  
  178. ^7 How do we get it to move back the other way?
  179.  
  180. ^6 Well  I  will  leave you with that teaser and next issue I will tell
  181. ^6you  the  answer,  so why not have a go yourself?  Don't be afraid to
  182. ^6experiment,  you  cannot  do  any harm to your computer if you get it
  183. ^6wrong!   (It  may  sulk and Guru, but just show it who's boss and hit
  184. ^6that left mouse button and try again!)
  185.  
  186. ^2 Finally,  is  there  anything  you want to know how to do in AMOS or
  187. ^2AMAL?   If  so  why  not  drop  a  line  to Totally Amos at the usual
  188. ^2address?
  189.  
  190. ^3                         See you next Issue.
  191.  
  192. ^3                           Paul Townsend.
  193.  
  194. ^4*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF
  195.  
  196. ^3               T R I G   S C R E E N   E F F E C T S 
  197.  
  198. ^2                     An Insight By Paul Townsend
  199.  
  200. ^7*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF
  201.  
  202. ^4 So  you  want  to  know  how  to produce those Sin and Cos generated
  203. ^4effects that keep appearing from Technical Fred Software.  This short
  204. ^4introduction  should  give  you an idea on how to get started.  I get
  205. ^4the  impression that many people seem to have a fear of using Sin and
  206. ^4Cos  in  their  programs  (Trigophobia  ?), this is not too suprising
  207. ^4really  as  their  seems  to  be very little explanation of what they
  208. ^4really do, so here I am to try to make sense of it all.
  209.  
  210. ^2                             First Steps
  211.  
  212. ^5 When you run my programs that use Sin and Cos, if you look carefully
  213. ^5then  you  will  realize  that most of the effects are based upon the
  214. ^5circle,  or multiple circles interacting with each other.  The reason
  215. ^5for  this  is that I use Sin and Cos to produce circles, with is what
  216. ^5they  are  good at (They probably have many other uses, but I haven't
  217. ^5found any that are interesting enough to bother about).
  218.  
  219. ^2                             The Theory
  220.  
  221. ^4 The  circle can be split up into 360 points which can be imagined to
  222. ^4be  positioned,  equally  spaced around the circumference.  So if you
  223. ^4start  at  any  place on the circumference and move 360 points in any
  224. ^4direction, you will end up back where you started from.
  225.  
  226. ^5 What  we  need to know is how to work out where all these points are
  227. ^5so  that  we can do something at that particular point on the screen,
  228. ^5i.e plot a point, paste a bob etc.
  229.  
  230. ^4 When  typing  in these examples, dont type in the <---- and comments
  231. ^4or  the  computer  will spit them back at you, (You could use Rems if
  232. ^4you want, but I'm just too lazy !), Just type in the bits before them
  233. ^4and press RETURN
  234.  
  235. ^5 The way to do this is to choose which points on the circle you want,
  236. ^5for our purposes we will just plot the entire circle, a program to do
  237. ^5this could be:
  238.  
  239. ^7Screen Open 0,320,256,32,Lowres
  240.  
  241. ^7Degree           <----Tell the computer we want to work in degrees
  242.  
  243. ^7For F=0 To 360   <----Set up a loop 
  244.  
  245. ^7X#=Sin(F)        <----Work out the Co-ords
  246.  
  247. ^7Y#=Cos(F)        <---- "    "   "   "  "
  248.  
  249. ^7Plot X#,Y#       <----Plot the point
  250.  
  251. ^7Next F           <----Loop ? 
  252.  
  253. ^4If  you  try  it,  don't  be  surprised  if you get nothing at all on
  254. ^4screen, the reason for this is that
  255. ^4 1) The co-ords are just off screen at the top left and
  256. ^4 2) the circle is only 1 pixel wide.
  257.  
  258. ^5This calls for some minor changes to the above program :-
  259.  
  260. ^4Firstly let's add the centre of the screen to the points plotted.
  261.  
  262. ^7Screen Open 0,320,256,32,Lowres
  263.  
  264. ^7Degree           <----Tell the computer we want to work in degrees
  265.  
  266. ^7For F=0 To 360   <----Set up a loop 
  267.  
  268. ^7X#=160+Sin(F)    <----Work out the Co-ords
  269.  
  270. ^7Y#=128+Cos(F)    <---- "    "   "   "  "
  271.  
  272. ^7Plot X#,Y#       <----Plot the point
  273.  
  274. ^7Next F           <----Loop ? 
  275.  
  276. ^5 This  program  will  appear  to  plot  a  point in the centre of the
  277. ^5screen,  this  is  because  the  circle  is  still only 1 pixel wide,
  278. ^5therefore one final change is needed to get the circle to look like a
  279. ^5circle.
  280.  
  281. ^7Screen Open 0,320,256,32,Lowres
  282.  
  283. ^7Degree              <----Tell the computer we want to work in degrees
  284.  
  285. ^7For F=0 To 360       <----Set up a loop 
  286.  
  287. ^7X#=160+(100*Sin(F))  <----Work out the Co-ords
  288.  
  289. ^7Y#=128+(100*Cos(F))  <---- "    "   "   "  "
  290.  
  291. ^7Plot X#,Y#           <----Plot the point
  292.  
  293. ^7Next F               <----Loop ? 
  294.  
  295. ^4 This  program  should  now work, it should draw a circle that is 100
  296. ^4pixels wide.  (Why not try other numbers other than 100 for different
  297. ^4sizes of circles)
  298.  
  299. ^5 Hopefully  you  should  now  have a circle on the screen, it may not
  300. ^5look  much,  but  if you can understand why the circle is there, then
  301. ^5that is the first hurdle over with.
  302.  
  303. ^4 OK,  I  think we should make this program a little more interesting,
  304. ^4what about making the circle appear to move.
  305.  
  306. ^5The  method  I  will use is a palette switch, try this, don't type in
  307. ^5the comments though
  308.  
  309. ^7Screen Open 0,320,256,32,Lowres
  310.  
  311. ^7Flash off            <----Needed for Shift Up to work
  312.  
  313. ^7Degree               <----Tell the computer we want to work in degrees
  314.  
  315. ^7For F=0 To 360       <----Set up a loop 
  316.  
  317. ^7Add rgb,1,1 to 31
  318.  
  319. ^7X#=160+(100*Sin(F))  <----Work out the Co-ords
  320.  
  321. ^7Y#=128+(100*Cos(F))  <---- "    "   "   "  "
  322.  
  323. ^7Plot X#,Y#,RGB       <----Plot the point in the selected colour.
  324.  
  325. ^7Next F               <------Loop ? 
  326.  
  327. ^7Shift Up 2,1,31,1    <------set up a palette switch (or colour cycle)
  328.  
  329. ^7Direct
  330.  
  331. ^4 If you run this program you should have a revolving circle.
  332.  
  333. ^5 You  can  now  plot  a circle, each point in a different colour, and
  334. ^5then to make it move.
  335.  
  336. ^4 In  the  next part of this tutorial, we will try to use what we have
  337. ^4learned  to  produce  some  more  interesting effects, but until then
  338. ^4please don't be afraid to experiment, try changing any of the numbers
  339. ^4in  the  above programs, just to see what happens.  After all, that's
  340. ^4how all of the effects I have written in the past started off.  (i.e.
  341. ^4see Screen Wipes in previous editions of TA) I just guess at a number
  342. ^4to  change  in a program run it and hope for the best.  If the effect
  343. ^4looks  good then I save the program, if not, I change it to something
  344. ^4else.  (How's that for a structured approach to programming?)
  345.  
  346. ^5 So  until  next time, have fun.  If you have anything you would like
  347. ^5to see in these tutorials, why not drop a line to Totally Amos at the
  348. ^5usual address.
  349.  
  350.                              ^3T T F N 
  351.  
  352.                   ^2Paul (Technical Fred) Townsend.
  353.  
  354. ^7*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF*TF
  355. \