Forum Liberty Basic France

Projets open source » Sprite : Joli exemple d'utilisation La source est donnée sur la première ligne du code.
Le 12/01/2013 à 17h51

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Voici un joli exemple de création et d'utilisation des sprites.

Cliquez pour changer les rotations.

Code VB :
' http://justbasic.conforums.com/index.cgi?board=games&action=display&num=1335647630

nomainwin
pi = acs(-1)
 
open "test" for graphics_nsb_nf as #gr
#gr "trapclose [quit]"
#gr "home; posxy cx cy; down"
#gr "setfocus"
 
R=100
r=25
dim x(12,5), y(12,5)    'now 12 balls at 5 rings
dim ind(12)
dim da(4)
dim dda(4)
'make sprites
for i = 0 to 11
    #gr "place 30 30"
    #gr "backcolor black"
    #gr "circlefilled ";r
 
    #gr "place 1 61"
    #gr "boxfilled 61 121"
    #gr "backcolor ";rainbow$(i/12)
 
    #gr "place 30 90"
    #gr "circlefilled ";r
 
    bmp$="bm"+right$(using("###",i+100),2)
    #gr "getbmp ";bmp$;" 1 1 60 120"
    sprLine$=sprLine$+" "+bmp$
next
 
#gr "cls; fill darkcyan"  'pour changer la couleur du fond
#gr "getbmp bckgrd 0 0 315 340"
#gr "background bckgrd"
 
for ring = 4 to 0 step -1
    for i = 0 to 11
        spr$="sp";ring;right$(using("###",i+100),2)
        #gr "addsprite ";spr$;sprLine$
        bmp$="bm"+right$(using("###",i+100),2)
        #gr "spriteimage ";spr$;" ";bmp$
    next
next
#gr "when leftButtonDown [new]"
 
[new]
for ring = 4 to 0 step -1
    dda(ring)=(int(rnd(1)*5)-2)*2
next
 
for k = 1 to 1000
 
    for ring = 4 to 0 step -1
        da(ring)=da(ring)+dda(ring)
        for i = 0 to 11
            a=(i*360/12+da(ring)) /360 *2 *pi
            x(i,ring) = cx+ R*cos(a)
            y(i,ring) = cy+ R*sin(a)/4 -105 +ring*2*r   '0th ring is bottom one
        next
 
        'sort by y
        for i = 0 to 11: ind(i)=i: next
 
        for j = 11 to 1 step -1 'number of pairs
            for i = 0 to j-1
                if y(ind(i),ring)>y(ind(i+1),ring) then
                    tmp = ind(i)
                    ind(i)=ind(i+1)
                    ind(i+1)=tmp
                end if
            next
        next
        'then draw

        for i = 0 to 11
            x=x(ind(i),ring)
            y=y(ind(i),ring)
            spr$="sp";ring;right$(using("###",i+100),2)
            bmp$="bm"+right$(using("###",ind(i)+100),2)
            #gr "spriteimage ";spr$;" ";bmp$
            #gr "spritexy ";spr$;" ";int(x)-30;" ";int(y)-30
        next
    next
 
    timer 50, [nxt]
        wait
    [nxt]
    timer 0
    #gr "drawsprites"
next
 
wait
 
[quit]
    close #gr
    end
 
'---------------------------------------------
' 0..1 into red-green-blue-red continuous colors
function rainbow$(x)
    hi = int((x*6) mod 6)+ 5*(x<0)  'fixed to 0..5
    f = (x*6) mod 1 + (x<0)         'frac, 0..1
    q = (1-f)
    select case hi
    case 0 : r = 1 : g = f : b = 0
    case 1 : r = q : g = 1 : b = 0
    case 2 : r = 0 : g = 1 : b = f
    case 3 : r = 0 : g = q : b = 1
    case 4 : r = f : g = 0 : b = 1
    case 5 : r = 1 : g = 0 : b = q
    end select
    R = int(r*255)
    G = int(g*255)
    B = int(b*255)
    rainbow$= R;" ";G;" ";B
end function
 

____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 12/01/2013 à 19h04

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
On ne voit pas la partie arrière du deuxième anneau supérieur ! WTF ? ;)
____________________
Roro

   
Le 12/01/2013 à 20h00

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Clique, tu le verras ;)
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Projets open source » Sprite : Joli exemple d'utilisation La source est donnée sur la première ligne du code.  

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie