Forum Liberty Basic France

Le 30/07/2012 à 09h23

Administrateur

Groupe: Administrateur

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

D'un geste auguste , je livre le code au fauve.
Je t'averti, il y a des lignes en trop...je m'en fout, c'est pas moi qui les execute...
Note: pour passer de éditor à game, il faut faire game-->editor-->game pour que le bazar se remette à zéro
Si tu a une map noire, il faut charger un niveau. Les 2 et 3 font planter à partir du sixième pas.
.....Hey ! je commente...moi......
Ps: j'ai mis des: §§§§ aux endroits que j'ai touchés

Code JB :
 
 
 
    ' http://libertybasic.fr/forum/topic-177+besoin-d-imagination-pour-creer-les-niveaux-de-ce-jeu.php
    ' cassiope01 jul, 26 2012
 
  'ATTENTION: Pour passer de éditor à game, faire: Game-->Editor-->Game
       '...pour remise à zéro myrecord$
    nomainwin
 
    GLOBAL ncx, ncy, dc, oldcurX, oldcurY, curX, curY, nb
 
    ncx = 24   ' nbr of cells X
    ncy = 16    ' nbr of cells Y
    dc = 42    ' size of a cell in pixels
    MapWidth = ncx*dc+int(dc/ncx)
    MapHeight = ncy*dc+int(dc/ncy)
 
    WindowWidth  = MapWidth + 15+90 '§§§§§§§§§§§§§§§§§
    WindowHeight = MapHeight + 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 info$(10,10)
    DIM cell(ncx,ncy)
    DIM mem(ncx,ncy) ' for "undo"
    DIM dirX(4), dirY(4)
    DIM record$(20)
    DIM myrecord$(20)  '§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§
    DIM level$(30)
    dirX(1) = 0  : dirY(1) = -1  'up
    dirX(2) = 1  : dirY(2) = 0   'right
    dirX(3) = 0  : dirY(3) = 1   'down
    dirX(4) = -1 : dirY(4) = 0   'left
 
    loadbmp "billes",  "Billes.bmp"
    loadbmp "bille21", "Bille21.bmp"
    loadbmp "mur2",    "Mur2.bmp"
    loadbmp "mur3",    "Mur3.bmp"
    loadbmp "sable1",  "Sable1.bmp"
    loadbmp "lapin",   "Lapin.bmp"
    list$ = "lapin sable1 mur2 b1 b2 b3 b4 b5 b6 b7 b8 bille21"
    for ex = 1 to 5 :loadbmp "explose";ex, "explosion";ex;".bmp" :next
 
       button #w.bta "Action N°",[undo],UL, WindowWidth-90, 50, 80, 25
       button #w.bt1 "1",[undo1],UL, WindowWidth-90, 80, 80, 25
       button #w.bt2 "2",[undo2],UL, WindowWidth-90, 110, 80, 25
       button #w.bt3 "3",[undo3],UL, WindowWidth-90, 140, 80, 25
       button #w.bt4 "4",[undo4],UL, WindowWidth-90, 170, 80, 25
       button #w.bt5 "5",[undo5],UL, WindowWidth-90, 200, 80, 25
       button #w.bt6 "6",[undo6],UL, WindowWidth-90, 230, 80, 25
       button #w.bt7 "7",[undo7],UL, WindowWidth-90, 260, 80, 25
       button #w.bt8 "8",[undo8],UL, WindowWidth-90, 290, 80, 25
       button #w.bt9 "9",[undo9],UL, WindowWidth-90, 320, 80, 25
       button #w.bt10 "10",[undo10],UL, WindowWidth-90, 350, 80, 25
 
       TEXTBOX #w.testa, WindowWidth-90, 400, 80, 25
    statictext #w.txt "",5,10,270,25
    statictext #w.txt2 "SPACE = On/Off Editor",280,10,200,25
    button #w.lev "Levels",[loadlevel],UL,555,6,65,27
    button #w.bck "Undo",[undo],UL,MapWidth-130,6,60,27
    button #w.new "New",[new],UL,MapWidth-55,6,60,27
    graphicbox #w.gsc1, MapWidth-380,6,86,28
    graphicbox #w.gsc2, MapWidth-290,6,146,28
    graphicbox #w.map, 5, 40, MapWidth, MapHeight
    OPEN "    Boulder Dash JB... "+space$(15)+date$ for window_nf as #w  'graphics_nf_nsb
    #w "trapclose [quit]"
    #w.txt "!font Comic_Sans_MS 12 bold"
    #w.txt2 "!font Comic_Sans_MS 12"
    #w.lev "!font Comic_Sans_MS 12 bold"
    #w.bck "!font Comic_Sans_MS 12 bold"
    #w.new "!font Comic_Sans_MS 12 bold"
    #w.map "down; backcolor black; fill black"
    #w.gsc1 "down; backcolor lightgray ; fill lightgray"
    #w.gsc2 "down; backcolor lightgray ; fill lightgray"
    #w.gsc1 "font Courier_New 19 bold"
    #w.gsc2 "font Courier_New 18 bold"
 
    #w.map "getbmp p0 0 0 ";dc;" ";dc  ' empty cell for deleting
    #w.map "drawbmp billes 0 0"
    for b = 1 to 8
        d = val(word$("0 45 89 133 177 221 266 311",b))  ' exact pixels in the bmp...
        #w.map "getbmp b";b;" ";d;" 0 ";dc;" ";dc  ' make bmps needed
    next
 
    for y = 1 to ncy        ' murs externes et sable
        for x = 1 to ncx
            if y=1 or y=ncy or x=1 or x=ncx then
                #w.map "drawbmp mur3 ";(x-1)*dc;" ";(y-1)*dc
                cell(x,y) = 11
            else
                #w.map "drawbmp sable1 ";(x-1)*dc;" ";(y-1)*dc
                cell(x,y) = 10
            end if
        next
    next
 
    [new]
    if rec > 0 and nbD > 0 then  ' re-init current level.
        call replace record$(1)
        goto [game]
    end if
    if fileExist(defaultDir$, "saved.ini") and first = 0 then
        open "saved.ini" for input as #lev
        line input #lev, game$
        close #lev
        call replace game$
        first = 1
        LVname$ = left$(info$(1,0),len(info$(1,0))-4)
        goto [game]
    else
        if fileExist(DefaultDir$, "level_01.lev") then
            open "level_01.lev" for input as #lev
            line input #lev, game$
            close #lev
            call replace game$
            first = 1
            LVname$ = left$(info$(1,0),len(info$(1,0))-4)
            goto [game]
        end if
    end if
 
    [game]
        editor = 0
        curIM = 1  'rabbit by default in editor mode
        nbD = nbBilles()  'nb of things to catch
        nb = nbD
        gosub [dispNB]
        gosub [dispLVname]
        #w.map "drawbmp lapin ";(curX-1)*dc;" ";(curY-1)*dc
        #w.map "flush ; discard"
        gosub [currentXY] 'rabbit coordonates
        #w.txt ""
        rec = 0
        FIN = 0
        redim record$(nbD)  're-init for undo
        gosub [record]  ' first record for undo
            redim myrecord$(20) '§§§§§§§§§§§§§§§§§
            reco=0              '§§§§§§§§§§§§§§§§§
            print #w.bta, "Action N°";reco '§§§§§§§§
        #w.map "setfocus"
        #w.map "when leftButtonDown [mouse]"    ' x,y cell
        #w.map "when characterInput [keyboard]"    ' x,y cell
       ' #w.map "when mouseMove [infos]"    ' x,y cell
    WAIT
 
    [dispNB]
        #w.gsc1 "fill lightgray ; color red ; place 8 21 ;|";nb
        #w.gsc1 "flush ;discard"
        if nb = 0 then  #w.txt "   Bravo ! c'est Gagné." :gosub [explosion]
    return
 
    [dispLVname]
        #w.gsc2 "fill lightgray ; color blue ; place 8 21 ;|";LVname$
        #w.gsc2 "flush ;discard"
    return
 
    [explosion]
        #w.map "when leftButtonDown"
        #w.map "when characterInput"
        for y=2 to ncy-1
            for x=2 to ncx-1
                if cell(x,y)>0 and cell(x,y)<10 and FIN = 1 then  ' lost !!
                    [good]
                    #w.map "drawbmp p0 ";(x-1)*dc;" ";(y-1)*dc
                    for ex = 1 to 5
                        #w.map "drawbmp explose";ex;" ";6+(x-1)*dc;" ";6+(y-1)*dc
                        timer 10, [tmp1] : wait
                        [tmp1]
                        timer 0
                    next
                    for ex = 5 to 1 step -1
                        #w.map "drawbmp explose";ex;" ";6+(x-1)*dc;" ";6+(y-1)*dc
                        timer 10, [tmp2] : wait
                        [tmp2]
                        timer 0
                    next
                    cell(x,y) = 0
                else
                    if cell(x,y) = 12 and FIN = 0 then [good]
                end if
            next
        next
        FIN = 1
        #w.map "when leftButtonDown [mouse]"    ' x,y cell
        #w.map "when characterInput [keyboard]"    ' x,y cell
    return
 
    [keyboard]
        dir = 0
        codeT = asc(right$(Inkey$,1))
        select case codeT
        case _VK_UP    :dir = 1  ' arrows
        case _VK_RIGHT :dir = 2
        case _VK_DOWN  :dir = 3
        case _VK_LEFT  :dir = 4
        case 8  :goto [undo]  ' DELETE
        case 13 :gosub [new]  ' ENTER
        case 32 :gosub [editor]  ' on/off level editor
        case 114 :gosub [reclevel] ' r
        case 82  :gosub [reclevel] ' R
        case 108 :goto [loadlevel] ' l
        case 76  :goto [loadlevel] ' L
        end select
        if dir>0 and editor = 0 then gosub [action]
    wait
 
    [mouse]
        dir = 0
        mx = int(MouseX/dc)+1
        my = int(MouseY/dc)+1
    if my >1 then           '§§§§§§§§§§§§§§§ Saute la ligne de selection
       gosub [myrecord]    '§§§§§§§§§§§§§§§§§ Le mien record$
       print #w.bta, "Action N°";reco  '§§§§§§§§§§ Affichage dans bouton
    end if    '§§§§§§§§§§§§§§§§§§§§§§§§§§
        select case
        case editor > 0 :if my = 1 and mx > 5 and mx < 18 then curIM = mx-5  'select element
        case oldcurX-mx = 0 and my < oldcurY :dir = 1  ' up
        case oldcurY-my = 0 and mx > oldcurX :dir = 2  ' right
        case oldcurX-mx = 0 and my > oldcurY :dir = 3  ' down
        case oldcurY-my = 0 and mx < oldcurX :dir = 4  ' left
        end select
        if dir > 0 and editor = 0 then gosub [action]   ' gestion des évènements suite à ce déplacement du lapin...
        if dir = 0 and editor > 0 then   ' on est en mode éditeur
            if mx > 1 and mx < ncx and my > 1 and my < ncy then
                #w.map "drawbmp ";word$(list$,curIM);" ";(mx-1)*dc;" ";(my-1)*dc
                cell(mx,my) = val(word$("9 10 11 1 2 3 4 5 6 7 8 12",curIM))
                #w.map "flush ; discard"
                gosub [currentXY] 'rabbit coordonates
                nbD = nbBilles()  'nb of things to catch
                nb = nbD
                gosub [dispNB]
            end if
        end if
    wait
 
    [currentXY] ' the first cell() with 9 => rabbit and so the starting position
        out = 0
        for y=2 to ncy-1
            for x=2 to ncx-1
                if cell(x,y) = 9 then
                    curX = x :oldcurX = curX
                    curY = y :oldcurY = curY
                    out = 1
                    exit for
                end if
            next
            if out then exit for
        next
    return
 
    function nbBilles()  'nb of things to catch
        for y=2 to ncy-1
            for x=2 to ncx-1
                if cell(x,y)>0 and cell(x,y)<9 then nbBilles = nbBilles + 1
            next
        next
    end function
 
    [editor]
        rec = 0  ' disactivate 'undo'
        if editor = 0 then   ' editor ON
            #w.txt " EDITOR"
            redim myrecord$(20) '§§§§§§§§§§§§§§§§§§§   ' Coup de torchon
            reco=0              '§§§§§§§§§§§§§§§§§§           +
            print #w.bta, "Action N°";reco '§§§§§§§§      Affichage
            for im = 1 to 20
                #w.map "drawbmp ";word$("p0 p0 p0 "+list$+" p0 p0 p0 p0 p0",im);" ";(im+1)*dc;" ";0
            next
            #w.map "color yellow ; font Comic_Sans_MS 14 bold"
            #w.map "place ";2*dc+10;" 28 ;|Select -->"
            #w.map "place ";17*dc+16;" 28 ;|R -> Record Level"
            #w.map "flush ; discard"
            editor = 1
            #w.map "when leftButtonMove [draw]"
        else                 ' editor OFF
            gosub [record]
      gosub [myrecord]  '§§§§§§§§§§§§§§§ Le mien [record]
            #w.map "when leftButtonMove"
            #w.txt "" :curIM = 1
            for im = 1 to 20
                #w.map "drawbmp mur3 ";(im+1)*dc;" ";0
            next
            #w.map "flush ; discard"
            #w.map "color black"
            editor = 0
        end if
    return
 
    [draw]
    if editor then
        mx = int(MouseX/dc)+1
        my = int(MouseY/dc)+1
        if mx > 1 and mx < ncx and my > 1 and my < ncy then
            #w.map "drawbmp ";word$(list$,curIM);" ";(mx-1)*dc;" ";(my-1)*dc
            #w.map "flush ; discard"
            cell(mx,my) = val(word$("9 10 11 1 2 3 4 5 6 7 8 12",curIM))
            gosub [currentXY] 'rabbit coordonates
            nbD = nbBilles()  'nb of things to catch
            nb = nbD
            gosub [dispNB]
        end if
    end if
    wait
 
    [action]  ' player game
        if FIN = 1 then [new]
        ok = 0 :record = 0
        curX = oldcurX + dirX(dir)  ' new rabbit's coord.
        curY = oldcurY + dirY(dir)
        if cell(curX,curY) < 11 then
            #w.map "drawbmp p0 ";(oldcurX-1)*dc;" ";(oldcurY-1)*dc
            cell(oldcurX,oldcurY) = 0
            #w.map "drawbmp lapin ";(curX-1)*dc;" ";(curY-1)*dc
            if cell(curX,curY) > 0 and cell(curX,curY) < 9 then  ' element kept
                nb = nb - 1
                gosub [dispNB]
                record = 1  ' ok to record for 'undo'
            end if
            cell(curX,curY) = 9
            if cell(oldcurX,oldcurY-1) = 12 then
                ' si curY - 1 = 12 : PERDU ! car curY - 1 = 12 tombe sur le lapin !
                if dir = 3 then
                    #w.map "drawbmp p0 ";(oldcurX-1)*dc;" ";(oldcurY-2)*dc
                    #w.map "drawbmp bille21 ";(curX-1)*dc;" ";(curY-1)*dc
                    cell(oldcurX,oldcurY-1) = 0
                    cell(oldcurX,oldcurY) = 12
                    FIN = 1
                    #w.txt "  PERDU !"
                    gosub [explosion]
                else
                  ' si oldcurY-1 = 12 elle doit tomber avec celle(s) du dessus
                    call fall oldcurX,oldcurY
                end if
            end if
            ok = 1
        end if
        if cell(curX,curY) = 12 and dir > 1 and (oldcurX+2*dirX(dir)<=ncx and oldcurY+2*dirY(dir)<=ncy) then
            if cell(oldcurX+2*dirX(dir),oldcurY+2*dirY(dir)) = 0 then  ' elle est poussée si la cellule de derrière est vide
                #w.map "drawbmp p0 ";(oldcurX-1)*dc;" ";(oldcurY-1)*dc
                cell(oldcurX,oldcurY) = 0
                #w.map "drawbmp bille21 ";(curX+dirX(dir)-1)*dc;" ";(curY+dirY(dir)-1)*dc
                #w.map "drawbmp lapin ";(curX-1)*dc;" ";(curY-1)*dc
                if cell(curX,curY) > 0 and cell(curX,curY) < 9 then  ' element kept
                    nb = nb - 1
                    gosub [dispNB]
                    record = 1  ' ok to record for 'undo'
                end if
                cell(curX,curY) = 9
                cell(curX+dirX(dir),curY+dirY(dir)) = 12
                ok = 1
                call fall oldcurX,oldcurY
                call fall curX+dirX(dir),curY+dirY(dir)+1
            end if
        end if
        if ok then
            oldcurX = curX
            oldcurY = curY
            if record then gosub [record]
        end if
    wait
 
    [reclevel]      ' record this level (from editor)
        if editor then
            confirm "Record this new level ?"; answer$
            if answer$ = "yes" then
                filedialog "Save As...", "level_**.lev", filename$
                ' care if already exist filename$ !!!!
                if filename$ <> "" then
                    level$ = "" :rabbit = 0
                    for y=2 to ncy-1
                        for x=2 to ncx-1
                            if cell(x,y) = 9 then rabbit = rabbit + 1
                            level$ = level$+using("##",cell(x,y))
                        next
                        if rabbit > 1 then notice "WRONG LEVEL !"+chr$(13)+"It can exist only 1 Rabbit !" :exit for
                    next
                    if rabbit = 1 then
                        open filename$ for output as #lv
                        #lv, level$
                        close #lv
                        notice filename$+" recorded."
                        nbD = nbBilles()
                        nb = nbD
                        rec = 0
                        first = 1
                        files DefaultDir$, filename$, info$(
                        LVname$ = left$(info$(1,0),len(info$(1,0))-4)
                        gosub [dispLVname]
                        gosub [record]
                        'goto [game]
                    end if
                end if
            end if
        end if
    return
 
    [loadlevel]    ' load a level file
        filedialog "Load level file :", "level_*.lev", filename$
        if filename$ <> "" and fileExist(DefaultDir$, filename$) then
            open filename$ for input as #lev
            line input #lev, game$
            close #lev
            redim myrecord$(20) '§§§§§§§§§§§§§§§§§§§§§§ Coup de balai
            reco=0              '§§§§§§§§§§§§§§§§§§§§§      +
            print #w.bta, "Action N°";reco '§§§§§§§§     Affichage
            call replace game$
            first = 1
            LVname$ = left$(info$(1,0),len(info$(1,0))-4)
            goto [game]
        end if
    wait
 
    [myrecord]    ' only for undo  ' My Record whith my variables
        reco = reco + 1               ' And my array
        if reco=11 then reco=1
        if reco <= nbD then
            for y=2 to ncy-1
                for x=2 to ncx-1
                    myrecord$(reco) = myrecord$(reco)+using("##",cell(x,y))
                next
            next
        end if
    return
    [record]    ' only for undo
        rec = rec + 1
        if rec <= nbD then
            for y=2 to ncy-1
                for x=2 to ncx-1
                    record$(rec) = record$(rec)+using("##",cell(x,y))
                next
            next
        end if
    return
 
    [undo1]             ' Démmarrage de la fonction copié/collé de Windows
        reco=1                            ' Tour de chauffe
            call replace myrecord$(reco)
            if nb < nbD then nb = nb + 1
            gosub [dispNB]
        #w.map "setfocus"
    wait
    [undo2]
        reco=2
            call replace myrecord$(reco)
            if nb < nbD then nb = nb + 1
            gosub [dispNB]
        #w.map "setfocus"
    wait
    [undo3]
        reco=3                            ' Montée en régime
            call replace myrecord$(reco)
            if nb < nbD then nb = nb + 1
            gosub [dispNB]
        #w.map "setfocus"
    wait
    [undo4]
       reco=4
            call replace myrecord$(reco)
            if nb < nbD then nb = nb + 1
            gosub [dispNB]
        #w.map "setfocus"
    wait
    [undo5]
       reco=5                               ' 9500 RPM
            call replace myrecord$(reco)
            if nb < nbD then nb = nb + 1
            gosub [dispNB]
        #w.map "setfocus"
    wait
    [undo6]
        reco=6
            call replace myrecord$(reco)
            if nb < nbD then nb = nb + 1
            gosub [dispNB]
        #w.map "setfocus"
    wait
    [undo7]
        reco=7
            call replace myrecord$(reco)
            if nb < nbD then nb = nb + 1
            gosub [dispNB]
        #w.map "setfocus"
    wait
    [undo8]
        reco=8
            call replace myrecord$(reco)
            if nb < nbD then nb = nb + 1
            gosub [dispNB]
        #w.map "setfocus"
    wait
    [undo9]
       reco=9
            call replace myrecord$(reco)
            if nb < nbD then nb = nb + 1
            gosub [dispNB]
        #w.map "setfocus"
    wait
    [undo10]
       reco=10
            call replace myrecord$(reco)
            if nb < nbD then nb = nb + 1
            gosub [dispNB]
        #w.map "setfocus"
    wait                                 ' Extinction/Refroidissement
 
    [undo]
        if rec > 0 and editor = 0 then
            on error goto [no]
            call replace record$(rec)
            rec = rec - 1
            nb = nbBilles()  'nb of things to catch
            gosub [dispNB]
            [no]
        end if
        #w.map "setfocus"
    wait
 
    sub replace string$
        list2$ = "b1 b2 b3 b4 b5 b6 b7 b8 lapin sable1 mur2 bille21"
        cel = 1 :nb = 0
        for y = 2 to ncy-1
            for x = 2 to ncx-1
               value = val(mid$(string$,cel,2))
               if cell(x,y) <> value then
                  cell(x,y) = value
                  if value = 0 then
                      #w.map "drawbmp p0 ";(x-1)*dc;" ";(y-1)*dc
                  else
                      on error goto [bug]
                      #w.map "drawbmp ";word$(list2$,cell(x,y));" ";(x-1)*dc;" ";(y-1)*dc
                      [bug]
                  end if
                  if cell(x,y) = 9 then
                     curX = x :oldcurX = curX
                     curY = y :oldcurY = curY
                  end if
               end if
               cel = cel + 2
            next
        next
        #w.map "flush ; discard"
    end sub
 
    sub fall cx,cy  ' falling down ( cx,cy = coord. of the cell under )
        dy = cy
        while cell(cx,dy-1) = 12
            fy = dy
            while cell(cx,fy) = 0
                call fallstep (cx-1)*dc, (fy-2)*dc, (fy-1)*dc   ' slow down fall...
                cell(cx,fy-1) = 0
                cell(cx,fy) = 12
                fy = fy + 1
            wend
            dy = dy - 1
        wend
        #w.map "flush ; discard"
    end sub
 
    sub fallstep dx, dy, ay   ' slow down fall...
         stp = int(dc/16)
         nstp = int(dc/stp)
         fy = dy
         for p = 1 to nstp
              #w.map "place ";dx;" ";fy;" ;boxfilled ";dx+dc;" ";fy+stp
              fy = fy + stp
              #w.map "drawbmp bille21 ";dx;" ";fy
         next
         #w.map "drawbmp bille21 ";dx;" ";ay
         #w.map "flush ; discard"
    end sub
 
    [infos]  ' only for debug
        cx = int(MouseX/dc)+1 :if cx>ncx then cx=ncx
        cy = int(MouseY/dc)+1 :if cy>ncy then cy=ncy
        #w.txt "cell(";cx;",";cy;") = ";cell(cx,cy)
    wait
 
    function fileExist(path$, filename$)
        files path$, filename$, info$()
        fileExist = val(info$(0, 0))
    end function
 
    [quit]
        CONFIRM "QUIT THE GAME ?"; answer$
        if answer$ = "yes" then
            level$ = ""
            for y=2 to ncy-1
               for x=2 to ncx-1
                   level$ = level$+using("##",cell(x,y))
               next
            next
            open "saved.ini" for output as #clv   ' save current game
            #clv, level$
            close #clv
            unloadbmp "mur3"
            for im = 1 to 12 :unloadbmp word$(list$,im) :next
            for ex = 1 to 5  :unloadbmp "explose";ex :next
            close #w
            END
        end if
    wait
 
 




Edité par Roland Le 30/07/2012 à 09h25
____________________
Roro

   
Le 30/07/2012 à 13h31

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
tiens môsieur auguste, voici ma dernière version, qui dispose de 2 types d'explosions, et surtout, plus qu'un seul fichier BMP, et j'espère plus de BUG ;)

bd_jb.zip


Amusez-vous, et créez des niveaux ;)

