QB64.org Forum

Active Forums => Programs => Topic started by: PMACKAY on October 13, 2018, 03:12:10 am

Title: super simple sprite routine (16x16 chars easy to modify)
Post by: PMACKAY on October 13, 2018, 03:12:10 am
I wanted something different to play with, so i played with pset

this is my simple sprite routine to display 8 sprites

 at 16x16 (easy to change)

sprites priority's are 1 at the back to 8 at the front.. first four behind text and last four in front of text.

its easy to change the amount

I like my x set for 3 and y for 0.7

do as you will to it... i was just bored and trying stuff out.

you might want to vacuum the code, its a bit messy
Title: Re: super simple sprite routine (16x16 chars easy to modify)
Post by: johnno56 on October 13, 2018, 05:50:25 am
Um... all I got was 16 lines of data statements containing 16 zeros in each data statement... Did I do something wrong again?

j
Title: Re: super simple sprite routine (16x16 chars easy to modify)
Post by: TempodiBasic on October 13, 2018, 09:04:56 am
@PMACKAY
I can confirm Johnno56's experience.... only DATA 0,0,0,0,0....
Title: Re: super simple sprite routine (16x16 chars easy to modify)
Post by: bplus on October 13, 2018, 11:06:57 am
Well I tried using my imagination and came up with this in about 10 minutes:
Code: QB64: [Select]
  1. SCREEN _NEWIMAGE(800, 600, 32)
  2. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  3. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  4. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  6. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  7. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  8. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  9. DATA 0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0
  10. DATA 1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0
  11. DATA 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0
  12. DATA 0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0
  13. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  14. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  15. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  16. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  17. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  18.  
  19. DIM SHARED sprt(16, 16)
  20. FOR y = 0 TO 15
  21.     FOR x = 0 TO 15
  22.         READ sprt(x, y)
  23.     NEXT
  24. TYPE btype
  25.     x AS INTEGER
  26.     y AS INTEGER
  27.  
  28. DIM SHARED bs(10000) AS btype
  29. bi = -1
  30.     CLS , _RGB32(0, 0, 128)
  31.     nloop = nloop + 1
  32.     IF RND < .15 AND (bi + 1) < 10000 THEN
  33.         bi = bi + 1
  34.         newb bi
  35.     END IF
  36.     FOR i = 0 TO bi
  37.         bs(i).x = bs(i).x - (RND * 8 + 2)
  38.         bs(i).y = bs(i).y - (RND * 6 + 1)
  39.         IF bs(i).x < -16 THEN newb i
  40.         IF bs(i).y < -16 THEN newb i
  41.         drawb bs(i).x, bs(i).y
  42.     NEXT
  43.     _DISPLAY
  44.     _LIMIT 20
  45.  
  46. SUB newb (i)
  47.     bs(i).x = 800 + RND * 320
  48.     bs(i).y = 600 + RND * 80
  49. SUB drawb (xx, yy)
  50.     FOR y = 0 TO 15
  51.         FOR x = 0 TO 15
  52.             IF sprt(x, y) THEN PSET (x + xx, y + yy), _RGB32(0, 0, 0)
  53.         NEXT
  54.     NEXT
  55.  
  56.  


