Forum Liberty Basic France

Discussion Générale » Quelques propos..... Sur: Les exemples
Le 19/03/2012 à 09h37

Administrateur

Groupe: Administrateur

Inscrit le: 24/09/2010
Messages: 203
Reprise du message précédent

Hello !

Quand tu rédiges un message, tu peux cliquer sur la disquette, puis cliqué sur l'icone du fichier que tu veux insérer dans le message.


++
Black Templar

Mail MSN Web    
Le 19/03/2012 à 10h12

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2145
Bonjour maitre, content de vous voir de retour au chateau.
Les sprites ne sont pas parvenu(e)s. Ce n'est pas grave, car ils sont déja obsoletes. En effet, aprés moult's essais dans différentes configurations, il ressort que ce genre de bestiole a des comportements qui ne sont pas conformes à ma vision du monde. :s
J'opte donc pour des images (bille sur carré noir), sur fond noir. Si ça fait trop de noir, il sera facile de changer: fond de bille et fond de map.
Mon cher Black, il me semble qu'un courrier est resté sans réponse. ;)
Bien malheureux qui n'a ni femme, ni enfants, ni parent ni amis à qui transmettre le cadeau qu'il estime ne pas lui revenir. Mais aprés tout, chacun vois midi à sa porte.
Je vais essayer (au rique de passer pour un débile complet) d'envoyer un 'compréssé' de la dizaine d'images que je compte utiser en complément des billes de Cassiope.
Je vais mettre le compresseur en route et je reviens...... :lu


____________________
Roro

   
Le 19/03/2012 à 10h33

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2145
Nous y voila,j'ai mis le fichier dans la fenetre de mon profil. Je clique sur la disquette. img a10.zip
Ooucht ! ...on dirait que ça marche.
____________________
Roro

   
Le 19/03/2012 à 12h37

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2145
Je sollicite la sagacité des savants sur le texte joint.
Constitué de deux morceaux, extaits de la générosité de Cassiope.
J'ai pris le premier morceau qui s'arrete à: #w "trapclose [quit] pour garder la main sur les dimensions générales.
Le deuxième, gère une image à partir d'un sprite, (j'ai mis en (') la ligne qui éfface le masque, mon image n'en a pas.)
J'ai remplacé, dans: "drawbmp boule 100 52". (10, qui était le haut du sprite, par 52, haut de l'image 10+42)
Cette partie fonctionnait avec un bouton, et sur clic souris. J'ai supprimé la partie 'bouton'.
Dans l'état actuel, l'image descent en laissant derriere elle une ligne blanche, J'ai tenté quelques modifs de variables(mises en (')) Augmenter le cache, différer son affichage. Je voudrais éviter l'empirisme.
Les images sont dans le zip du message précédant, le chargement est direct, fichier.bas et orange.bmp dans le mème dossier. (pour les visiteurs)
Si quelqu'un pouvait m'éclairer, il serait digne de ma gratitude éternelle...je ne dis pas :Amen! mais le coeur y est. :)

Code VB :
 
 
 
    nomainwin
    GLOBAL NbXmax, NbYmax, dc, MapWidth, MapHeight, NumBille, source$
    NbXmax = 10 'nombre de billes en horizontal
    NbYmax = 14 'nombre de billes en vertical
    dc = 43  'size of a cell in pixels
    MapWidth = NbXmax*dc
    MapHeight = NbYmax*dc
    WindowWidth = MapWidth+15
    WindowHeight = MapHeight+70
    UpperLeftX = (DisplayWidth-WindowWidth) / 3
    UpperLeftY = (DisplayHeight-WindowHeight) / 2
    graphicbox #w.map, 5, 5, MapWidth, MapHeight
    open "    TEST..." for window_nf as #w  'graphics_nf_nsb
    #w "trapclose [quit]"
 
    loadbmp "Boule","Orange.bmp"
 
    #w.map "down; fill black"
    #w.map "drawbmp Boule 100 52"            'affiche le bmp tel quel
    #w.map "getbmp Boule1 100 52 42 42"      '(mise en mémoire
    #w.map "backcolor black; color black"
  '  #w.map "place 100 10; boxfilled 142 52"  'efface masque
    #w.map "getbmp cache 100 10 42 42" '50"   'fabrique un carré noir
                                           '(en mémoire au dessus(10)
    #w.map "when leftButtonDown [fall]"   'réaction sur clic dans fenetre
