home *** CD-ROM | disk | FTP | other *** search
/ Amoszine 4 / Amoszine 4 (Disk 3 of 3).adf / MICRO.lha / Micro_machines / Micro_machines.asc < prev   
Encoding:
Text File  |  1992-02-26  |  4.6 KB  |  186 lines

  1. '  PROG: A Micro Machine type game engine using old High Octane gfx. 
  2. 'Author: Paul Overy.   
  3. '
  4. '*** NOTE: This needs the turbo pro extension to work ***
  5. '   ------ 
  6. 'Sorry I had no time to convert it into TRUE AMOS. 
  7. '
  8. '*** The Carft 2 Turbo extension on CU Amiga August 1994 should be OK ***  
  9. '*** Although I use the lastest version ***  
  10. '(No time to convert it to TRUE AMOS)
  11. '
  12. 'Keys: Arrow up speed up scroll
  13. '      Arrow down slow down scroll 
  14. '      left mouse to exit    
  15. '
  16. ' This version should be in ascii format with all the  
  17. ' banks supplied in a draw named "Data" by the program file.     
  18. '    
  19. '
  20. ' As you can see this program has no comments, no time.  
  21. ' Anyway... "Good structured High Level code documents itself".  
  22. ' So you should have no trouble understanding my code, Haarrrr!
  23. '
  24. ' Those people who do have time to comments in their code, please
  25. ' don't put things like....
  26. '
  27. ' add X_AXIS,MOVE_X :rem add x_axis to move_x   ....."very helpfull!"    
  28. '                             TRY
  29. '                    rem Move alien in pixels, on the horizontal.
  30. '
  31. Dim PX(36),PY(36),_COL(15),LK_UP(7)
  32. Global PX(),PY(),_COL()
  33. Proc GRAB
  34. Proc ANGLES
  35. '
  36. LK_UP(0)=1 : LK_UP(1)=6
  37. LK_UP(2)=10 : LK_UP(3)=15
  38. LK_UP(4)=19 : LK_UP(5)=24
  39. LK_UP(6)=28 : LK_UP(7)=33
  40. OFFSET_X=32*16 : OFFSET_Y=32*16
  41. MAP_X=16 : MAP_Y=10
  42. FACE=10 : SPEED=4 : OX=320
  43. '
  44. Screen Open 0,640,240,8,Lowres : Flash Off : Curs Off : Cls 0
  45. Screen Display 0,128+16,44,320-32,240-32
  46. Autoback 0 : Auto View Off : Bob Update Off 
  47. Screen 0 : Scene Palette 2 : Scene Bank 12
  48. Scene 16 View 0,320,0 To 640,240
  49. Scene 16 Do MAP_X,MAP_Y
  50. Scene 16 View 0,0,0 To 320,240
  51. Scene 16 Do MAP_X,MAP_Y
  52. '
  53. For K=16 To 31
  54.    Colour K,_COL(K-16)
  55. Next K
  56. Screen Offset 0,OFFSET_X/16,OFFSET_Y/16 : View 
  57. Hide : Sprite Update Off 
  58. Sprite 0,X Hard(128),Y Hard(96),FACE
  59. Multi No 
  60. '
  61. Repeat 
  62.    Screen Offset 0,OFFSET_X/16+OX,OFFSET_Y/16
  63.    Vbl Wait Y Hard(200)
  64.    Update : View 
  65.    '
  66.    _DIR=LK_UP(Range(Peek((MAP_Y+7)*128+MAP_X+9+Start(11)),0 To 7))
  67.    '  
  68.    TURN= Not(TURN)
  69.    If TURN=True or SPEED<3
  70.       If _DIR>FACE
  71.          If _DIR>27 and FACE<9
  72.             Add FACE,-1,1 To 36
  73.          Else 
  74.             Add FACE,1,1 To 36
  75.          End If 
  76.       End If 
  77.       If _DIR<FACE
  78.          If _DIR<9 and FACE>27
  79.             Add FACE,1,1 To 36
  80.          Else 
  81.             Add FACE,-1,1 To 36
  82.          End If 
  83.       End If 
  84.       Sprite 0,,,FACE
  85.    End If 
  86.    '
  87.    If Raw Key(77)
  88.       If LAST_KEY77=False
  89.          SPEED=Range(SPEED+1,1 To 10)
  90.       End If 
  91.       LAST_KEY77=True
  92.    Else 
  93.       LAST_KEY77=False
  94.    End If 
  95.    If Raw Key(76)
  96.       If LAST_KEY76=False
  97.          SPEED=Range(SPEED-1,1 To 10)
  98.       End If 
  99.       LAST_KEY76=True
  100.    Else 
  101.       LAST_KEY76=False
  102.    End If 
  103.    '
  104.    If SPEED<10
  105.       Add OFFSET_X,PX(FACE)/SPEED : Add OFFSET_Y,PY(FACE)/SPEED
  106.    End If 
  107.    '
  108.    If OFFSET_X/16<1
  109.       MAP_X=Range(MAP_X-1,0 To 160) : MV_X2=16
  110.       Add OFFSET_X,256
  111.       _UPDATE=True
  112.    End If 
  113.    If OFFSET_X/16>31
  114.       MAP_X=Range(MAP_X+1,0 To 160) : MV_X1=16
  115.       Add OFFSET_X,-256
  116.       _UPDATE=True
  117.    End If 
  118.    If OFFSET_Y/16<1
  119.       MAP_Y=Range(MAP_Y-1,0 To 84) : MV_Y2=16
  120.       Add OFFSET_Y,256
  121.       _UPDATE=True
  122.       Scene 16 Top MAP_X,MAP_Y
  123.    End If 
  124.    If OFFSET_Y/16>31
  125.       MAP_Y=Range(MAP_Y+1,0 To 84) : MV_Y1=16
  126.       Add OFFSET_Y,-256
  127.       _UPDATE=True
  128.       Scene 16 Bottom MAP_X,MAP_Y
  129.    End If 
  130.    '
  131.    If _UPDATE=True
  132.       If MV_X2=16
  133.          Scene 16 Left MAP_X,MAP_Y
  134.       End If 
  135.       If MV_X1=16
  136.          Scene 16 Right MAP_X,MAP_Y
  137.       End If 
  138.       SWP= Not SWP
  139.       If SWP=False
  140.          Scene 16 View 0,0,0 To 320,240
  141.          Screen Copy 0,MV_X1,MV_Y1+Y,320-MV_X2,240-MV_Y2 To 0,320+MV_X2,MV_Y2
  142.          OX=320
  143.       Else 
  144.          Scene 16 View 0,320,0 To 640,240
  145.          Screen Copy 0,320+MV_X1,MV_Y1+Y,640-MV_X2,240-MV_Y2 To 0,MV_X2,MV_Y2
  146.          OX=0
  147.       End If 
  148.       _UPDATE=False
  149.       MV_X1=0 : MV_Y1=0 : MV_X2=0 : MV_Y2=0
  150.    End If 
  151. Until Left Click
  152. '
  153. Multi Yes 
  154. '  
  155. Procedure GRAB
  156.    Load Dir$+"data/bank10.dat"
  157.    Load Dir$+"data/bank11.dat"
  158.    Load Dir$+"data/bank12.dat"
  159.    Load Dir$+"data/bank15.dat"
  160.    Unpack 15 To 0
  161.    N=1 : Erase 2
  162.    For Y=0 To 240 Step 16
  163.       For X=0 To 304 Step 16
  164.          Get Icon N,X,Y To X+16,Y+16 : Inc N
  165.       Next X
  166.    Next Y
  167.    Unpack 10 To 0
  168.    For K=0 To 15 : _COL(K)= Colour(K) : Next K
  169.    Erase 1 : N=1
  170.    For Y=0 To 84-21 Step 21
  171.       For X=0 To 288 Step 32
  172.          Get Sprite N,X,Y To X+32,Y+21
  173.          Make Mask N : Inc N
  174.       Next X
  175.    Next Y
  176. End Proc
  177. Procedure ANGLES
  178.    K=10
  179.    For N#=0.0 To Pi#*2.0 Step Pi#/18.0
  180.       PX(K)=16.0*Cos(N#)*16.0
  181.       PY(K)=16.0*Sin(N#)*16.0
  182.       Exit If K=9
  183.       Add K,1,1 To 36
  184.    Next N#
  185. End Proc
  186.