EDIT: Vacuumed one line already
Title: Re: super simple sprite routine (16x16 chars easy to modify)
Post by: Petr on October 13, 2018, 11:47:18 am
Well, the original code give you plenty of space for imagination. :-D
Title: Re: super simple sprite routine (16x16 chars easy to modify)
Post by: bplus on October 13, 2018, 11:58:40 am
LOL it IS one of the simplest editor's I've ever seen!
Title: Re: super simple sprite routine (16x16 chars easy to modify)
Post by: johnno56 on October 13, 2018, 03:15:21 pm
Cool... Sky chickens.
Title: Re: super simple sprite routine (16x16 chars easy to modify)
Post by: PMACKAY on October 13, 2018, 10:31:08 pm
sorry guys
Code: QB64: [Select]
  1. ' ****************************************
  2. ' MY SILLY SPRITE ROUTINE
  3. '
  4. ' NO COLLISION DETECTION. VERY EASY TO ADD
  5. '
  6. ' ****************************************
  7. ' BY PAUL MACKAY / i LIKE THE TEXT MODE BETTER FOR SPEED, BUT THIS LOOKS BETTER
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18. REM 8XSPRITES (SPRITE N0#,DATA,DATA,X,Y,COLOUR N#,ANIMATION NO#) : REM PRIORITY IS (1 LOW, 8 HIGH) = (1,2,3,4 BEHIND TEXT AND 5,6,7,8 IN FONT OF TEXT) ANIMATION = ANY AMOUNT) BUT ONLY 8 DISPLAYED AT A TIME:DIM X(8),Y(8),X1(I),Y1(I)
  19. SWIDTH = 64 * 8: SHEIGHT = 16 * 16
  20. DIM SHARED SPRITEMEM%(8,16,16):DIM SHARED SPRITEPO%(8,4):DIM SCREENMEM%(64, 16):DECLARE SUB SPRITE(XCOL%,YCOL%,COL%,SPRITENO%)
  21.  
  22. INPUT "X SMOOTH"; YJUMP
  23. INPUT "Y SMOOTH"; XJUMP
  24.  
  25. SCREEN _NEWIMAGE(SWIDTH, SHEIGHT, 256)
  26. FOR I = 1 TO 8
  27.     FOR J = 1 TO 16
  28.         FOR K = 1 TO 16
  29.             READ L
  30.             SPRITEMEM%(I, J, K) = L
  31.         NEXT K
  32.     NEXT J
  33.  
  34. REM SET COLOURS FOR SPRITES AND CHARACTER NUMBERS
  35.  
  36. SPRITE X(1), Y(1), 21, 1, 0
  37. SPRITE X(2), Y(2), 32, 2, 0
  38. SPRITE X(3), Y(3), 43, 3, 0
  39. SPRITE X(4), Y(4), 54, 4, 0
  40. SPRITE X(5), Y(5), 65, 5, 0
  41. SPRITE X(6), Y(6), 76, 6, 0
  42. SPRITE X(7), Y(7), 87, 7, 0
  43. SPRITE X(8), Y(8), 98, 8, 0
  44.  
  45. FOR I = 1 TO 8: X(I) = INT(RND(1) * SHEIGHT): Y(I) = INT(RND(1) * SWIDTH): DO: B = INT(RND(1) * 2): IF B = 1 OR B = 2 THEN EXIT DO
  46.     LOOP: IF B = 1 THEN X1(I) = -XJUMP ELSE X1(I) = XJUMP
  47.     DO: B = INT(RND(1) * 2): IF B = 1 OR B = 2 THEN EXIT DO
  48.     LOOP: IF B = 1 THEN Y1(I) = YJUMP ELSE Y1(I) = YJUMP
  49.  
  50.     FOR I = 1 TO 8
  51.         IF X(I) < 1 THEN X1(I) = XJUMP ELSE IF X(I) > SHEIGHT - 17 THEN X1(I) = -XJUMP
  52.         X(I) = X(I) + X1(I)
  53.         IF Y(I) < 1 THEN Y1(I) = YJUMP ELSE IF Y(I) > SWIDTH - 17 THEN Y1(I) = -YJUMP
  54.         Y(I) = Y(I) + Y1(I)
  55.         B = SPRITEPO%(I, 3)
  56.         SPRITE X(I), Y(I), B, I, 1
  57.     NEXT I
  58.     _LIMIT 266
  59.  
  60.  
  61. SUB SPRITE (XCOL%, YCOL%, COL%, SPRITENO%, SPRITEONOFF%)
  62.     CLS: SPRITEPO%(SPRITENO%, 1) = XCOL%: SPRITEPO%(SPRITENO%, 2) = YCOL%: SPRITEPO%(SPRITENO%, 3) = COL%: SPRITEPO%(SPRITENO%, 4) = SPRITEONOFF%
  63.     REM SPRITES 1 TO 4 BEHIND TEXT. 4 HAVING HIGHEST PRIORITY
  64.     FOR IPX = 1 TO 4
  65.         CURRENT% = SPRITEPO%(IPX, 3)
  66.         XCOL% = SPRITEPO%(IPX, 1)
  67.         YCOL% = SPRITEPO%(IPX, 2)
  68.         FOR I = 1 TO 8
  69.             FOR J = 1 TO 16
  70.                 FOR K = 1 TO 16
  71.                     L = SPRITEMEM%(IPX, J, K)
  72.                     SELECT CASE L
  73.                         CASE 0
  74.                             'PSET (K + YCOL% - 1, J + XCOL% - 1), 0
  75.                         CASE 1
  76.                             IF SPRITEPO%(IPX, 4) = 1 THEN PSET (K + YCOL% - 1, J + XCOL% - 1), SPRITEPO%(IPX, 3)
  77.                     END SELECT
  78.                 NEXT K
  79.             NEXT J
  80.         NEXT I
  81.     NEXT IPX
  82.  
  83.     REM THIS IS WERE THE PRINT ROUTINES FOR TEXT GO : FOR I=1 TO 64:FOR J=1 TO 16:PRINT SCREENMEM%(I,J):NEXT : NEXT
  84.     COLOR 7: LOCATE 6, 6: PRINT "ÛÛ 4 SPRITES IN FRONT OF TEXT": LOCATE 7, 6: PRINT "ÛÛ AND 4 SPRITES BEHIND TEXT"
  85.     COLOR 14: LOCATE 13, 19: PRINT "ÜÜÜÜÜÜÜÜÜÜ": COLOR 6: LOCATE 13, 19: PRINT "----------"
  86.     FOR I = 4 TO 6: COLOR 2: LOCATE 10 + I, 20: PRINT "ÛÛÛ²±°°°";: NEXT I: LINE (0, 0)-(511, 255), _RGB32(150, 150, 15), B
  87.  
  88.     REM SPRITES 8 TO 5 HIGH PRIORITY PRINT ONTO 8 = HIGHEST / ABOVE TEXT
  89.     FOR IPX = 5 TO 8
  90.         CURRENT% = SPRITEPO%(IPX, 3)
  91.         XCOL% = SPRITEPO%(IPX, 1)
  92.         YCOL% = SPRITEPO%(IPX, 2)
  93.         FOR I = 1 TO 8
  94.             FOR J = 1 TO 16
  95.                 FOR K = 1 TO 16
  96.                     L = SPRITEMEM%(IPX, J, K)
  97.                     SELECT CASE L
  98.                         CASE 0
  99.                             'PSET (K + YCOL% - 1, J + XCOL% - 1), 0
  100.                         CASE 1
  101.                             IF SPRITEPO%(IPX, 4) = 1 THEN PSET (K + YCOL% - 1, J + XCOL% - 1), SPRITEPO%(IPX, 3)
  102.                     END SELECT
  103.                 NEXT K
  104.             NEXT J
  105.         NEXT I
  106.     NEXT IPX
  107.  
  108.     _DISPLAY
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145. DATA 0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0
  146. DATA 0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0
  147. DATA 0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0
  148. DATA 0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0
  149. DATA 0,1,0,1,1,1,0,0,0,0,1,1,1,0,1,0
  150. DATA 1,0,0,1,0,1,0,0,0,0,1,0,1,0,0,1
  151. DATA 1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1
  152. DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  153. DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  154. DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  155. DATA 1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1
  156. DATA 0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0
  157. DATA 0,1,0,0,0,1,1,1,1,1,1,0,0,0,1,0
  158. DATA 0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0
  159. DATA 0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0
  160. DATA 0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0
  161.  
  162. DATA 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0
  163. DATA 0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0
  164. DATA 0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0
  165. DATA 0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0
  166. DATA 0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0
  167. DATA 0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0
  168. DATA 1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0
  169. DATA 0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0
  170. DATA 0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0
  171. DATA 0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0
  172. DATA 0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0
  173. DATA 0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0
  174. DATA 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0
  175. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  176. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  177. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  178.  
  179. DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  180. DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  181. DATA 1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,1
  182. DATA 1,1,0,1,0,0,0,0,0,0,0,1,0,1,0,1
  183. DATA 1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,1
  184. DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  185. DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  186. DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  187. DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  188. DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  189. DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  190. DATA 1,0,1,1,1,0,0,0,0,0,0,1,1,1,0,1
  191. DATA 1,0,1,0,1,0,0,0,0,0,0,1,0,1,0,1
  192. DATA 1,0,1,1,1,0,0,0,0,0,0,1,1,1,0,1
  193. DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
  194. DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
  195.  
  196. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  197. DATA 0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0
  198. DATA 0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0
  199. DATA 0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0
  200. DATA 0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0
  201. DATA 0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0
  202. DATA 0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0
  203. DATA 0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0
  204. DATA 0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0
  205. DATA 0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0
  206. DATA 0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0
  207. DATA 0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0
  208. DATA 0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0
  209. DATA 0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0
  210. DATA 0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0
  211. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  212.  
  213. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  214. DATA 0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0
  215. DATA 0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0
  216. DATA 0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0
  217. DATA 0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0
  218. DATA 0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0
  219. DATA 0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0
  220. DATA 0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0
  221. DATA 0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0
  222. DATA 0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0
  223. DATA 0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0
  224. DATA 0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0
  225. DATA 0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0
  226. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  227. DATA 0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0
  228. DATA 0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0
  229.  
  230. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  231. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  232. DATA 0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0
  233. DATA 0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0
  234. DATA 0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0
  235. DATA 0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0
  236. DATA 0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0
  237. DATA 0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0
  238. DATA 1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0
  239. DATA 1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0
  240. DATA 1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0
  241. DATA 1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0
  242. DATA 1,0,1,0,1,0,1,0,1,0,0,1,1,1,0,0
  243. DATA 1,0,1,0,1,0,1,0,1,1,1,0,0,1,0,0
  244. DATA 1,0,1,0,1,0,1,0,1,0,0,0,1,0,0,0
  245. DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0
  246.  
  247. DATA 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0
  248. DATA 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0
  249. DATA 0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0
  250. DATA 0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0
  251. DATA 0,0,0,1,0,0,1,1,0,0,1,0,0,0,0,0
  252. DATA 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0
  253. DATA 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0
  254. DATA 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0
  255. DATA 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0
  256. DATA 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0
  257. DATA 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0
  258. DATA 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0
  259. DATA 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0
  260. DATA 0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0
  261. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  262. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  263.  
  264. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  265. DATA 0,1,0,0,0,0,0,0,0,0,1,1,1,0,0,0
  266. DATA 0,1,1,0,0,0,0,0,0,1,0,0,0,1,0,0
  267. DATA 0,1,1,1,1,1,1,0,1,0,0,0,0,0,1,0
  268. DATA 0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0
  269. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0
  270. DATA 0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0
  271. DATA 0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0
  272. DATA 0,1,1,1,1,1,1,0,0,0,0,0,0,1,0,0
  273. DATA 0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0
  274. DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0
  275. DATA 0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0
  276. DATA 0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0
  277. DATA 0,1,1,1,1,1,1,0,1,0,0,0,0,0,1,0
  278. DATA 0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0
  279. DATA 0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0
  280.