wait
    [fall]
        for yb1 = 52 to MapHeight-42 'step 42
            #w.map "posxy oldX oldY"           'récupère la position actuelle du pointeur (dernier endroit où la boule était affichée)
            #w.map "drawbmp cache 100 ";oldY'+/-5   'efface cet endroit
            #w.map "drawbmp Boule1 100 ";yb1   'affiche la boule à la nouvelle position
            t=0 :while t<200 :t=t+1 :wend
        next yb1
        #w.map "discard; flush"
wait
    [quit]
        close #w
        end
    wait
 
 




Edité par Roland Le 19/03/2012 à 12h42
____________________
Roro

   
Le 19/03/2012 à 13h32

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Mais pourquoi ? C'est cool comme ça ! on dirait une araignée :lol :lol :lol
____________________
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 19/03/2012 à 20h32

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2145
Je suis en train de tester. J'ai beau scier de pattes à mon araignée, il reste une trés fine trace presque imperceptible et qui ne fait plus toute la longueur.
Ce qui est marrant, c'est que si je prend une de tes billes (la VertClair) et que je l'a mets dans un carré noir 42x42
Il se passe le meme phénomène, en pire (la zone claire supérieure est plus importante.)
ça y est, en réduisant la bille de 2 pixels, plus de trace, mais il me laisse un microscopique bout de vert à l'emplacement de départ en haut
Avec 4 pixels c'est bon. Je mets le zip avec mes boules et tes billes réduites de 4 Pixels
BilleBoule.zip en types "images" 42x42 J'espère qu'elles n'ont pas trop morflé. :d



Edité par Roland Le 20/03/2012 à 01h16
____________________
Roro

   
Le 20/03/2012 à 09h16

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2145
Nouveau jour, alors Bonjour,
Les images ayant été faites une par une, et un peu vite, il est possible qu'il y est un problème de centrage, qui va se manifester par un problème d'alignement. Je vérifie cela.
Tu ne m'empèchera pas de penser, qu'il n'est pas normal qu'un cache de 42x42, n'éfface pas entièrement une image de 42x42.
Je ne suis pas assez féru en la matière pour expliquer le phénomène, c'est pourquoi cela m'inquiète.
____________________
Roro

   
Le 20/03/2012 à 09h44

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:
Tu ne m'empèchera pas de penser, qu'il n'est pas normal qu'un cache de 42x42, n'éfface pas entièrement une image de 42x42.
Je ne suis pas assez féru en la matière pour expliquer le phénomène, c'est pourquoi cela m'inquiète.


Oui, moi aussi ça me chatouille le neurône un peu...
Soit c'est mon bout de programme, soit c'est peut-être une affaire de bornage : les dimensions indiquées à JB sont-elles pixels des bords inclus ou exclus...?!!
Je sais c'est un peu tordu comme explication mais bon...

Quand j'ai un moment je me penche sur ton jeu avec une image en fond : c'est faisable mais pas si simple !