@+



Edité par cassiope01 Le 30/07/2012 à 13h31
____________________
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 30/07/2012 à 18h29

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2199
Ah ça Mééh ! A quoi ça sert que Roro y se décarcasse !
Tu n'a pas essayé mon "undo" de compè't...il ne marche qu'avec la mouse...j'ai préféré m'attaquer à une souris isolée, qu'à un groupe armé de codes-key Et il ne marche pas avec les niveaux 2 et 3. ça bugue au sixième pas. Avec le 1 et le 4, ça marche au poil.
Je m'attendais à ce que tu exploite la chose, avec la machette traditionnelle. et une belle sub de gestion des boutons.....Macache.!...il faut tout faire soi-meme ...ici......Il va pleuvoir du gosub......sortez couvert.....
____________________
Roro

   
Le 30/07/2012 à 18h30

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Oups, désolé :(

Mais si je fait tout, tu vas t'ennuyer :heink ;) et puis tu vas encore vouloir un autre morceau de la Lune :siffle :lu



Edité par cassiope01 Le 30/07/2012 à 18h34
____________________
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 30/07/2012 à 21h20

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2199
C'est bon, ça fonctionne suffisament pour me satisfaire.
Je n'en suis pas encore à faire de l'esthétisme en programmation... D'ailleurs, sur mes bagnoles, la première chose qui dégage, c'est les enjoliveurs de roues.... ;)
____________________
Roro

   
Le 30/07/2012 à 22h21

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2199
Tiens en parlant de morceau de lune...Une case vide dans la selection,ça serait bien aussi. :p
____________________
Roro

   
Le 31/07/2012 à 07h38

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Excellente idée.

