Forum Liberty Basic France

Jeux » Chutes Ancien jeu Remanié 2012
Le 15/07/2012 à 22h08

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2190
Reprise du message précédent

Hey ! Hola ! Du Donjon ! ..Qui c'est qui joue avec mon avatar ??? ...Et qui l'a mis en " EXPERT ".. :heink
Expert en Bug , plantages et formatage d'urgence tu veux dire ! :D



Edité par Roland Le 15/07/2012 à 22h10
____________________
Roro

   
Le 16/07/2012 à 07h52

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
T'es juste étoilé à cause du nombre de messages, pas de leur contenu :top :lol

Pour en revenir aux fall horizontal comme tu dis, il risque bien d'y avoir pas mal de blocages si on fait ça !
Cas de "2110111011101112" par exemple: ligne bloquée, les boutons devront être "!disable".

A voir si c'est jouable !?

@+
____________________
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 16/07/2012 à 11h22

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2190
Je me doutait que ça n'allait pas etre facile, c'est pour ça que je retardais l'annonce. ;)
Je me doute que ce n'est pas la bonne méthode, mais voila ce que je fais:
Aprés avoir fait un niveau spécial pour avoir une configuration favorable aux essais,
j'ai fait un tableau :bi( ), dans lequel je stocke l'état des choses avant le déplacement,
assez vite j'ai eu besoin de l'état de la case précédente, j'ai donc fait un tableau: prebi, sur le principe du: for x=ncx to 2 step-1.
J'étais arrivé à ce que les barres poussent sans tirer, mais quand la bille est enfermée, elle disparait lors du déplacement, n'ayant pas un pouvoir d'abstraction surnaturel. ;) J'essaie de comprendre pourquoi je ne comprend pas.
Mais comme le disait Coluche, c'est avec son propre cerveau qu'on juge de sa capacité...
Je ne suis pas tiré d'affaire.
Quand au con de robot qui me mets des étoiles, y'a du soucis à se faire pour si un jour ils prennent le pouvoir. (.....si ce n'est déjà fait :s )......à+
____________________
Roro

   
Le 16/07/2012 à 11h56

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2190
Avec le cerveau neuf du matin, je vois mon (mes) erreurs, pas besoin de tableaux, juste une lecture à x-2, avec un bon petit test avant et report si dépassement.
Je suis vraiment curieux de voir par quel bout tu attrape la chose....
____________________
Roro

   
Le 16/07/2012 à 15h52

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2190
Par ici, on bute sur: 11102211 et: 11122111 qui impose la lecture de x-3, et si on pousse le bouchon, la connaissance de la totalité de la ligne.
Je crois que le problème n'est pas solvable sans l'emploi de l'artillerie lourde.
____________________
Roro

   
Le 16/07/2012 à 15h56

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Booof ! c'est pas simple en effet, mais y a toujours moyen de moyéner avec le minimum ;)
____________________
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 16/07/2012 à 16h56

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2190
Je ne jette pas l'éponge, elle sert maintenant à ramasser au sol mes neurones éparpillés. :\'(
Ne t'avance pas trop, je crois qu'on a mis le doigt sur un truc hyper difficile.
Je pense qu'on ne peut pas y arriver par une lecture séquentielle. Il doit falloir analyser la ligne complète pour avoir les distances d'espace libre, et travailler avec.
En tous cas, je suis sur que de mon coté, je n'ai pas la bonne méthode, car elle m'entraine vers: un cas=un test. :s



Edité par Roland Le 17/07/2012 à 02h20
____________________
Roro

   
Le 17/07/2012 à 10h08

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Le pb est légèrement ardu j'en conviens ;)
Au point même que je le soumettrait bien à nos amis anglophones :lu

Je pense explorer aussi une autre piste : déplacer le cases par lots avec getbmp et drawbmp...
A suivre...

De plus, en y réfléchissant bien, le jeu peut très bien être perdu par blocage... mais ça pimente le jeu :top
ex: avant dernière ligne = "2111011011110012" et pas de trou en dessous accessible par un déplacement en 1 coup de la ligne de stockage (la dernière en bas), et pas d'autre ligne déplaçable au dessus...

@+