Peut-être vaudrait-il mieux aller au plus simple : fond noir (ou en tout cas de la même couleurs que celui de tes billes (sympas d'ailleurs)) et tout faire grâce au contenu des cases (c'est à dire le contenu de la variable tableau) : il y a une boule dedans : on l'affiche, il y en a pas : on affiche un carré noir.
Tous les "mouvements" de billes se feront donc case par case c'est à dire avec un "pas" de 42 ou 43 pixels...
Bon, faut à peu près tout repenser et réécrire.



Edité par cassiope01 Le 20/03/2012 à 09h46
____________________
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 20/03/2012 à 11h28

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2145
Repenser ? comment tu le voyais ? moi je préfère les images parce que ça me parait plus "concret" à manipuler.
Mais pour toi qui jongle avec les sprites, c'est différent.
Réecrire ? Si tu a écris quelque chose, surtout ne le jette pas, envoie le.
J'essaie de mettre les billes et boules "trafiquées" en lignes et colonnes pour voir les défauts de centrage.
Je peux te dire que j'ai plusieurs fenetres ouvertes, et que mon écran n'est pas assez vaste.
____________________
Roro

   
Le 20/03/2012 à 11h34

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2145
Si tu pouvais ne pas mettre d'image en fond, cela m'arrangerait.
Je me suis déja arraché pas mal de cheveux sur tous les bouts que tu m'a passés, plus ce que je récupère du site anglais.
Je ne peux pas m'empecher de te livrer cette traduction de "google":
"Voici un exemple qui utilise des sous-marins en tant que gestionnaires d'événements:" ;)



Edité par Roland Le 20/03/2012 à 13h40
____________________
Roro

   
Le 20/03/2012 à 14h43

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2145
Ce que j'appelle "image de fond", c'est la photo de Mauguio, que tu a chargée avant de déclarer la 'graphicbox'.
J'en ai conclu que cette image était sur la 'main window', et que la 'graphicbox' était par dessus. Ais-je eu tord ?
c'est cette configuration qui est une belle trouvaille.
____________________
Roro

   
Le 20/03/2012 à 14h52

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:
Réecrire ? Si tu a écris quelque chose, surtout ne le jette pas, envoie le.


Bon. Tu l'auras voulu... ;) : voilà l'usine à gaz !