Fait.

bd_jb.zip


A faire : DANS L'EDITEUR, possibilité d'avoir un niveau vierge (que du sable) en cliquant le bouton 'New' ...
____________________
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 31/07/2012 à 08h13

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2199
Tiens en parlant de sable, je me suis amusé à faire une map pleine de billes, à la souris.
Et bien , alors que le champ était presque plein, il y a eu loading impromptu d'un autre niveau.
Surpris, j'ai réessayé...pareil (bien que j'ai manoeuvré lentement, clic par clic)
Je crois qu'avec ce prog, on est pas au bout des surprises...Il y a quelques autres trucs, tellement surprenants, que je ne peux pas encore les décrires. Je vais essayer d'etre attentif pour les noter.
Les bestioles adores les bons gros morceaux, propices à la confection du nid, et à l'élevage des jeunes. ;)

Please: Dans la record$, à quoi correspondent les espaces ? j'essaie de comprendre l'embrouille entre les niveaux et mon undo
Le level 2 me plante le undo au pas N° 8, et le level 3, au pas N° 5. :heink Les levels 1 et 4 ne font pas de pb.



Edité par Roland Le 31/07/2012 à 08h48
____________________
Roro

   
Le 31/07/2012 à 09h16

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Oups ! v'la aut'chose !!

