Boolean Sprites

Geef hier je beste Liberty BASIC tips door. (Hier geen hulp vragen)

Moderators: anthonio, Abcott

Boolean Sprites

Berichtdoor bluatigro » di maart 23, 2010 11:01 am

uitleg
sprites worden op de vogerde manier getekend
scherm = scherm and boven-deel-sprite
scherm = scherm or lager-deel-sprite
volgens de regels
a and 1 = a
a and 0 = 0
a or 1 = 1
a or 0 = a
er zijn meer regels als deze
maar je hebt alleen deze nodig om te begrijpen wat gebeurt
dit is te gebruiken voor
rook , mist , lasers , vuur , vonken etc...
en zelfs dingen dier niet in werkelijkheid voorkomen
Code: Selecteer alles
WindowWidth = DisplayWidth
WindowHeight = DisplayHeight
global height , pi , winx , winy
global black , red , green , yellow
global blue , magenta , cyan , white
global pink , purple , gray , orange
global north , west , south , east , state
north = 0
west = 1
south = 2
east = 3
state = east
winx = WindowWidth
winy = WindowHeight
pi = atn( 1 ) * 4
black   = rgb(   0 ,   0 ,   0 )
red     = rgb( 255 ,   0 ,   0 )
green   = rgb(   0 , 255 ,   0 )
yellow  = rgb( 255 , 255 ,   0 )
blue    = rgb(   0 ,   0 , 255 )
magenta = rgb( 255 ,   0 , 255 )
cyan    = rgb(   0 , 255 , 255 )
white   = rgb( 255 , 255 , 255 )
pink    = rgb( 255 , 127 , 127 )
orange  = rgb( 255 , 127 ,   0 )
gray    = rgb( 127 , 127 , 127 )
purple  = rgb( 127 ,   0 , 127 )
nomainwin
open "Boolean Sprites" for graphics as #m
  #m "trapclose [quit]"
''draw backgroud"
  call box 0       ,0     ,winx/4  ,winy/2,black
  call box winx/4  ,0     ,winx/2  ,winy/2,red
  call box winx/2  ,0     ,winx*3/4,winy/2,green
  call box winx*3/4,0     ,winx    ,winy/2,yellow
  call box 0       ,winy/2,winx/4  ,winy  ,blue
  call box winx/4  ,winy/2,winx/2  ,winy  ,magenta
  call box winx/2  ,winy/2,winx*3/4,winy  ,cyan
  call box winx*3/4,winy/2,winx    ,winy  ,white
  #m "getbmp back 0 0 " ; winx ; " " ; winy
  #m "background back"
''draw boolean sprite
  call box 000 , 000 , 010 , 080 , black
  call box 010 , 000 , 020 , 080 , red
  call box 020 , 000 , 030 , 080 , green
  call box 030 , 000 , 040 , 080 , yellow
  call box 040 , 000 , 050 , 080 , blue
  call box 050 , 000 , 060 , 080 , magenta
  call box 060 , 000 , 070 , 080 , cyan
  call box 070 , 000 , 080 , 080 , white
  call box 000 , 080 , 080 , 090 , black
  call box 000 , 090 , 080 , 100 , red
  call box 000 , 100 , 080 , 110 , green
  call box 000 , 110 , 080 , 120 , yellow
  call box 000 , 120 , 080 , 130 , blue
  call box 000 , 130 , 080 , 140 , magenta
  call box 000 , 140 , 080 , 150 , cyan
  call box 000 , 150 , 080 , 160 , white
  #m "getbmp bmp 0 0 80 160"
  #m "addsprite spr bmp"
  #m "spritexy spr 80 80"
  timer 40 , [tmr]
wait
[tmr]
  #m "spritexy? spr x y"
  select case state
    case north
      #m "spritemovexy spr 0 -2"
      if y < 80 then state = east
    case west
      #m "spritemovexy spr -2 0"
      if x < 80 then state = north
    case south
      #m "spritemovexy spr 0 2"
      if y > winy - 160 then state = west
    case else ''east
      #m "spritemovexy spr 2 0"
      if x > winx - 160 then state = south
  end select
  #m "drawsprites"
wait

function rad( deg )
  rad = deg * pi / 180
end function
sub setcolor kl
    r = int( kl and 255 )
    g = int( kl / 256 ) and 255
    b = int( kl / 256 / 256 ) and 255
    #m "backcolor " ; r ;" "; g ;" "; b
    #m "color " ; r ; " " ; g ; " " ; b
end sub
function rainbow( deg )
  rainbow = rgb( sin( rad( deg ) ) * 127 + 128 _
               , sin( rad( deg - 120 ) ) * 127 + 128 _
               , sin( rad( deg + 120 ) ) * 127 + 128 )
end function
function rgb( r , g , b )
  rgb = ( r and 255 ) _
  + ( g and 255 ) * 256 _
  + ( b and 255 ) * 256 * 256
end function
function mix( kl1 , f , kl2 )
  r1 = int( kl1 and 255 )
  g1 = int( kl1 / 256 ) and 255
  b1 = int( kl1 / 256 / 256 ) and 255
  r2 = int( kl2 and 255 )
  g2 = int( kl2 / 256 ) and 255
  b2 = int( kl2 / 256 / 256 ) and 255
  dr = r2 - r1
  dg = g2 - g1
  db = b2 - b1
  dr = dr * f
  dg = dg * f
  db = db * f
  r = r1 + dr
  g = g1 + dg
  b = b1 + db
  mix = rgb( r and 255 , g and 255 , b and 255 )
end function
sub box x , y , w , h , kl
    #m "goto " ; x ; " " ; y
    call setcolor kl
    #m "down"
    #m "boxfilled " ; w ; " " ; h
    #m "up"
end sub
[quit]
  close #m
end
bluatigro
 
Berichten: 306
Geregistreerd: za sep 27, 2008 6:01 pm

Keer terug naar Tips en informatie

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast

cron