Code VB :
 
    nomainwin
 
    GLOBAL NbXmax, NbYmax, dc, MapWidth, MapHeight, NumBille, source$, ColSelected
 
    NbXmax = 10 'nombre de billes en horizontal
    NbYmax = 14 'nombre de billes en vertical
    dc = 43  'size of a cell in pixels
    MapWidth = NbXmax*dc
    MapHeight = NbYmax*dc
 
    dim cell(NbXmax+1,NbYmax+1)
 
    WindowWidth = MapWidth+15
    WindowHeight = MapHeight+70
    UpperLeftX = (DisplayWidth-WindowWidth) / 3
    UpperLeftY = (DisplayHeight-WindowHeight) / 2
 
    loadbmp "fond", "img\Fond_430x600.bmp"
 
    source$ = "Bleu Jaune Orange Rose Rouge Vert VertC Violet Noire"  'chaine des couleurs
    for b = 1 to 9
        loadbmp "Boule";b,"img\"+word$(source$,b)+".bmp"   'chargement des images des billes, les Sprites.
    next
 
    statictext #w.txt "",10,12,310,20
    'BUTTON #w.grid, "Grid", [grid], UL, WindowWidth-60, 5, 50, 25
    graphicbox #w.map, 5, 40, MapWidth+2, MapHeight
    open "    TEST Jeu..." for window_nf as #w  'graphics_nf_nsb
    #w "trapclose [quit]"
    #w.map "down; fill black"
    for b=1 to 8
        #w.map "addsprite ball";b;" Boule";b;" Boule9"
    next
    ColSelected = 1*-1
    call StoreMasks
 
    #w.map "when mouseMove [coord]"
    #w.map "when leftButtonDown [SelectBall]"
 
    gosub [rempli]
   ' grid=1
   ' goto [grid]

    wait
 
    [SelectBall]
        timer 0
        bX = int(MouseX/dc)
        bY = int(MouseY/dc)
        if ColSelected > -1 then
            cell = bY * NbXmax + bX
            #w.map "drawbmp effB";cell;" ";bX*dc;" ";bY*dc
            #w.map "cyclesprite ball";cell(ColSelected,1);" 0"
            #w.map "spriteimage ball";cell(ColSelected,1);" Boule";cell(ColSelected,1)
            #w.map "drawsprites"
        end if
        select case
        case bY < 2
            ColSelected = bX
            timer 300, [animate]
        case bY > 2
            timer 0
 
            ' déplacement de la boule depuis ColSelected/ligne 2 vers la colonne mX dernièrement cliquée.
            call MoveBall ColSelected, bX
 
            ColSelected = 1*-1
        end select
    wait
 
    [animate]
        #w.map "spritexy ball";cell(ColSelected,1);" ";bX*dc;" ";dc
        #w.map "cyclesprite ball";cell(ColSelected,1);" 1"
        #w.map "drawsprites"
    wait
 
    [DelBall]
        mX = int(MouseX/dc)
        mY = int(MouseY/dc)
        cell = mY * NbXmax + mX
        #w.map "drawbmp effB";cell;" ";mX*dc;" ";mY*dc
        cell(mX,mY) = 0
        #w.map "discard; flush"
    wait
 
    [coord]
        mX = int(MouseX/dc)
        mY = int(MouseY/dc)
        gosub [infos]
    wait
 
    [grid]
        grid = grid+1-2*(grid=1) '0 -> 1 -> 0 -> 1 -> 0 etc...
        gosub [DispMap]
    wait
 
    [rempli]
        for y=0 to 2
            for x=0 to NbXmax
                if y<>2 then
                    mX = x*dc
                    mY = y*dc
                    call DispBall "#w.map", mX, mY
                end if
            next
        next
    return
 
    [infos]
        if mX<=NbXmax and mY<=NbYmax then
            #w.txt "pixels : ";MouseX;" / ";MouseY;_
            space$(9);"Cell ( ";mX;" , ";mY;" ) = ";cell(mX,mY);_
            space$(15);"Couleur : ";word$(source$,cell(mX,mY))
        end if
    return
 
    [DispMap]
        gosub [infos]
        if grid then
            #w.map "backcolor lightgray; color lightgray"
        else
            #w.map "backcolor black; color black"
        end if
        for y=1 to NbYmax
            #w.map "place 0 ";y*dc;"; goto ";MapWidth;" ";y*dc
        next
        for x=1 to NbXmax
            #w.map "place ";x*dc;" 0; goto ";x*dc;" ";MapHeight
        next
        #w.map "backcolor lightgray; color lightgray"
        #w.map "flush; discard"
    return
 
    sub MoveBall Dx, Ax
        #w.map "when mouseMove"
        #w.map "spritexy ball";cell(Dx,1);" ";Dx*dc;" -100"
        #w.map "drawsprites"
        cell = NbXmax + Dx
        #w.map "drawbmp effB";cell;" ";Dx*dc;" ";dc
        #w.map "getbmp bckgrd 0 0 ";MapWidth;" ";MapHeight
        #w.map "background bckgrd"
        #w.map "spritexy ball";cell(Dx,1);" ";Dx*dc;" ";2*dc
        #w.map "drawsprites"
        st = Ax - Dx
        if abs(st)>0 then
            if st > 0 then st = 1 else st = 1*-1
            for x=Dx to Ax step st
                #w.map "spritexy ball";cell(Dx,1);" ";x*dc;" ";2*dc
                #w.map "drawsprites"
                call pause 50
            next
        end if
        for y=3 to NbYmax-1
            if cell(Ax,y) = 0 then
                #w.map "spritexy ball";cell(Dx,1);" ";Ax*dc;" ";y*dc
                #w.map "drawsprites"
                call pause 50
            end if
        next
        cell(Ax,y-1) = Dx     '<- soucis...
        #w.map "when mouseMove [coord]"
    end sub
 
    sub StoreMasks
        #w.map "drawbmp fond 0 0"
        for y=0 to NbYmax
            for x=0 to NbXmax
                nMask = y * NbXmax + x
                #w.map "getbmp effB";nMask;" ";x*dc;" ";y*dc;" ";dc;" ";dc
            next
        next
        #w.map "discard; flush"
    end sub
 
    sub DispBall handle$, px, py
        #w.map "color lightgray"
        for x=0 to NbXmax
            #w.map "place ";(x+1)*dc;" ";MapHeight-50
            #w.map "goto ";(x+1)*dc;" ";MapHeight
        next
        mX = int(px/dc)
        mY = int(py/dc)
        NumBille = int(rnd(0)*8)+1
        cell(mX,mY) = NumBille
        #w.map "getbmp bckgrd 0 0 ";MapWidth;" ";MapHeight
        #w.map "background bckgrd"
        #w.map "spritexy ball";NumBille;" ";mX*dc+1;" ";mY*dc
        #w.map "drawsprites"
        #w.map "discard; flush"
    end sub
 
    sub pause temp   'pause en millisecondes
        timer temp, [temps]
        wait
        [temps]
        timer 0
    end sub
 
    [quit]
        close #w
        end
    wait