Trouvé : juste ça à changer...

Code VB :
    [dispNB]
        #w.gsc1 "fill lightgray ; color red ; place 8 21 ;|";nb
        #w.gsc1 "flush ;discard"
        if nb = 0 and editor = 0 then #w.txt "   Bravo ! c'est Gagné." :gosub [explosion]
    return
 


merci m'sieur.

Vas'y continue de le torturer, tu es le meilleur bêta-testeur :top

@+

____________________
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 31/07/2012 à 10h26

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2199
P.......N ! :heink ....Tu me scie ! :top
Ca guéri quoi ...le loading impromptu, ou les deux niveaux qui me font ch...r ?
Et ces espaces dans la record$...qui ne se soumettent à aucune séquence logique....ils sortent d'où...au juste ?
Et à quoi t'a servie la mainwin ? :s ( ne ment pas, je sais que tu t'en est servi... ;)
Hum....ça fait trois questions...



Edité par Roland Le 31/07/2012 à 10h38
____________________
Roro

   
Le 31/07/2012 à 11h16

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
et pourquoi les poules n'ont pas de dents, et pourquoi le chien veut toujours se taper ta jambe, et pourquoi on ne voit pas le cerveau, et pourquoi .... :lol :lol


Les espaces c'est parce que j'ai utilisé using("##",cell(x,y)) à l'enregistrement de la chaine, et qui permet de formater une chaine (ici sur 2 caractères) mais s'il y en a qu'un ça rajoute un espace devant...
L'espace est un caractère comme un autre.