Edité par cassiope01 Le 17/07/2012 à 10h10
____________________
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 17/07/2012 à 11h42

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2190
L'impossibilité de terminer, pour cause de pas avoir intuité les derniers coups, c'est déjà le cas, je m'y suis confronté.
Et j'ai fait une drole de tete, quand sans y penser, j'ai fait une ligne sans trous pour le niveau spécial-essais.
Je crois tenir une piste:
-Stockage de la ligne avant déplacement + stockage valeur/numéro d'ordre.
-Déplacement complet
- re-Scrutation en avançant ( de gauche à droite pour déplacement vers la droite)
-Si case vide>on avance. Si case pleine>on pousse
-Si case vide puis bille>on recule
-Si bille puis bille>Comparaison: bille a bougé<>bille n'a pas bougé>Si bille a bougé>on pousse
Méééhh...je bute sur la fin du trou .
Demander aux anglais, YES! Mais pour énnoncer le problème :s ou alors, il faut leur envoyer le bébé avec la courbe de poids et la tétine
PS: je ne sais pas si il y a eu du shimy.dans les versions , mais le clic sur la croix de fermeture pendant la fractale déclenche une erreur ( chez moi) ...j'ai la dernière " sans trous".



Edité par Roland Le 17/07/2012 à 11h46
____________________
Roro

   
Le 17/07/2012 à 12h39

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:
Et j'ai fait une drole de tete, quand sans y penser, j'ai fait une ligne sans trous pour le niveau spécial-essais.

Ben dans ce cas 1 seule solution : pouvoir faire tomber une des billes en dessous...


Roland:
Je crois tenir une piste:
-Stockage de la ligne avant déplacement + stockage valeur/numéro d'ordre.
-Déplacement complet
- re-Scrutation en avançant ( de gauche à droite pour déplacement vers la droite)
-Si case vide>on avance. Si case pleine>on pousse
-Si case vide puis bille>on recule
-Si bille puis bille>Comparaison: bille a bougé<>bille n'a pas bougé>Si bille a bougé>on pousse
Méééhh...je bute sur la fin du trou .

Trop complexe à mes yeux, mais n'hésite pas, tu vas progresser avec ce genre de défi ;)

Roland:
Demander aux anglais, YES! Mais pour énnoncer le problème :s ou alors, il faut leur envoyer le bébé avec la courbe de poids et la tétine

C'est déjà fait...


Roland:
PS: je ne sais pas si il y a eu du shimy.dans les versions , mais le clic sur la croix de fermeture pendant la fractale déclenche une erreur ( chez moi) ...j'ai la dernière " sans trous".

Tu n'as pas la dernière.
Tu peux prendre celle que j'ai envoyée aux anglophones.

@+



Edité par cassiope01 Le 17/07/2012 à 12h39
____________________
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 17/07/2012 à 14h22

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2190
Ok, c'est bon. Mais comment ça "not so fun" Il est limite "Addictif" ce jeu, comme il est.
Dommage qu'il n'y ai pas plus de testeurs...Ils te le diraient.........ou pas. ;)
____________________
Roro

   
Le 18/07/2012 à 11h12

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2190
Nouvelle approche: 2 nouveaux tableaux en remplacement des anciens: prebi( ), prepla( ), pla ( )..( virés par la Dir.Gest.Tabl. ) ...à la place:
Un: depm(x,row), qui stocke 1 si case mur a été déplacée
Un: depb(x,row), qui stocke 1 si case bille a été déplacée
l'écriture se fait juste aprés: cell(x,row)=cell(x-1,row)
Les deux tableaux sont vidés avant la boucle
Et en sortie de boucle, re-scrutation et ré-arrangement en fonction des tests et des déplacements.
Qu'en pense-tu ?



Edité par Roland Le 18/07/2012 à 11h20
____________________
Roro

   
Le 18/07/2012 à 12h00

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
J'ai une approche toujours la plus simple possible.
1) si c'est autorisé, je décale TOUTES les valeurs de la ligne, pas d'affichage pour le moment.
2) je repasse en revue toute la ligne pour remettre seulement les billes qui se retrouvent avec un espace devant (ou derrière suivant le sens) à leur place initiale.
3) j'affiche le contenu de la ligne.

A suivre.



Edité par cassiope01 Le 18/07/2012 à 12h00
____________________
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 18/07/2012 à 12h28

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2190
Ici, le pb, c'est que je tombe invariablement sur un truc du genre: A=non A, et je n'arrive pas à déterminer si c'est moi qui me plante, ou si il y a réellement un os.
Je doute que cette modif rende le jeu plus attrayant, juste moins facile, pour le RND.
D'où tu sort ce mur noir ?!?...Tu veux nous mettre les chocottes... ;)
____________________
Roro

   
Le 18/07/2012 à 12h43

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:
D'où tu sort ce mur noir ?!?...Tu veux nous mettre les chocottes... ;)