Roland:
Ce que j'appelle "image de fond", c'est la photo de Mauguio, que tu a chargée avant de déclarer la 'graphicbox'.
J'en ai conclu que cette image était sur la 'main window', et que la 'graphicbox' était par dessus. Ais-je eu tord ?

Oui, c'est bien de Mauguio qu'il s'agit.
D'ailleurs j'ai renomé le fichier "Fond_430x600.bmp" .

Le chargement d'un fichier image avant de l'utiliser est obligatoire.

Oui, tu te trompes.
Tout ce qui s'affiche, l'image de fond et toutes les billes, est dans la 'graphicbox' et non directement dans la 'main window'.
Ceci dit, la 'graphicbox' étant elle-même dans la 'main window' ... ;)



Edité par cassiope01 Le 20/03/2012 à 15h08
____________________
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 20/03/2012 à 16h05

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2145
Je savais bien que la chronologie des lignes de mise en place (chargement ext...) ne m'étaient pas évidentes.
Mais donc, pourqoui avoir chargé 'Mauguio' avant de déclarer la map ? Les billes sont chargées aprés non ?
ça je le dis mais je n'ai pas vérifié.
Excuse moi de te laisser, je suis trop préssé de voir "l'usine".
____________________
Roro

   
Le 20/03/2012 à 16h27

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2145
Bon, j'ai juste regardé l'effet produit, je regarderai le code cette nuit.
Tu m'oblige à m'interresser à ces satanés sprites. qui me compliquent la vie
Je me tord les méninges sur "billes sur fond". Les "billes" tout court j'en parle plus. c'est pas l'usine à gaz, c'est la centrale atomique.
Je vais voir le code de suite. J'en ai pour un moment. :lu
____________________
Roro

   
Le 20/03/2012 à 16h46

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:
Mais donc, pourqoui avoir chargé 'Mauguio' avant de déclarer la map ? Les billes sont chargées aprés non ?


Qu'est-ce que tu ne comprends pas quand je dis dans mon message précédent :

cassiope01:
Le chargement d'un fichier image avant de l'utiliser est obligatoire.