La mainwin est le moyen le plus rapide pour y afficher le contenu de quelques variables pour debugger.

Là c'était pour ajouter le choix du vide dans l'éditeur comme tu me l'as demandé.

@+



Edité par cassiope01 Le 31/07/2012 à 11h18
____________________
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 31/07/2012 à 11h53

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2199
Oh ! trois petites questiounettes.. :) .j'en ai un, quand il débarque c'est avec une liste sur papier longue comme le bras...que dis-je ...comme le cou de la giraffe !
Ce using n'est pas trés clair. je présume que le formatage sert à l'écriture et à la lecture.
Par deux caractères, d'accord, mais comment il peut savoir que le caractère est tout seul qu'est-ce qui sert de repère ......y a pas de virgules ...pas d'espaces... ça peut etre QUE LE: 1 :p
Comprend pas pourquoi un level plante au pas 8 et l'autre au pas 5, que les autres ne plantent pas. Alors que la procédure d'écriture/lecture est la meme pour tous les pas et tous les levels ...Je creuse....



Edité par Roland Le 31/07/2012 à 12h18
____________________
Roro

   
Le 31/07/2012 à 12h40

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Tu présumes mal.
Il ne fait que formater une chaine. C'est pas à toi que je dois dire de regarder l'aide !!!!! :@
A toi de la lire selon ce format. Ici 2 caractères par 2 caractères (espace ou pas).
____________________
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 31/07/2012 à 13h15

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2199
Hey, j'ai examiné la chaine en détail, et je te signale que à tous les endroits où il y a un espace (ajouté par le using, à ce que tu me dit), et bé c'est bel et bien un "1" qui manque.
Et l'aide je l'ai lue, relue, et rerelue...chapeau pointu!



