User Tools

Site Tools


graphicsutilitiesstamp2sprite

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

graphicsutilitiesstamp2sprite [2016/01/12 10:12]
renejm
graphicsutilitiesstamp2sprite [2020/02/28 10:46]
Line 1: Line 1:
-{{graphicsutilitiesstamp2sprite.png?200}} 
-Subroutine to draw a stamp on the screen and then capture it as a sprite.  Requires 0.9.9.28 or higher.\\ 
-With 1.0.0.0 this fancy code is no longer needed.  Please see the [[Spritepoly|en:spritepoly]] statement.\\ 
-<code> 
-# stamp2sprite.kbs 
-# convert a stamp into a sprite 
-# will clear screen so do this first 
-# 2013-01-06 j.m.reneau 
-# requires BASIC-256 0.9.9.28 or higher 
- 
-fastgraphics 
-dim s(1) 
-#square 
-#s = {10,10,10,20,20,20,20,10} 
-#ghost 
-s = {2,-10, -2,-10, -5,-9, -6,-8, -7,-5, -2,-5, -2,-3, -4,-3, -4,-5, -7,-5, -7,9, -6,7, -5,9, -4,7, -3,9, -2,7, -1,9, 0,7, 1,9, 2,7, 3,9, 4,7, 5,9, 6,7, 7,9, 7,3, -3,3, -3,2, 3,2, 3,3, 7,3, 7,-5, 4,-5, 4,-3, 2,-3, 2,-5, 7,-5, 6,-8, 5,-9 } 
-spritedim 4 
-penwidth 1 
-call stamp2sprite(0,ref(s),white,red,clear,4) 
-penwidth 2 
-call stamp2sprite(1,ref(s),clear,clear,white,4) 
-penwidth 3 
-call stamp2sprite(2,ref(s),purple,purple,clear,4) 
-penwidth 4 
-call stamp2sprite(3,ref(s),rgb(0,255,0,128),rgb(0,255,0,64),clear,4) 
- 
-print "press any key to stop" 
- 
-color black 
-rect 0,0,300,300 
- 
-dim dx(4) 
-dim dy(4) 
-for t = 0 to 3 
-   dx[t] = 1 
-   dy[t] = 1 
-   spriteplace t,rand*300, rand*300 
-   spriteshow t 
-next t 
- 
-while key = 0 
-   for t = 0 to 3 
-      spritemove t, dx[t], dy[t] 
-      if spritex(t) <= 0 or spritex(t)>=300 then dx[t] *= -1 
-      if spritey(t) <= 0 or spritey(t)>=300 then dy[t] *= -1 
-   next t 
-   refresh 
-end while 
- 
-end 
- 
-subroutine stamp2sprite(spriteno, ref(points), pencolor, brushcolor, backgroundcolor, scale) 
-   # DRAW A STAMP ON THE SCREEN WITH SPECIFIED COLORS AND SCALE AND 
-   # CAPTURE IT AS A SPRITE 
-   minx = points[0] 
-   miny = points[1] 
-   maxx = points[0] 
-   maxy = points[1] 
-   for t = 1 to points[?]/2-1 
-      if points[t*2] < minx then minx = points[t*2] 
-      if points[t*2] > maxx then maxx = points[t*2] 
-      if points[t*2+1] < miny then miny = points[t*2+1] 
-      if points[t*2+1] > maxy then maxy = points[t*2+1] 
-   next t 
-   w = (maxx-minx)*scale + getpenwidth 
-   h = (maxy-miny)*scale + getpenwidth 
-   x = minx*-scale 
-   y = miny*-scale 
-   clg 
-   color backgroundcolor 
-   rect 0,0,w,h 
-   color pencolor, brushcolor 
-   stamp x,y,scale,0,points 
-   refresh 
-   spriteslice spriteno,0,0,w,h 
-end subroutine 
- 
- 
-</code> 
  
graphicsutilitiesstamp2sprite.txt ยท Last modified: 2020/02/28 10:46 (external edit)