???????? :heink :heink :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 18/07/2012 à 14h15

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2190
J'ai chargé la "Chutes_GG chez l'oncle Sam, et au lancement j'ai eu le mur 5, noir, légèrement gauffré de gris.
A-tu éssayé une partie avec billes et mur de meme nature.?...C'est assez délirant.
____________________
Roro

   
Le 18/07/2012 à 21h00

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2190
Il l'a fait !... tsh73 l'a fait !.... et ça marche !...et quand on voit comment c'est fait, on ne peut dire, que: Chapeau L'artiste ! ... Sont vraiment forts ces anglophonistes.
Du coup je fais un nouveau zip avec des murs et des billes en plus (à choisir dans le dossier), et une petite option supplémentaire ( en haut à droite).

Chutes_GGH.zip



Edité par Roland Le 18/07/2012 à 22h12
____________________
Roro

   
Le 19/07/2012 à 07h33

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
C'est lui qui est le plus près du résultat espéré, et c'est très simple comme d'hab avec tsh73 (il est russe : toujours simple et efficace ;) ), mais il y a quand même un petit bug dans sa sub.

Un effet secondaire : la ligne du bas ne peut plus bouger. Le jeu peut se bloquer encore plus facilement à cause aussi des règles de disable des boutons...

@+
____________________
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/07/2012 à 09h52

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2190
Oui , j'ai remarqué ça...Mais on peut toujours tricher en réactivant le dernier bouton pressé.Dis, pour régler le pb de la croix de fermeture, je ne vois qu'un "scan" ajouté dans la sub "Fractale", c'est ça ?
Et... a-tu déjà employé le: " exit sub " ?

En tous cas, voilà une bien jolie petite affaire. Le jeu ne casse pas des briques, mais le code est une mine par le nombre des thèmes abordés, et par sa clarté....Bravo Cassiope01, et Bravo tsh73.....



Edité par Roland Le 19/07/2012 à 10h43
____________________
Roro

   
Le 20/07/2012 à 09h52

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Je pense avoir réussi...
J'ai fait une exception pour la ligne du bas. Dis moi si ça te convient ?

@+