Je ne sais pas trop comment mieux expliquer... :heink
____________________
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 20/03/2012 à 16h56

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2145
C'est donc que mauguio est dans la map, et que tu a mis le tableau (noir) par dessus.
En fait la map c'est l'ensemble de ce que l'on voit. Alors qu'on a l'impression qu'il y a plusieurs plans.
C'est fort (visuellement).
____________________
Roro

   
Le 20/03/2012 à 17h06

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2145
Je n'ai pas manqué la ligne de la 'fonction' "soucis".
Je suis bien convaincu que la gestion d'images seraient plus simple, plus légère, et surtout: Plus " Saine ".
Peut etre moins élégante. Dis voir: Sprite, ça voudrait pas dire: Lutin ?
Je renifle le coup tordu avec ces bestioles. J'ai fait des tas d'essais. Je suis allé d'étonnement, en stupéfaction.
Ces sprites sont une façon de manipuler des images découpées. Certe la technique est drolement astucieuse. Mais je suis à peu prés certain qu'il y a une entourloupe quelque part.
Par exemple: Comment tu explique, que quand la boule clignote, la petite tache blanche qui fait la brillance, reste visible ? ! ????????????? :hum



Edité par Roland Le 20/03/2012 à 17h44
____________________
Roro

   
Le 20/03/2012 à 17h41

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2145
Moi, vois-tu, j'ai bossé sur du matériel du genre: "qui sème la mort", et 42x42, fallait pas que ça soit 41.9x41.9. J'ai assisté aux dégats causés par une petite entourloupe.
L' " araignée"... avec ces conséquences.....Est un petit 'coucou' que nous a fait le lutin.




Edité par Roland Le 20/03/2012 à 17h49
____________________
Roro

   
Le 20/03/2012 à 17h50

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:
Par exemple: Comment tu explique, que quand la boule clignote, la petite tache blanche qui fait la brillance, reste visible ? ! ????????????? :hum


Parce que dès le départ, j'ai fabriqué une boule Noire qui a cette tache, et que j'affiche en alternance avec la boule désignée.

Ne te prends pas la tête avec, mais je te livre la version où il n'y a plus le 'soucis' ;)