Edité par Roland Le 31/07/2012 à 13h20
____________________
Roro

   
Le 31/07/2012 à 13h38

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
met un espace devant la chaine qui constitue ton niveau (dans le fichier .lev) et ça ira mieux, sûrement que tout est décalé à cause de ça.
____________________
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 31/07/2012 à 13h57

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2199
J'ai pensé à ça suite à ton post chez les ricains.
Mais si le problème venait de la chaine, il se manifesterait dés le premier pas.
J'essaie avec un zéro en tete...........à+
NIET, avec un zéro au début-->meme comportement.
J'ai tenter de lire la chaine avec word$ dans la mainwin mais comme il n'y a pas d'espaces word$ m'a envoyé aux pluches, je vais tenter avec left.....je vais bien finir par le choper....ce lézard. :s




Edité par Roland Le 31/07/2012 à 14h09
____________________
Roro

   
Le 31/07/2012 à 14h31

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2199
mid$ a choppé la bestiole
Dans la chaine qui bugue au pas N°5--> 5 espaces
Dans la chaine qui bugue au pas N°8--> 8 espaces
Que faire ? remplacer using ? diable ! mais par quoi ?
D'où viens ce caractère célibataire, n'y a t-il pas moyen de lui donner de la compagnie...
____________________
Roro

   
Le 01/08/2012 à 09h37

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Et si avant tout tu faisais un bout de code pour compter les caractères de la chaine ?
Il doit y en avoir 690 (2x23x15), et en plus surveiller qu'il y ait par couple de caractère une valeur dans les clous ! c'est à dire 0 à 12 uniquement.