Code VB :
 
   'http://libertybasic.fr/forum/topic-162-1+code-en-cours-de-defrichage.php
   'http://libertybasic.fr/forum/topic-163+chutes.php
   'with coolFractal.bas contributed by Rod extract of JB exemples
   ' with help of tsh73 and NJames : http://justbasic.conforums.com/index.cgi?board=games&action=display&num=1342514807

    nomainwin
 
    GLOBAL ncx, ncy, dc, mm, bb, midx, midy
    global ro, di, oldro, oldi, coup, tscore
 
    ncx = 16   ' nbr of cells X
    ncy = 9    ' nbr of cells Y
    dc = 42    ' size of a cell in pixels
    MapWidth = (ncx+2)*dc+int(dc/ncx)
    MapHeight = 378  ' (ncy)*dc+int(dc/ncy)  '378

    midx=int(MapWidth/2)-80
    midy=int(MapHeight/2)
 
    WindowWidth  = MapWidth + 65
    WindowHeight = MapHeight + 75  ' 498  ' 75
    UpperLeftX = (DisplayWidth-WindowWidth) / 3
    UpperLeftY = (DisplayHeight-WindowHeight) / 2
 
   ' mois$ = "January February March April May June July August September October November December"
    mois$ = "Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre"   ' french
    today$ = date$("mm/dd/yyyy")
    j = date$(today$)
   ' jsem$ = word$("Tuesday Wednesday Thursday x Friday Saturday x Sunday Monday",int((j/7-int(j/7))*10)+1)
    jsem$ = word$("Mardi Mercredi Jeudi x Vendredi Samedi x Dimanche Lundi",int((j/7-int(j/7))*10)+1)   ' french
    date$ = jsem$+" "+mid$(today$,4,2)+" "+word$(mois$, val(today$))+" "+right$(today$,4)+"  "+left$(time$(),5)
 
    DIM cell(ncx,ncy): DIM quoi(ncx+1,ncy)
 
    button #w.bi "Bille", [bi], UL, 40, 5, 60, 25
    button #w.mu "Mur", [mu], UL, 120, 5, 60, 25
    statictext #w.txt "",460,10,200,30
    button #w.ni "Niveau: 1", [niv], UL, 310, 5, 80, 25
    statictext #w.tt "Triche", 40+17*dc, 40+(8*dc)+7,50,20
    graphicbox #w.map, 5+dc, 40, MapWidth-2*dc, MapHeight
    button #w.bt11 "", boutons, UL, 775, 44+(1*dc), dc, dc-10  '  à droite
    button #w.bt21 "", boutons, UL, 775, 44+(2*dc)+1, dc, dc-10
    button #w.bt31 "", boutons, UL, 775, 44+(3*dc)+2, dc, dc-10
    button #w.bt41 "", boutons, UL, 775, 44+(4*dc)+3, dc, dc-10
    button #w.bt51 "", boutons, UL, 775, 43+(5*dc)+4, dc, dc-10
    button #w.bt61 "", boutons, UL, 775, 43+(6*dc)+5, dc, dc-10
    button #w.bt71 "", boutons, UL, 775, 41+(7*dc)+6, dc, dc-10
    button #w.bt81 "", boutons, UL, 775, 54+(8*dc)+7, dc, 20 ' 775, 46+(8*dc)+7, dc, dc-10

    button #w.bt12 "", boutons, UL, 9+17*dc, 44+(1*dc), dc, dc-10  '  à gauche
    button #w.bt22 "", boutons, UL, 9+17*dc, 44+(2*dc)+1, dc, dc-10
    button #w.bt32 "", boutons, UL, 9+17*dc, 44+(3*dc)+2, dc, dc-10
    button #w.bt42 "", boutons, UL, 9+17*dc, 44+(4*dc)+3, dc, dc-10
    button #w.bt52 "", boutons, UL, 9+17*dc, 43+(5*dc)+4, dc, dc-10
    button #w.bt62 "", boutons, UL, 9+17*dc, 43+(6*dc)+5, dc, dc-10
    button #w.bt72 "", boutons, UL, 9+17*dc, 41+(7*dc)+6, dc, dc-10
    button #w.bt82 "", boutons, UL, 9+17*dc, 54+(8*dc)+7, dc, 20 ' 9+17*dc, 46+(8*dc)+7, dc, dc-10
    button #w.new "New",[new],UL,MapWidth-20,6,60,27
    OPEN "    TEST Chute(s)... "+space$(15)+date$ for window_nf as #w  'graphics_nf_nsb
    #w "trapclose quit"
    #w.map "setfocus"
    #w.map "down; backcolor black; fill black"
    #w.map "getbmp p0 0 0 ";dc;" ";dc  ' empty cell for deleting
    #w.new "!font Arial 12 bold"
    #w.txt "!font Arial 11 bold"
    for bt = 1 to 16
        btn$ = "#w.bt"+word$("11 21 31 41 51 61 71 81 12 22 32 42 52 62 72 82",bt)
        #btn$ "!font Arial 16 bold"
        if bt<9 then #btn$ ">" else #btn$ "<"
    next
 
    for im = 1 to 5         '  chargement en mémoire des fichiers BMP qui pourront ensuite être utilisés.
        loadbmp "mur";im, "Mur";im;".bmp"
        loadbmp "bille";im, "Bille";im;".bmp"
    next
 
    bb=4: mm=5: niv=2
 
    [niv]
      niv=niv+1
      if niv=4 then niv=1
      #w.ni, "Niveau: ";word$("1 2 RND",niv)
 
    [new]
    call AllButtonsActivate 1  ' active tous les bouttons
    coup=0
    print #w.txt, coup;" coup(s)"
    print #w.bi, "Bille: ";bb
    print #w.mu, "Mur: ";mm
 
    if niv=1 then RESTORE [niveau1]
    if niv=2 then RESTORE [niveau2]
    for y=1 to ncy      ' mise en place du niveau courrant ( cell(x,y) -> 0 = trou, 1 = mur, 2 = bille )
        [trou]
        cm = 0
        for x=1 to ncx
          if niv<3 then
            read val  ' read ne peut pas affecter directement une var. tableau.
          else
            val = int(rnd(0)*2)  ' 1 sur 3 peut être un trou (=0)
            if val>1 then val=1
            if y=1 then val = 2 else if y=ncy then val = 0
          end if
          cell(x,y) = val
          if val = 0 then cm = 1
        next
        if cm = 0 and y > 1 then [trou]
        call drawRow y
    next
 
    call fall  ' première chute dès la mise en place

    WAIT
 
    sub fall   ' gère toutes les chutes potentielles dans toute la grille
        for cy = ncy-1 to 1 step -1 ' en partant du bas bien sûr !
            for cx = 1 to ncx
                by = cy
                while by+1 <= ncy
                    if cell(cx,by) = 2 and cell(cx,by+1) = 0 then
                        cell(cx,by) = 0
                        #w.map "drawbmp p0 ";(cx-1)*dc;" ";(by-1)*dc
                        cell(cx,by+1) = 2
                        #w.map "drawbmp bille";bb;" ";(cx-1)*dc;" ";by*dc
                    end if
                    by = by + 1
                wend
            next
        next
        #w.map "flush; discard"
    end sub
 
    [bi]                   ' change bille
      bb=bb+1
      if bb =6 then bb=1
      #w.bi, "Bille: ";bb
      for y = 1 to ncy :call drawRow y :next
    wait
 
    [mu]                   ' change mur
      mm=mm+1
      if mm =6 then mm=1
      #w.mu, "Mur: ";mm
      for y = 1 to ncy :call drawRow y :next
    wait
 
    sub boutons handle$  ' décalage d'une ligne en fonction du bouton pressé (vers la droite ou vers la gauche)
       ' la règle : les billes ne se déplacent que poussées par un mur, et ne peuvent pas dépasser les bords.
        row = val(mid$(handle$,6,1))+1 'extraction de la ligne grace aux noms des boutons (judicieusement nommés ;) )
        dir = val(mid$(handle$,7,1))   'et extraction du sens
        ro=row-1: di=dir
        if olro<>0 or oldi<>0 then    ' secur premier coup
            han$ = "#w.bt" + STR$(oldro)+STR$(oldi)
            #han$, "!enable"             'réactive bouton
        end if
 
        call slide row, dir   ' slide management of row

        call drawRow row
        call fall
        call ButtonsRow  ' désactive les bouttons d'une ligne sans bille à partir du haut.

        hand$ = "#w.bt" + STR$(ro)+STR$(di)
        #hand$, "!disable"         ' désactive bouton
        oldro=ro: oldi=di                'memorise ligne direction
        coup=coup+1
        #w.txt, coup;" coup(s)"
        tscore=0
        for xx=1 to ncx
          if cell(xx,ncy)=2 then tscore=tscore+1
        next xx
        if tscore=16 then
            timer 1000, [temp]
            wait
            [temp]
            timer 0
            call frac
        end if
    end sub       ' c'est ici que le prog attend le coup suivant******************************

    SUB slide Rw, Dr   ' slide management of Rw
        s = 1 :ax = ncx
        if Dr=1 then s = 0-1 :ax = 1
        o = ok(Rw,Dr)  ' = première case déplaçable
        if o then
            temp = cell(o,Rw)
            for x=o to ax-s step s :cell(x,Rw) = cell(x+s,Rw) :next    ' tout décaler
            if temp<>2 then cell(ax,Rw) = temp
            if Rw < ncy then  ' exception ligne du bas...
                for x=ax to o+s step 0-s     ' recherche les billes qui doivent être remisent à leur place
                    if cell(x,Rw) = 0 and cell(x-s,Rw) = 2 then cell(x,Rw) = cell(x-s,Rw) :cell(x-s,Rw)=0
                next
            end if
        end if
    END SUB
 
    FUNCTION ok(rw,d)  ' renvoi la première case déplaçable
        s = 1  :x = 1
        if d=1 then s = 0-1 :x = ncx
        while cell(x,rw)=2 :x=x+s :wend
        ok = x :if x>1 and x<ncx and cell(x,rw)=1 then ok=0
    END FUNCTION
 
    SUB ButtonsRow   ' désactive les bouttons d'une ligne sans bille à partir du haut.
        for cy = 1 to ncy-1  'on commence à partir de la 1ère qui n'a pas de boutons
            if emptyRow(cy) = 0 then exit for
            if cy > 1 then  ' verifie si c'est une ligne qui comporte des boutons
                btn$ = "#w.bt";cy-1;1 : #btn$ "!disable"    ' cy-1 car les boutons commence à 1 et le 1er cy avec boutons = 2 !
                btn$ = "#w.bt";cy-1;2 : #btn$ "!disable"
            end if
        next
    end sub
 
    function emptyRow(rw)  ' retourne 1 si la ligne 'rw' est vide, 0 si non.
        emptyRow = 1
        for xx=1 to ncx
           if cell(xx,rw)=2 then emptyRow = 0 :exit function
        next xx
    end function
 
    SUB AllButtonsActivate OnOff  ' si OnOff = 1 "!enable" , 0 = ""!disable"
        action$ = word$("!disable !enable",OnOff+1)
        #w.new action$ ' réactiver TOUS les boutons avant de sortir...
        #w.ni action$
        #w.mu action$
        #w.bi action$
        for bt = 1 to 16
            btn$ = "#w.bt"+word$("11 21 31 41 51 61 71 81 12 22 32 42 52 62 72 82",bt)
            #btn$ action$
        next
    end sub
 
 sub frac
    call AllButtonsActivate 0
    #w.map, "down ; fill black"
    #w.txt "Clic sur la fractale = Retour"
    #w.map "when leftButtonDown [out]"   ' pour sortir de la SUB frac quand clic dans #w.map
    [draw]
    'set up some random colors
    redim col$(12)
    for c=0 to 12
        col$(c)=str$(int(rnd(0)*256))+" "+str$(int(rnd(0)*256))+" "+str$(int(rnd(0)*256))
    next c
 
    'set up some random starting positions
    a=rnd(0)
    b=0.9998
    c=2-2*a
    dots=12000
    x=j=0
    y=rnd(0)*12+0.1
    'calculate and draw the points
    for i=0 to dots
        scan
        z=x
        x=b*y+j
        j=a*x+c*(x^2)/(1+x^2)
        y=j-z
        xp=(x*20)+midx
        yp=(y*20)+midy
        #w.map, "color ";col$(i/1000)
        #w.map, "set ";xp;" ";yp
    next i
    goto [draw]
    [out]
    call AllButtonsActivate 1
 end sub
 
    sub drawRow r    ' dessine le contenu d'une ligne
       ' #w.map "place 0 ";(r-1)*dc;" ; boxfilled ";(ncx-1)*dc;" ";r*dc
        for x=1 to ncx
            select case cell(x,r)
            case 0 :#w.map "drawbmp p0 ";(x-1)*dc;" ";(r-1)*dc
            case 1 :#w.map "drawbmp mur";mm;" ";(x-1)*dc;" ";(r-1)*dc
            case 2 :#w.map "drawbmp bille";bb;" ";(x-1)*dc;" ";(r-1)*dc
            end select
        next
    end sub
 
    [niveau1]
    data 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2    ' 2 = boule, 1 = mur, 0 = trou
    data 0,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1
    data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1
    data 0,1,1,1,0,1,0,1,0,1,0,1,0,1,1,1
    data 1,1,0,1,1,1,1,0,1,0,1,1,1,0,1,1
    data 0,1,1,1,1,0,1,1,0,1,0,1,1,1,1,1
    data 1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,1
    data 0,1,1,0,1,1,0,1,1,1,0,1,1,1,0,1
    data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
    [niveau2]
    data 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2    ' 2 = boule, 1 = mur, 0 = trou
    data 1,1,0,1,1,0,1,1,0,1,1,0,1,1,1,1
    data 1,1,1,0,1,1,1,0,1,1,1,1,1,0,1,1
    data 1,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1
    data 1,1,0,0,1,1,1,0,1,0,1,1,1,1,0,1
    data 1,1,0,1,1,0,1,1,1,1,0,1,1,1,1,1
    data 1,0,1,1,0,1,1,0,1,1,1,1,0,1,1,1
    data 1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1
    data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
    sub quit handle$
        for im = 1 to 5
            unloadbmp "mur";im
            unloadbmp "bille";im
        next
        close #handle$
        end
    end sub
 



PS: pour la fermeture par la croix quand y a fractale : j'ai simplement changé [quit] en SUB quit handle$
____________________
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/07/2012 à 14h15

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2190
SUB quit handle$...! ET OUI ! parbleu!
Les grilles , ça donne des idées, et comme j'ai besoin de tripoter de la "sub", il m'et venu l'idée saugrenue suivante:
Deux grilles d'environ 7x7, une à droite, une à gauche. Dans celle de droite qui est le modèle, des cases d'une couleur disposées en motifs, ou au hasard.
Dans la grille de gauche ( qui est ta grille, avec les sub's: "Mark, "coord, "grid, "info).. On doit reproduire le motif de la grille de droite.
Méééh, les cases de la grille de gauche, oscillent entre deux couleurs, quand on clique sur une case elle change de couleur, tandis que des cases voisines (à définir) basculent dans la couleur opposée.

Présentement, j'ai une syntaxe error sur une ligne, dont la soeur jumelle marche au poil dans la sub d'à coté :s .....Je reprend les travaux dés que j'aurai compris ce que tu fabrique avec ce..." o "......à+..
____________________
Roro

   
Jeux » Chutes Ancien jeu Remanié 2012  

 |  |

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