Code VB :
 
    nomainwin
 
    GLOBAL NbXmax, NbYmax, dc, MapWidth, MapHeight, NumBille, source$, ColSelected
 
    NbXmax = 10 'nombre de billes en horizontal
    NbYmax = 14 'nombre de billes en vertical
    dc = 43  'size of a cell in pixels
    MapWidth = NbXmax*dc
    MapHeight = NbYmax*dc
 
    dim cell(NbXmax+1,NbYmax+1)
 
    WindowWidth = MapWidth+15
    WindowHeight = MapHeight+70
    UpperLeftX = (DisplayWidth-WindowWidth) / 3
    UpperLeftY = (DisplayHeight-WindowHeight) / 2
 
    loadbmp "fond", "img\Fond_430x600.bmp"
 
    source$ = "Bleu Jaune Orange Rose Rouge Vert VertC Violet Noire"  'chaine des couleurs
    for b = 1 to 9
        loadbmp "Boule";b,"img\"+word$(source$,b)+".bmp"   'chargement des images des billes, les Sprites.
    next
 
    statictext #w.txt "",10,12,310,20
    'BUTTON #w.grid, "Grid", [grid], UL, WindowWidth-60, 5, 50, 25
    graphicbox #w.map, 5, 40, MapWidth+2, MapHeight
    open "    TEST Jeu..." for window_nf as #w  'graphics_nf_nsb
    #w "trapclose [quit]"
    #w.map "down; fill black"
    for b=1 to 8
        #w.map "addsprite ball";b;" Boule";b;" Boule9"
    next
    ColSelected = 1*-1
    call StoreMasks
 
    #w.map "when mouseMove [coord]"
    #w.map "when leftButtonDown [SelectBall]"
 
    gosub [rempli]
   ' grid=1
   ' goto [grid]

    wait
 
    [SelectBall]
        timer 0
        bX = int(MouseX/dc)
        bY = int(MouseY/dc)
        if ColSelected > -1 then
            if cell(ColSelected,1) > 0 then
                cell = bY * NbXmax + bX
                #w.map "drawbmp effB";cell;" ";bX*dc;" ";bY*dc
                #w.map "cyclesprite ball";cell(ColSelected,1);" 0"
                #w.map "spriteimage ball";cell(ColSelected,1);" Boule";cell(ColSelected,1)
                #w.map "drawsprites"
            end if
        end if
        select case
        case bY < 2
            ColSelected = bX
            if cell(ColSelected,1) then
                timer 300, [animate]
            end if
        case bY > 2
            timer 0
 
            ' déplacement de la boule depuis ColSelected/ligne 2 vers la colonne mX dernièrement cliquée.
            call MoveBall ColSelected, bX
 
            ColSelected = 1*-1
        end select
    wait
 
    [animate]
        #w.map "spritexy ball";cell(ColSelected,1);" ";bX*dc;" ";dc
        #w.map "cyclesprite ball";cell(ColSelected,1);" 1"
        #w.map "drawsprites"
    wait
 
    [DelBall]
        mX = int(MouseX/dc)
        mY = int(MouseY/dc)
        cell = mY * NbXmax + mX
        #w.map "drawbmp effB";cell;" ";mX*dc;" ";mY*dc
        cell(mX,mY) = 0
        #w.map "discard; flush"
    wait
 
    [coord]
        mX = int(MouseX/dc)
        mY = int(MouseY/dc)
        gosub [infos]
    wait
 
    [grid]
        grid = grid+1-2*(grid=1) '0 -> 1 -> 0 -> 1 -> 0 etc...
        gosub [DispMap]
    wait
 
    [rempli]
        for y=0 to 2
            for x=0 to NbXmax
                if y<>2 then
                    mX = x*dc
                    mY = y*dc
                    call DispBall "#w.map", mX, mY
                end if
            next
        next
    return
 
    [infos]
        if mX<=NbXmax and mY<=NbYmax then
            #w.txt "pixels : ";MouseX;" / ";MouseY;_
            space$(9);"Cell ( ";mX;" , ";mY;" ) = ";cell(mX,mY);_
            space$(15);"Couleur : ";word$(source$,cell(mX,mY))
        end if
    return
 
    [DispMap]
        gosub [infos]
        if grid then
            #w.map "backcolor lightgray; color lightgray"
        else
            #w.map "backcolor black; color black"
        end if
        for y=1 to NbYmax
            #w.map "place 0 ";y*dc;"; goto ";MapWidth;" ";y*dc
        next
        for x=1 to NbXmax
            #w.map "place ";x*dc;" 0; goto ";x*dc;" ";MapHeight
        next
        #w.map "backcolor lightgray; color lightgray"
        #w.map "flush; discard"
    return
 
    sub MoveBall Dx, Ax   'Colonne Départ,  Colonne Arrivée
        if Dx < 0 then exit sub
        if cell(Dx,1) = 0 then exit sub
        #w.map "when mouseMove"
        #w.map "spritexy ball";cell(Dx,1);" ";Dx*dc;" -100"
        #w.map "drawsprites"
        cell = NbXmax + Dx
        #w.map "drawbmp effB";cell;" ";Dx*dc;" ";dc
        #w.map "getbmp bckgrd 0 0 ";MapWidth;" ";MapHeight
        #w.map "background bckgrd"
        #w.map "spritexy ball";cell(Dx,1);" ";Dx*dc;" ";2*dc
        #w.map "drawsprites"
        st = Ax - Dx
        if abs(st)>0 then
            if st > 0 then st = 1 else st = 1*-1
            for x=Dx to Ax step st
                #w.map "spritexy ball";cell(Dx,1);" ";x*dc;" ";2*dc
                #w.map "drawsprites"
                call pause 50
            next
        end if
        for y=3 to NbYmax-1
            if cell(Ax,y) = 0 then
                #w.map "spritexy ball";cell(Dx,1);" ";Ax*dc;" ";y*dc
                #w.map "drawsprites"
                call pause 50
                Ystop = y
            end if
        next
        cell(Ax,Ystop) = cell(Dx,1)      '<- soucis...
        cell(Dx,1)=0
        #w.map "getbmp bckgrd 0 0 ";MapWidth;" ";MapHeight
        #w.map "background bckgrd"
        #w.map "when mouseMove [coord]"
    end sub
 
    sub StoreMasks
        #w.map "drawbmp fond 0 0"
        for y=0 to NbYmax
            for x=0 to NbXmax
                nMask = y * NbXmax + x
                #w.map "getbmp effB";nMask;" ";x*dc;" ";y*dc;" ";dc;" ";dc
            next
        next
        #w.map "discard; flush"
    end sub
 
    sub DispBall handle$, px, py
        #w.map "color lightgray"
        for x=0 to NbXmax
            #w.map "place ";(x+1)*dc;" ";MapHeight-50
            #w.map "goto ";(x+1)*dc;" ";MapHeight
        next
        mX = int(px/dc)
        mY = int(py/dc)
        NumBille = int(rnd(0)*8)+1
        cell(mX,mY) = NumBille
        #w.map "getbmp bckgrd 0 0 ";MapWidth;" ";MapHeight
        #w.map "background bckgrd"
        #w.map "spritexy ball";NumBille;" ";mX*dc+1;" ";mY*dc
        #w.map "drawsprites"
        #w.map "discard; flush"
    end sub
 
    sub pause temp   'pause en millisecondes
        timer temp, [temps]
        wait
        [temps]
        timer 0
    end sub
 
    [quit]
        close #w
        end
    wait