Voici la dernière mouture car la possibilité d'obtenir un tableau vierge dans l'éditeur (bouton 'New') m'a été demandé.

bd_jb.zip

@+
____________________
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 01/08/2012 à 11h10

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2199
Le bout de code, je l'ai fait, j'en ai meme fait plusieurs. :miam
Résultats:
La chaine qui bugue au pas N°--> 5 espaces
Celle qui bugue au pas N° 8--> 8 espaces
Nombre de caractères; correct..690. Types de caractères: correct.. 0 à 12
La question est : d'où viennent les caractères célibataires ? 5 dans un cas , 8 dans l'autre :s
Mais écoute plutot ça:
Je charge le level 03, je remplace tout ce qu'il y a prés des bords par du sable. je sauve avec le nom a3.lev.
Je charge level 04, je fais 4 pas dans le sable...
Je rapelle level a3 et ...j'ai une map remplie au 9/10ième par des billes ....VERTES ! !



Edité par Roland Le 01/08/2012 à 13h49
____________________
Roro

   
Le 01/08/2012 à 13h51

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Je suppose que tu as maintenant compris comment l'enregistrement des niveaux fonctionne.
Il ne doit pas pouvoir y avoir plusieurs espaces qui se suivent.
Même une cellule à 0 produit " 0"
Au pire tu remplaces à la main dans le fichier un espace sur 2 par un chiffre qui va bien.

@+



Edité par cassiope01 Le 01/08/2012 à 13h53
____________________
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 02/08/2012 à 11h05

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2199
Aucune manipulation sur la chaine n'apporte de remède. Il reste cette solution :
remplacement de: 0 1 2 3 4.....12, par: 10 11 12 13......22
Comme ça 2 chiffres partout, et plus de problèmes.
Est-ce envisageable ?
____________________
Roro

   

 |  |

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