home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 1996 July / AMIGA_1996_7.BIN / ausgabe_7_96 / pd-programmierung / ace_prgs.lha / gfx / sprite.b < prev   
Text File  |  1994-12-01  |  2KB  |  109 lines

  1. {*
  2. ** Simple sprite demo - Inside Amiga Graphics, p 197,198.
  3. ** Adapted from C to ACE BASIC, 1st Dec 1994 by David Benn.
  4. *}
  5.  
  6. CONST NULL = 0&
  7. CONST elements = 32
  8.  
  9. STRUCT SimpleSprite
  10.   ADDRESS  posctldata
  11.   SHORTINT height
  12.   SHORTINT x
  13.   SHORTINT y
  14.   SHORTINT num
  15. END STRUCT
  16.  
  17. DECLARE STRUCT SimpleSprite Sprite
  18.  
  19. '..Allocate CHIP RAM for sprite data array.
  20. ADDRESS dataAddress
  21. dataAddress = ALLOC(elements*SIZEOF(SHORTINT), 0)
  22. IF dataAddress = NULL THEN STOP
  23. DIM SHORTINT spriteData(elements) ADDRESS dataAddress
  24.  
  25. '..Read sprite data into array.
  26. SHORTINT i
  27. FOR i=0 TO elements-1
  28.   READ spriteData(i)
  29. NEXT
  30.  
  31. '..Sprite data.
  32. DATA 0,0
  33.  
  34. DATA &HFFFF,&HFFFF
  35. DATA &HFFFF,&HFFFF
  36.  
  37. DATA &HC003,&HCE73
  38. DATA &HC003,&HCE73
  39.  
  40. DATA &HFF8F,&HC073
  41. DATA &HFF8F,&HC073
  42.  
  43. DATA &HC003,&HCE73
  44. DATA &HC003,&HCE73
  45.  
  46. DATA &HF1FF,&HCE03
  47. DATA &HF1FF,&HCE03
  48.  
  49. DATA &HC003,&HCE73
  50. DATA &HC003,&HCE73
  51.  
  52. DATA &HFFFF,&HFFFF
  53. DATA &HFFFF,&HFFFF
  54.  
  55. '..End of sprite data.
  56. DATA 0,0
  57.  
  58. {*
  59. ** Main.
  60. *}
  61. LIBRARY "graphics.library"
  62.  
  63. DECLARE FUNCTION LONGINT GetSprite() LIBRARY
  64. DECLARE FUNCTION FreeSprite() LIBRARY
  65. DECLARE FUNCTION ChangeSprite() LIBRARY
  66. DECLARE FUNCTION MoveSprite() LIBRARY
  67. DECLARE FUNCTION WaitBOVP() LIBRARY
  68.  
  69. ADDRESS  WVP        '..viewport
  70. SHORTINT spgot        '..sprite number
  71. SHORTINT n
  72.  
  73. SCREEN 1,640,200,3,2
  74. WINDOW 1,"Simple Sprite",(0,0)-(640,200),8,1
  75.  
  76. WVP = SCREEN(3)
  77.  
  78. '..Allocate sprite #3.
  79. spgot = GetSprite(Sprite,3)
  80. IF spgot <> 3 THEN STOP
  81.  
  82. '..Set sprite height and initial position.
  83. Sprite->x = 20
  84. Sprite->y = 10
  85. Sprite->height = 14
  86.  
  87. '..Set sprite's colors.
  88. PALETTE 21,.8,.2,.53
  89. PALETTE 22,.2,.87,.27
  90. PALETTE 23,.8,.67,.27
  91.  
  92. '..Set up our sprite.
  93. ChangeSprite(WVP,Sprite,@spriteData)
  94.  
  95. '..Move sprite from top-left.
  96. FOR n=10 TO 100
  97.   WaitBOVP(WVP)
  98.   MoveSprite(WVP,Sprite,n*3,n)
  99.   SLEEP FOR .025
  100. NEXT
  101.  
  102. GADGET WAIT 0
  103.  
  104. FreeSprite(spgot)
  105. WINDOW CLOSE 1
  106. SCREEN CLOSE 1
  107.  
  108. END
  109.