Roland:
Je suis bien convaincu que la gestion d'images seraient plus simple, plus légère, Plus "saine".

Je t'avais prévenu... ceci dit, tu vois des tas d'entourloupes partout : tu ne serais pas un peu parano toi ? :siffle

Par contre : plus question d'image en fond !!!

Quand je t'écris ça : Le 20/03/12 à 09h44

cassiope01:
Peut-être vaudrait-il mieux aller au plus simple : fond noir (ou en tout cas de la même couleurs que celui de tes billes (sympas d'ailleurs)) et tout faire grâce au contenu des cases (c'est à dire le contenu de la variable tableau) : il y a une boule dedans : on l'affiche, il y en a pas : on affiche un carré noir.
Tous les "mouvements" de billes se feront donc case par case c'est à dire avec un "pas" de 42 ou 43 pixels...
Bon, faut à peu près tout repenser et réécrire.


je ne l'ai pas bien expliqué, mais je parlais bien d'utiliser seulement les images simples.



@+



Edité par cassiope01 Le 20/03/2012 à 18h11
____________________
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 20/03/2012 à 18h47

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:
L' " araignée"... avec ces conséquences.....Est un petit 'coucou' que nous a fait le lutin.


Pas du tout puisque dans ton code avec l'araignée, il n'y a aucun sprite. Tu n'as travaillé qu'avec une simple image.
____________________
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 20/03/2012 à 19h20

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2145
Oui, mais il fallut raboter 4 pixels.
Tu a bien vite fais de régler le soucis. Tu ne serais pas Mathematicien, par hazard ?
A te voir faire, sprites ou images ça n'a pas l'air de te poser problème, et l'image en fond pas d'avantage.
et d'ailleurs, je me demande bien ce qui pourrait te poser probleme.
Mais ne pense tu pas que la gestion d'images est plus orthodoxe, plus concrete, sera plus facile pour moi.
Toi, tu voltige, mais moi je veux bien avancer un peu dans mon coin.
J'aurais une question (idiote sans doute): D'aprés toi, et en gros; le ' handle$' de ' sub Dispball' fait l'économie de quel volume.en variables, et en lignes.
Il y aurait aussi la: "Colselected=1*-1" ?



Edité par Roland Le 20/03/2012 à 20h30
____________________
Roro

   
Discussion Générale » Quelques propos..... Sur: Les exemples  

 |  |

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