Forum Liberty Basic France

Général » Chaîne Réaction qui va nous donner du fil à retordre
Le 07/06/2012 à 17h48

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2252
Ca marche...de plus en plus mieux.
Je mets le résultat final ici pour les pressés (c'est du "cassiope"):
http://libertybasic.fr/upload/chainreaction.bas
Le jeu consistait en ceci; Chaque case peut contenir au maximum un nombre de pions égal au nombre de case qui l'entourent (2 pour les cases des coins, 3 pour les cases des cotés, 4, pour les cases centrales). une couleur "ordi", une couleur "joueur"
Le joueur et l'ordi peuvent mettre des pions dans n'importe quelle case. Quand la case est pleine, elle explose en se vidant de ses pions, qu'elle réparti dans les cases voisines, en mangeant les pions de l'adversaire qui s'y trouvent.

Je vais essayer de mettre en " tout souris "

Code JB :
 
 
  nomainwin
    NbXmax = 4  'nombre de case en X
    NbYmax = 4  'nombre de case en Y  (pas utile si la grille est carré ;) )
    dc = 53  'dimension d'une case en pixels
    MapWidth = NbXmax*dc
    MapHeight = NbYmax*dc
    WindowWidth = MapWidth+125
    WindowHeight = MapHeight+140
    UpperLeftX = (DisplayWidth-WindowWidth) / 3
    UpperLeftY = (DisplayHeight-WindowHeight) / 2
 
    ncx = int(MapWidth/dc)  'nb of X cells
    ncy = int(MapHeight/dc) 'nb of Y cells
    dim cell(ncx,ncy)
    statictext #w.txt "",10,12,280,25
    BUTTON #w.grid, "Grid", [grid], UL, WindowWidth-60, 40, 50, 25
    BUTTON #w.go, "Start", [start], UL, WindowWidth-60, 70, 50, 25
    BUTTON #w.go, "Go", [go], UL, WindowWidth-60, 100, 50, 25
    TEXTBOX #w.mess, 5, 260, 220, 25
    TEXTBOX #w.rep, 230, 260, 25, 25
    TEXTBOX #w.x, 260, 255, 25, 25
    TEXTBOX #w.y, 289, 255, 25, 25
     statictext #w "Joueur Violet", 240, 190, 90, 20
     statictext #w "Ordi Rouge", 250, 215, 80, 20
     statictext #w.tx "X", 270, 235, 20, 20
     statictext #w.ty "Y", 295, 235, 20, 20
    statictext #w.rp "Reponse ^^ --> Go", 178, 290, 150, 25
 
    graphicbox #w.map, 5, 40, MapWidth, MapHeight
    open "    TEST GRID Coord..." for graphics_nf_nsb as #w
    #w "trapclose [quit]"
    [new]
    #w.map "down; fill black"
    #w.map "backcolor lightgray; color yellow"'
    #w.map "when mouseMove [coord]"
   ' #w.map "when leftButtonDown [Mark]"
 
      '  ini ----------------------------------------------------
PRINT #w.mess, ""
    dim b(6,6): dim c(4,4): dim d(4,4): dim e(4,4): dim f(4,4)
    dim z$(3): k=4
    x0=0: y0=0
    z$(1)= "backcolor  126 0 200" 'Violet joueur
    z$(2)= "backcolor 255 62 62" 'rouge
    z$(3)= "backcolor lightgray"
 
    goto [grid]
    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]
 
    '[Mark]
   ' print #w.map,z$(p)
   '  #w.map "place ";xx*dc;" ";yy*dc;"; boxfilled ";xx*dc+dc;" ";yy*dc+dc
   '       ICI RENDRE LA MAIN A L'ORDI (quand entrée souris au point)
  wait
 
    [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 ncy
            #w.map "place 0 ";y*dc;"; goto ";MapWidth;" ";y*dc
        next
        for x=1 to ncx
            #w.map "place ";x*dc;" 0; goto ";x*dc;" ";MapHeight
        next
        #w.map "flush; discard"
    return
 
 wait
   'ça commence ici**********************************************
  [start]
   goto [aaa8000]
  [aaa100]
    gosub [aaa3000]
  [aaa105]
    gosub [aaa2000]
  [aaa110]
    i=0
    for y= 1 to k
      for x=1 to k
        gosub [aaa500]
        if a > b(x,y) then goto [aaa170]
        if pl=1 then
        'print at x0+xk*x,y0+yk*y;" ";
         xx=x-1: yy=y-1
        print #w.map,z$(3)  'vide cases   '+++++++++++++++++++++++++++++++++
        #w.map "place ";xx*dc;" ";yy*dc;"; boxfilled ";xx*dc+dc;" ";yy*dc+dc
      end if
      gosub [aaa1000]
      if u=0 then return
  [aaa170]
    next x
    next y
    if i=1 then goto [aaa110]
    gosub [aaa1500]
    return
  [aaa500]
    if x <> 1 AND x <> k AND y <> 1 and y <> k then a=4: return
    if x=y or x+y=k+1 then
      a=2: return
    end if
    a=3: return
  [aaa1000]
    if y=k then goto [aaa1040]
    b(x,y+1)=b(x,y+1)+1
    d(x,y+1)=1
    if pl=1 then
    'print at x0+xk*x,y0+yk*(y+1); paper z(p);b(x,y+1)
     xx=x-1: yy=(y+1)-1
    print #w.map,z$(p)   '++++++++++++++++++++++++++++++++++++++++++++++++++
     #w.map "place ";xx*dc;" ";yy*dc;"; boxfilled ";xx*dc+dc;" ";yy*dc+dc
      #w.map "place ";xx*dc+dc/2;" ";yy*dc+dc/2
      bb=b(x,y+1)
      #w.map "color white"
      print #w.map, "\";bb
    end if
  [aaa1040]
    if y=1 then goto [aaa1080]
    b(x,y-1)=b(x,y-1)+1
    d(x,y-1)=1
    if pl=1 then
    'print at x0+xk*x,y0+yk*(y-1);paper z(p);b(x,y-1)
     xx=x-1: yy=(y-1)-1
    print #w.map,z$(p)   '++++++++++++++++++++++++++++++++++++++++++++++++++
    #w.map "place ";xx*dc;" ";yy*dc;"; boxfilled ";xx*dc+dc;" ";yy*dc+dc
    #w.map "place ";xx*dc+dc/2;" ";yy*dc+dc/2
    bb=b(x,y-1)
    #w.map "color white"
    print #w.map, "\";bb
    end if
  [aaa1080]
    if x=k then goto [aaa1120]
    b(x+1,y)=b(x+1,y)+1
    d(x+1,y)=1
    if pl=1 then
    'print at x0+xk*(x+1),y0+yk*y;paper z(p);b(x+1,y)
     xx=(x+1)-1: yy=y-1
    print #w.map,z$(p)   '++++++++++++++++++++++++++++++++++++++++++++++++++
    #w.map "place ";xx*dc;" ";yy*dc;"; boxfilled ";xx*dc+dc;" ";yy*dc+dc
    #w.map "place ";xx*dc+dc/2;" ";yy*dc+dc/2
    bb=b(x+1,y)
    #w.map "color white"
    print #w.map, "\";bb
    end if
  [aaa1120]
    if x=1 then goto [aaa1160]
    b(x-1,y)=b(x-1,y)+1
    d(x-1,y)=1
  [aaa1150]
    if pl=1 then
    'print at x0+xk*(x-1),y0+yk*y;paper z(p);b(x-1,y);
     xx=(x-1)-1: yy=y-1
    print #w.map,z$(p)   '++++++++++++++++++++++++++++++++++++++++++++++++++
    #w.map "place ";xx*dc;" ";yy*dc;"; boxfilled ";xx*dc+dc;" ";yy*dc+dc
    #w.map "place ";xx*dc+dc/2;" ";yy*dc+dc/2
    bb=b(x-1,y)
    #w.map "color white"
    print #w.map, "\";bb
    end if
  [aaa1160]
    i=1:b(x,y)=0
    e(x,y)=e(x,y)+1
  [aaa1180]
    gosub [aaa2300]
    return
  [aaa1500]
    for m=1 to k
      for n=1 to k
        if e(m,n) <> 0 or d(m,n)=1 then c(m,n)=b(m,n)*t
      next n
    next m
    return
  [aaa2000]
    for m=1 to k
      for n=1 to k
        b(m,n)= abs(c(m,n))
      next n
    next m
    return
  [aaa2300]
    u=0
    for m=1 to k
      for n=1 to k
        if e(m,n)<3 then u=1: m=k: n=k
      next n
    next m
    if u=0 and pl=1 then goto [aaa9500]
    return
  [aaa3000]
    for m=1 to k
      for n=1 to k
        c(m,n)=f(m,n)
      next n
    next m
    return
  [aaa4000]
    for m=1 to k
      for n=1 to k
        f(m,n)=c(m,n)
      next n
    next m
    return
 [aaa5000]
   so=0
   for x=1 to k
     for y=1 to k
       so=so+c(x,y)
       gosub [aaa500]
       if c(x,y) <> a-1 then goto [aaa5170]
       so=so-2
       if x=k then goto [aaa5080]
       x=x+1
       gosub [aaa500]
       x=x-1
       if c(x+1,y)=a-1 then so=so+10
  [aaa5080]
    if x=1 then goto [aaa5110]
    x=x-1
    gosub [aaa500]
    x=x+1
    if c(x-1,y)=a-1 then so=so+10
  [aaa5110]
    if k=y then goto [aaa5140]
    y=y+1
    gosub [aaa500]
    y=y-1
    if c(x,y+1)=a-1 then so=so+10
  [aaa5140]
    if y=1 then goto [aaa5170]
    y=y-1
    gosub [aaa500]
    y=y+1
    if c(x,y-1)=a-1 then so=so+10
  [aaa5170]
    next y
    next x
    return
  [aaa7000]
    for m=1 to k
      for n=1 to k
        d(m,n)=0: e(m,n)=0
      next n
    next m
    return
  [aaa8000]
    dnr=int((rnd(1)*5) + 1)/10
    redim b(6,6): redim c(4,4): redim d(4,4): redim e(4,4)
    redim f(4,4)
    k=4: gosub [aaa7000]
    for m=1 to 4
      for n=1 to 4
        f(m,n)=0
      next n
    next m
    x0=4: xk=2: y0=11: yk=2
    xp=8*y0+12: yp=175-(8*x0+12)
    z$(1)= "backcolor 126 0 200" 'joueur violet
    z$(2)= "backcolor 255 62 62" 'ordi rouge
    z$(3)= "backcolor lightgray"'     couleur===================
  [aaa8200]
    k= 4   'val(k$)
  [aaa8400]
    print #w.mess, "Qui débute ordi (O) joueur (J) ? >"   'DEBUT...DEBUT...DEBUT
  wait
  [go]
    print #w.rep, "!contents? var$"
    b$ = var$
    if b$="J" or b$="j" then goto [aaa8600]
    if b$ = "O" or b$ = "o" then goto [aaa8800]
  wait
  [aaa8600]
     PRINT #w, "PLACE 5 300"  ' Entrée X façon Amstrad
PRINT #w, "\Entrez X au CLAVIER"
PRINT #w, "when characterInput [inputed1]"
[loop1]
    print #w, "setfocus"
    scan
    goto [loop1]
 [inputed1]
    key$ = Inkey$
    g=val(key$)
    if g<>1 and g<>2 and g<>3 and g<>4 then goto [loop1]
    print #w.x, str$(g)
 
      PRINT #w, "PLACE 5 300"     ' Entrée Y façon Amstrad
PRINT #w, "\au CLAVIER Entrez Y "
PRINT #w, "when characterInput [inputed2]"
[loop2]
    scan
    goto [loop2]
 [inputed2]
    key$ = Inkey$
    h=val(key$)
    if h<>1 and h<>2 and h<>3 and h<>4 then goto [loop2]
     print #w.y, str$(h)
       '""""""""""""""""""""""""""""""""""""""""""""""Premier coup Joueur
    f(g,h)=f(g,h)+1: t=1: p=1: pl=1
    gosub [aaa9900]
    gosub [paus]
    gosub [aaa100]
    gosub [aaa7000]
    gosub [aaa4000]
  [aaa8800]
    t=-1: p=2: pl=0
   ' print #w.mess, "c'est a moi!"
    print #w.rep, ""
    '#w.map "when leftButtonDown"  'désactive mouse
    st=1000
    for q=1 to k
      for w=1 to k
        if f(q,w)>0 then goto [aaa8930]
        gosub [aaa3000]
        c(q,w)=c(q,w)-1
        gosub [aaa105]
        gosub [aaa7000]
        gosub [aaa5000]
        if so<st then st=so: v=q: z=w: goto [aaa8930]
        if so <> st then goto [aaa8930]
        if dnr > 0.5 then st=so: v=q: z=w  'si > 0.5 boucle infinie à voir
  [aaa8930]
      next w
    next q
   '''print at 18,14;"X: "; v;  '$$$$$$$$$$$$$$$
   '''print at 19,14;"Y: "; z;  '$$$$$$$$$$$$$$$
    gosub [aaa3000]
    f(v,z)=f(v,z)-1
    g=v: h=z:gosub [aaa9900]
    pl=1: gosub [aaa100]
    gosub [aaa7000]
    gosub [aaa4000]
    gosub [aaa8600]
  [aaa9500]
     if t=1 then
     print #w.mess, "bravo! on rejoue o/n)"
  wait
     end if
     print #w.mess, "perdu! on rejoue o/n)"
  wait
  [aaa9900]
    'print at x0+xk*g,y0+yk*h;paper z(p);abs( f(g,h)
    xx=g-1: yy=h-1
    print #w.map,z$(p)   '+++++++++++++++++++++++++++++++++++++++++++++++++
    #w.map "place ";xx*dc;" ";yy*dc;"; boxfilled ";xx*dc+dc;" ";yy*dc+dc
    #w.map "place ";xx*dc+dc/2;" ";yy*dc+dc/2
    bb=abs( f(g,h))
    #w.map "color white"
    print #w.map, "\";bb
    return
  wait
       'ça fini là-------------------------------------------------
 [infos]
        #w.txt "pixels : ";MouseX;" / ";MouseY;_
        "         Cell ( ";mX+1;" , ";mY+1;" )"
 return
 
    [paus]
        timer 500, [temps]
        wait
        [temps]
        timer 0
    return
 
 [quit]
   close #w
   end
   wait
 
 




Edité par Roland Le 12/06/2012 à 22h25
____________________
Roro

   
Le 13/06/2012 à 23h09

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:
Le jeu consistait en ceci; Chaque case peut contenir au maximum un nombre de pions égal au nombre de case qui l'entourent (2 pour les cases des coins, 3 pour les cases des cotés, 4, pour les cases centrales). une couleur "ordi", une couleur "joueur"
Le joueur et l'ordi peuvent mettre des pions dans n'importe quelle case. Quand la case est pleine, elle explose en se vidant de ses pions, qu'elle réparti dans les cases voisines, en mangeant les pions de l'adversaire qui s'y trouvent.


En suivant ces explications, je trouve le jeu en lui-même assez bizarre, mais le coder représente un sacré défi puisqu'à mon avis il oblige à utiliser la récursivité.

Code VB :
'  http://libertybasic.fr/forum/topic-135-1-0-1352+un-code-spaghetti.php#go_bottom
'  by cassiope01  Juin 13 2012

    nomainwin
 
    GLOBAL player, dc, offset
 
    ncx = 10    ' nbr of cells X
    ncy = 10    ' nbr of cells Y
    dc = 50     ' size of a cell in pixels
    MapWidth = ncx*dc+int(dc/ncx)
    MapHeight = ncy*dc+int(dc/ncy)
 
    WindowWidth  = MapWidth + 15
    WindowHeight = MapHeight + 75
    UpperLeftX = (DisplayWidth-WindowWidth) / 3
    UpperLeftY = (DisplayHeight-WindowHeight) / 2
 
    mois$ = "Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre"
    today$ = date$("mm/dd/yyyy")
    j = date$(today$)
    jsem$ = word$("Mardi Mercredi Jeudi x Vendredi Samedi x Dimanche Lundi",int((j/7-int(j/7))*10)+1)
    date$ = jsem$+" "+mid$(today$,4,2)+" "+word$(mois$, val(today$))+" "+right$(today$,4)+"  "+left$(time$(),5)
 
    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

    fcl$ = "26 72 43"  'vert foncé
    ft$ = "Courier_New 20 bold"
    dim cell(ncx,ncy)           ' -1, 0, 1, 2 ou 3  (à 4 maxi elle explose )
    dim XY.cell$(ncx,ncy)       ' ses coordonnées "xx,yy" donc limite à 99 x 99
    dim arround.cell$(ncx,ncy)  '"xxyy xxyy xxyy xxyy" coordonnées des 4 (maxi) cases voisines
    dim arround.cell(ncx,ncy)   ' combien elle a de cases voisines
    dim player.cell(ncx,ncy)    ' 0, 1 ou 2   a quel joueur elle appartient en ce moment
    dim color.cell$(2)          ' 0 = couleur neutre, 1 = couleur joueur1, 2 = couleur joueur2
    player = 1
    color.cell$(0) = "darkgreen"
    color.cell$(1) = "blue"
    color.cell$(2) = "red"
    offset = int(dc/(ncx+1))
 
    statictext #w.txt "",10,12,MapWidth,20
    graphicbox #w.map, 5, 40, MapWidth, MapHeight
    OPEN "    CHAIN REACTION... "+space$(15)+date$ for window_nf as #w  'graphics_nf_nsb
    #w "trapclose [quit]"
 
    #w.map "down; fill ";fcl$
    #w.map "font ";ft$
 
    gosub [initGame]
 
   ' #w.map "when mouseMove [coord]"        ' MouseX, MouseY pixels
    #w.map "when leftButtonDown [Mark]"    ' x,y cell

 
    wait
 
    [coord]
        mX = int((MouseX-offset)/dc)+1
        mY = int((MouseY-offset)/dc)+1
        gosub [infos]
    wait
 
    [Mark]
        if cell(mX,mY) > -1 then  'exist in the gameboard
            playerOpp = player + 1 -2 * (player = 2)
            if player.cell(mX,mY) <> playerOpp then
                player.cell(mX,mY) = player  ' player is the new owner
                cell(mX,mY) = cell(mX,mY) + 1
                if cell(mX,mY) = arround.cell(mX,mY) then
                    chaine$ = XY.cell$(mX,mY)
                    gosub [recurse]
                else
                    call dispCell mX,mY
                end if
                #w.map "flush ; discard"
                if FIN then
                    CONFIRM "Player "+color.cell$(FIN)+" WIN !! "+chr$(13)+chr$(13)+" NEW GAME ?"; answer$
                    if answer$ = "yes" then gosub [initGame] else [quit]
                end if
                player = player + 1 -2 * (player = 2)   ' change player
            end if
        end if
    wait
 
    [recurse]   ' recursivity ?????
        if chaine$ <> "" and FIN = 0 then
            cx = val(left$(chaine$,2))
            cy = val(mid$(chaine$,3,2))
            cell(cx,cy) = 0   ' explode...
            player.cell(cx,cy) = 0  ' become neutral
            call dispCell cx,cy
            chaine$ = mid$(chaine$,5)  ' retrait de cette cell de la chaine$...
            for n = 1 to 4         ' explode arround... by reading arround.cell$(mX,mY)
                nx =  val(left$(word$(arround.cell$(cx,cy),n),2))
                ny = val(right$(word$(arround.cell$(cx,cy),n),2))
                if nx > 0 then  ' if neighbor ok
                    player.cell(nx,ny) = player
                    call dispCell nx,ny
                    cell(nx,ny) = cell(nx,ny) + 1
                    if cell(nx,ny) = arround.cell(nx,ny) then
                        chaine$ = chaine$ + XY.cell$(nx,ny)
                    else
                        call dispCell nx,ny
                    end if
                end if
            next n
            gosub [testFin]
            if chaine$ = "" or FIN > 0 then return
            gosub [recurse]   ' call itself
        end if
    return
 
    [testFin]
        j1=0 : j2=0
        for y=1 to ncy
            for x=1 to ncy
                if cell(x,y) > -1 then
                    select case player.cell(x,y)
                    case 1 : j1 = j1 + 1
                    case 2 : j2 = j2 + 1
                    end select
                end if
            next
        next
        if j1=0 then FIN = 2
        if j2=0 then FIN = 1
    return
 
    sub dispCell cx,cy  ' draw the square cell(cx,cy) at the color of player.cell(cx,cy)
        #w.map "backcolor ";color.cell$(player.cell(cx,cy));" ; color ";color.cell$(player.cell(cx,cy))
        #w.map "place ";offset+(cx-1)*dc;" ";offset+(cy-1)*dc;"; boxfilled ";cx*dc;" ";cy*dc
        if cell(cx,cy) > 0 then
            #w.map "color yellow"
            #w.map "place ";offset+(cx-1)*dc+16;" ";offset+(cy-1)*dc+32;";|";cell(cx,cy)
        end if
    end sub
 
    [initGame]
        FIN = 0
        restore [game3]
        redim cell(ncx,ncy)           ' -1, 0, 1, 2 ou 3  (à 4 maxi elle explose )
        redim XY.cell$(ncx,ncy)       ' ses coordonnées "xx,yy" donc limite à 99 x 99
        redim arround.cell$(ncx,ncy)  '"xxyy xxyy xxyy xxyy" coordonnées des 4 (maxi) cases voisines
        redim arround.cell(ncx,ncy)   ' combien elle a de cases voisines
        redim player.cell(ncx,ncy)    ' 0, 1 ou 2   a quel joueur elle appartient en ce moment
        for y = 1 to ncy   ' drawing gameboard
            for x = 1 to ncx
                read val : cell(x,y) = val-1  'read gameboard form
                if cell(x,y) > -1 then
                    #w.map "backcolor ";color.cell$(0);" ; color ";color.cell$(0)
                    #w.map "place ";offset+(x-1)*dc;" ";offset+(y-1)*dc
                    #w.map "boxfilled ";x*dc;" ";y*dc
                    XY.cell$(x,y) = right$(str$(100+x),2)+right$(str$(100+y),2)
                    player.cell(x,y) = 0
                end if
            next x
        next y
        ' init of arround.cell$(x,y) and arround.cell(x,y)
        for y = 1 to ncy
            for x = 1 to ncx
                if cell(x,y) > -1 then  'exist on the gameboard
                    for n=1 to 4      ' arround clockwise
                        anX = x+dirX(n) : anY = y+dirY(n) : neighbor$ = " 0000"
                        if anX>0 and anY>0 and anX<=ncx and anY<=ncy then   'if into the gameboard
                            if cell(anX,anY) > -1 then
                                neighbor$ = " " + XY.cell$(anX,anY)
                                arround.cell(x,y) = arround.cell(x,y) + 1
                            end if
                        end if
                        arround.cell$(x,y) = arround.cell$(x,y) + neighbor$
                    next n
                end if
            next x
        next y
    return
 
    [infos]
        #w.txt "  Cell ( ";mX;" , ";mY;" ) = ";cell(mX,mY);_
               "   Owner = player ";player.cell(mX,mY);_
               "      CURRENT PLAYER = ";player
       ' #w.txt "pixels : ";MouseX;" / ";MouseY;_
       ' "      Cell ( ";mX;" , ";mY;" ) = ";cell(mX,mY);_
       ' "    arround.cell$ ( ";mX;" , ";mY;" ) = ";arround.cell$(mX,mY);_
       ' "   (";arround.cell(mX,mY);")   PLAYER = ";player
    return
 
    [quit]
        close #w
        end
    wait
 
 
    ' 10 x 10  ( same as ncx,ncy )

    [game1]
    data 0,0,1,1,1,1,1,1,0,0
    data 0,1,1,1,1,1,1,1,1,0
    data 1,1,1,1,1,1,1,1,1,1
    data 1,1,1,1,1,1,1,1,1,1
    data 0,0,1,1,1,1,1,1,0,0
    data 0,0,1,1,1,1,1,1,0,0
    data 1,1,1,1,1,1,1,1,1,1
    data 1,1,1,1,1,1,1,1,1,1
    data 0,1,1,1,1,1,1,1,1,0
    data 0,0,1,1,1,1,1,1,0,0
    [game2]
    data 0,0,0,0,0,0,0,0,0,0
    data 0,0,0,0,0,0,0,0,0,0
    data 0,0,0,0,0,0,0,0,0,0
    data 0,0,0,1,1,1,1,0,0,0
    data 0,0,0,1,1,1,1,0,0,0
    data 0,0,0,1,1,1,1,0,0,0
    data 0,0,0,1,1,1,1,0,0,0
    data 0,0,0,0,0,0,0,0,0,0
    data 0,0,0,0,0,0,0,0,0,0
    data 0,0,0,0,0,0,0,0,0,0
    [game3]
    data 0,0,0,0,0,0,0,0,0,0
    data 0,1,1,0,0,0,0,1,1,0
    data 0,1,1,1,0,0,1,1,1,0
    data 0,0,1,1,1,1,1,1,0,0
    data 0,0,0,1,1,1,1,0,0,0
    data 0,0,0,1,1,1,1,0,0,0
    data 0,0,1,1,1,1,1,1,0,0
    data 0,1,1,1,0,0,1,1,1,0
    data 0,1,1,0,0,0,0,1,1,0
    data 0,0,0,0,0,0,0,0,0,0
 




Edité par cassiope01 Le 14/06/2012 à 12h47
____________________
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 14/06/2012 à 12h16

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2252
Magnifique !.... Et à tomber !...comme d'hab'... :top :top :top ...Pour inclure l'IA "Sinclair" là dedans:...Bonjour.!...! :heink
J'ai vérifié le code "Sinclair" plusieurs fois
J'ai chopé plusieurs simulateurs "Spectrum" pour vérifier la validité du code, mais je n'en ai rien tiré. Je vais réessayer. :gre
Il y a un bug que j'aimerais bien débusquer
Je vais reprendre la première ébauche, en sortant les données aux endroits stratégiques, avec des compteurs de passage ( une sorte de débuggeur intégré )
J'ai lu ton code une fois........Et je suis allé tondre !!!... Je vais le laisser un peu refroidir avant de m'approcher.. :miam :miam
____________________
Roro

   
Le 14/06/2012 à 12h45

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
La question est plutôt : Est-ce que j'ai bien respecté le cahier des charges ?

Par exemple je ne savais pas si une cellule qui explose redevient neutre puisqu'elle contient zéro, ou bien si elle continue à appartenir au joueur qui l'a faite exploser ?!

Mais sinon c'est juste une utilisation un peu judicieuse de variables.

Mais je ne suis pas encore absolument sûr que la récurcivité est parfaitement au point...!

J'ai fait en sorte que la fin soit détectée quand un joueur a éradiqué toutes les cases de la couleur adverse, et non quand le joueur adverse ne peut plus jouer, car sinon j'ai une boucle sans fin sans être sûr que cela vient de ma procédure récursive !!
Mais je trouve ça mieux ;)

Faut trouver un juste milieu entre la quantité de cases, la forme du terrain de jeu, etc...

Pour l'AI c'est tout à fait faisable, mais sans aller trop loin !

@+



Edité par cassiope01 Le 14/06/2012 à 12h46
____________________
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 14/06/2012 à 14h25

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2252
La case vide doit devenir neutre, puisque j'ai ajouté une couleur (gris neutre) et que le code s'en sert.
Pour l'IA, (à première vue), je pense que l'ordi fait son jeu sans s'occuper de l'adversaire. ( ce qui n'est pas à proprement parler une véritable IA )
si tu mets une IA, il serait bien de conserver la possibilité de tenir les deux roles. Mais il y a toujours cette version pour cela.
La forme du terrain est assez originale..... P........n ! ..Les data's....Vraiment...tu Déchire ! :top
____________________
Roro

   
Le 14/06/2012 à 14h58

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
En plus tu as compris comment créer toi-même un nouveau terrain grâce aux DATA ! ;)

Cependant pas plus de 10 x 10, sinon il faut changer plus de choses que les 1 et les 0.

C'est pas moi qui déchire, c'est JB ! ;)

Je vais peut-être voir ce qu'en penses les anglais !?


PS: dans le jeu original, la fin du jeu c'était quand ?


@+



Edité par cassiope01 Le 14/06/2012 à 15h01
____________________
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 14/06/2012 à 19h35

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2252
Ca se termine par : if t=1 (sec), ( je présume que) si le joueur rempli toutes les cases, il a gagné, sinon il a perdu...LoL ...;Tu te rappelle comment finissaient les jeux...Toi ?...y'a trente ans. ;)
les améranglais, pour le nombre qu'ils sont, je les trouve pas trés vivaces.... et ceux de LB encore moins....
Vas-y, ça les réveillera... ;)
____________________
Roro

   
Le 14/06/2012 à 19h57

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Revu et corrigé ;)

Code VB :
'  http://libertybasic.fr/forum/topic-135-1-0-1352+un-code-spaghetti.php#go_bottom
'  by cassiope01  Juin 2012
'  my first prog with recurcivity (starting from nothing ! )

    nomainwin
 
    GLOBAL FIN, fcl$, ft$, player, dc, offset, ncx, ncy, currentGame
 
    ncx = 10    ' nbr of cells X
    ncy = 10    ' nbr of cells Y
    dc = 50     ' size of a cell in pixels
    MapWidth = ncx*dc+int(dc/ncx)
    MapHeight = ncy*dc+int(dc/ncy)
 
    WindowWidth  = MapWidth + 15
    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)
 
    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
    fcl$ = "26 72 43"  'vert foncé
    ft$ = "Courier_New 20 bold"
    dim cell(ncx,ncy)           ' -1, 0, 1, 2 or 3  (at 4 maxi it explode )
    dim XY.cell$(ncx,ncy)       ' it's coord. "xxyy" , so limited at 99 x 99
    dim arround.cell$(ncx,ncy)  ' "xxyy xxyy xxyy xxyy" coord. of it's 4 (maxi) neighbors cells
    dim arround.cell(ncx,ncy)   ' how many neighbors cells
    dim player.cell(ncx,ncy)    ' 0, 1 or 2      owner at instant
    dim color.cell$(2)          ' 0 = color neutral, 1 = color player1, 2 = color player2
    player = 1
    color.cell$(0) = "darkgreen"
    color.cell$(1) = "blue"
    color.cell$(2) = "red"
    offset = int(dc/(ncx+1))
 
    statictext #w.txt "",5,10,MapWidth-120,25
    button #w.g1, "1", game, UL, MapWidth-110, 8 , 25, 25
    button #w.g2, "2", game, UL, MapWidth-80, 8 , 25, 25
    button #w.g3, "3", game, UL, MapWidth-50, 8 , 25, 25
    button #w.g4, "4", game, UL, MapWidth-20, 8 , 25, 25
    graphicbox #w.map, 5, 40, MapWidth, MapHeight
    OPEN "    CHAIN REACTION... "+space$(15)+date$ for window_nf as #w  'graphics_nf_nsb
    #w "trapclose [quit]"
    #w.map "down; font ";ft$
    currentGame = 1
    call initGame
 
    #w.map "when mouseMove [coord]"        ' MouseX, MouseY pixels
    #w.map "when leftButtonDown [Mark]"    ' x,y cell

    wait
 
    sub game handle$
        confirm "Quit this game ?";answ$
        if answ$="yes" then
            currentGame = val(right$(handle$,1))
            call initGame
        end if
    end sub
 
    [coord]
        mX = int((MouseX-offset)/dc)+1
        mY = int((MouseY-offset)/dc)+1
        gosub [infos]
    wait
 
    [Mark]   ' click on a cell
        if cell(mX,mY) > -1 then  'if exist in the gameboard
            playerOpp = player + 1 -2 * (player = 2)
            if player.cell(mX,mY) <> playerOpp then
                player.cell(mX,mY) = player  ' player is the new owner
                cell(mX,mY) = cell(mX,mY) + 1
                if cell(mX,mY) = arround.cell(mX,mY) then
                    chain$ = XY.cell$(mX,mY)   ' string of cells that must explode
                    gosub [recurse]
                else
                    call dispCell mX,mY
                end if
                #w.map "flush ; discard"
                if FIN then
                    CONFIRM "Player  "+upper$(color.cell$(FIN))+"  WIN !! "+chr$(13)+chr$(13)+" NEW GAME ?"; answer$
                    if answer$ = "yes" then call initGame else [quit]
                end if
                player = player + 1 -2 * (player = 2)   ' change player
            end if
        end if
    wait
 
    [recurse]   ' recursivity ?????
        if chain$ <> "" and FIN = 0 then
            cx = val(left$(chain$,2))  ' always the first cell of chain$
            cy = val(mid$(chain$,3,2))
            cell(cx,cy) = 0   ' explode...
            player.cell(cx,cy) = 0  ' become neutral
            call dispCell cx,cy
            chain$ = mid$(chain$,5)  ' retrait of this cell from chain$...
            for n = 1 to 4         ' explode arround... by reading arround.cell$(mX,mY)
                nx =  val(left$(word$(arround.cell$(cx,cy),n),2))
                ny = val(right$(word$(arround.cell$(cx,cy),n),2))
                if nx > 0 then  ' if it's a valid neighbor
                    player.cell(nx,ny) = player
                    cell(nx,ny) = cell(nx,ny) + 1
                    if cell(nx,ny) = arround.cell(nx,ny) then
                        chain$ = chain$ + XY.cell$(nx,ny)   ' add to the string of cells that must explode
                    end if
                    call dispCell nx,ny
                end if
            next n
            gosub [testFin]
            if chain$ = "" or FIN > 0 then return
            gosub [recurse]   ' call itself
        end if
    return
 
    [testFin]
        redim j(2)
        for y=1 to ncy
            for x=1 to ncy
                if cell(x,y) > -1 then
                    j(player.cell(x,y)) = j(player.cell(x,y)) + 1
                end if
            next
        next
       ' if j(1)=0 and j(0)=0 and j(2)>1 then FIN = 2  ' no neutral cells rest
       ' if j(2)=0 and j(0)=0 and j(1)>1 then FIN = 1
        if j(1)=0 and j(2)>1 then FIN = 2    ' only if there's no cells of one of players.
        if j(2)=0 and j(1)>1 then FIN = 1
    return
 
    sub dispCell cx,cy  ' draw the square cell(cx,cy) at the color of player.cell(cx,cy)
        #w.map "backcolor ";color.cell$(player.cell(cx,cy));" ; color ";color.cell$(player.cell(cx,cy))
        #w.map "place ";offset+(cx-1)*dc;" ";offset+(cy-1)*dc;"; boxfilled ";cx*dc;" ";cy*dc
        if cell(cx,cy) > 0 then
            #w.map "color yellow"
            #w.map "place ";offset+(cx-1)*dc+16;" ";offset+(cy-1)*dc+32;";|";cell(cx,cy)
        end if
    end sub
 
    sub initGame
        FIN = 0
        select case currentGame
        case 1 : restore [game1]
        case 2 : restore [game2]
        case 3 : restore [game3]
        case 4 : restore [game4]
        end select
        redim cell(ncx,ncy)           ' -1, 0, 1, 2 or 3  (at 4 maxi it explode )  (-1 = out of this gameboard)
        redim XY.cell$(ncx,ncy)       ' it's coord. "xx,yy" so limited to 99 x 99
        redim arround.cell$(ncx,ncy)  '"xxyy xxyy xxyy xxyy" coord. of 4 (maxi) neighbor cells
        redim arround.cell(ncx,ncy)   ' how many neighbor cells
        redim player.cell(ncx,ncy)    ' 0, 1 or 2   owner at instant
        #w.map "fill ";fcl$ 
        for y = 1 to ncy   ' drawing gameboard
            for x = 1 to ncx
                read val : cell(x,y) = val-1  'read gameboard form
                if cell(x,y) > -1 then
                    #w.map "backcolor ";color.cell$(0);" ; color ";color.cell$(0)
                    #w.map "place ";offset+(x-1)*dc;" ";offset+(y-1)*dc
                    #w.map "boxfilled ";x*dc;" ";y*dc
                    XY.cell$(x,y) = right$(str$(100+x),2)+right$(str$(100+y),2)
                    player.cell(x,y) = 0
                end if
            next x
        next y
        #w.map "flush ; discard"
        ' init of arround.cell$(x,y) and arround.cell(x,y)
        for y = 1 to ncy
            for x = 1 to ncx
                if cell(x,y) > -1 then  'exist on the gameboard
                    for n=1 to 4      ' arround clockwise
                        anX = x+dirX(n) : anY = y+dirY(n) : neighbor$ = " 0000"
                        if anX>0 and anY>0 and anX<=ncx and anY<=ncy then   'if into the gameboard
                            if cell(anX,anY) > -1 then
                                neighbor$ = " " + XY.cell$(anX,anY)
                                arround.cell(x,y) = arround.cell(x,y) + 1
                            end if
                        end if
                        arround.cell$(x,y) = arround.cell$(x,y) + neighbor$
                    next n
                end if
            next x
        next y
 
  ' 10 x 10  ( same as ncx,ncy )
    [game1]
    data 0,0,0,0,0,0,0,0,0,0
    data 0,0,0,0,0,0,0,0,0,0
    data 0,0,0,0,1,1,0,0,0,0
    data 0,0,0,1,1,1,1,0,0,0
    data 0,0,1,1,1,1,1,1,0,0
    data 0,0,1,1,1,1,1,1,0,0
    data 0,0,0,1,1,1,1,0,0,0
    data 0,0,0,0,1,1,0,0,0,0
    data 0,0,0,0,0,0,0,0,0,0
    data 0,0,0,0,0,0,0,0,0,0
    [game2]
    data 0,0,0,0,0,0,0,0,0,0
    data 0,1,1,0,0,0,0,1,1,0
    data 0,1,1,1,0,0,1,1,1,0
    data 0,0,1,1,1,1,1,1,0,0
    data 0,0,0,1,1,1,1,0,0,0
    data 0,0,0,1,1,1,1,0,0,0
    data 0,0,1,1,1,1,1,1,0,0
    data 0,1,1,1,0,0,1,1,1,0
    data 0,1,1,0,0,0,0,1,1,0
    data 0,0,0,0,0,0,0,0,0,0
    [game3]
    data 0,0,1,1,1,1,1,1,0,0
    data 0,1,1,1,1,1,1,1,1,0
    data 1,1,1,1,1,1,1,1,1,1
    data 1,1,1,1,1,1,1,1,1,1
    data 0,0,1,1,1,1,1,1,0,0
    data 0,0,1,1,1,1,1,1,0,0
    data 1,1,1,1,1,1,1,1,1,1
    data 1,1,1,1,1,1,1,1,1,1
    data 0,1,1,1,1,1,1,1,1,0
    data 0,0,1,1,1,1,1,1,0,0
    [game4]
    data 1,1,1,1,1,1,1,1,1,1
    data 1,1,1,1,1,1,1,1,1,1
    data 1,1,1,1,1,1,1,1,1,1
    data 1,1,1,1,1,1,1,1,1,1
    data 1,1,1,1,1,1,1,1,1,1
    data 1,1,1,1,1,1,1,1,1,1
    data 1,1,1,1,1,1,1,1,1,1
    data 1,1,1,1,1,1,1,1,1,1
    data 1,1,1,1,1,1,1,1,1,1
    data 1,1,1,1,1,1,1,1,1,1
    end sub
 
    [infos]
        #w.txt "  Cell ( ";mX;" , ";mY;" ) = ";cell(mX,mY);_
               "   Owner = player ";player.cell(mX,mY);_
               "      CURRENT PLAYER = ";player;" ( ";upper$(color.cell$(player));" ) "
       ' #w.txt "pixels : ";MouseX;" / ";MouseY;_
       ' "      Cell ( ";mX;" , ";mY;" ) = ";cell(mX,mY);_
       ' "    arround.cell$ ( ";mX;" , ";mY;" ) = ";arround.cell$(mX,mY);_
       ' "   (";arround.cell(mX,mY);")   PLAYER = ";player
    return
 
    [quit]
        close #w
        end
    wait
 




Edité par cassiope01 Le 15/06/2012 à 10h57
____________________
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 14/06/2012 à 20h30

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2252
Hey, je pense à un truc: ces améranglais, ils sont trop forts...Et dans le cadre de la lutte contre l'Alzheimer, Je crois que tu devrais leur mettre quelques apostrophes....par exemple: que le nombre de pions que contient la case ne soit plus affiché.( à l'origine le nombre n'était pas affiché,c'est pour ça qu'il n'y avait que 3X3 ou 4X4 )
Et puis on voit le temps qu'ils mettent à trouver l'arnaque... ;)
Par contre , il faudrait changer le nom...C'est plus du spaghetti.



Edité par Roland Le 14/06/2012 à 20h49
____________________
Roro

   
Le 16/06/2012 à 14h42

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Pas facile d'évaluer l'intérêt de ce jeu, mais voici la version qui joue, mais seulement en choisissant au hasard parmis les cellules qui doivent exploser, ou au hasard tout court s'il n'y en a pas.

ChainReaction.bas (click droit, puis faire "enregistrer la cible du lien sous")

La condition du choix n'est pas facile à déterminer...
- cellule qui va exploser et qui a le plus de voisines prètes à exploser,
- cellule qui va exploser et qui a le plus de cellules adverse autour d'elle,
- cellule qui atteind son seuil moins 1 et qui a le plus de cellules adverse autour d'elle,
- etc...?

@+



Edité par cassiope01 Le 16/06/2012 à 20h15
____________________
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/06/2012 à 17h38

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2252
Mais oui, c'est trés bon ça:. A sinon B sinon C ( ou l'inverse) sinon Hasard.
Et le terrain 4x4 ou 5x5 sans le contenu (joueur) pour faire travailler la mémoire.
Commente.. .Commente...Commente.......Les journaux sont hors de prix. ;)
.....gloups! comment tu fait pour que le code apparaisse comme ça.
....;.Mais c'est qu'elle est redoutable ton IA... :top :top



Edité par Roland Le 16/06/2012 à 17h47
____________________
Roro

   
Le 16/06/2012 à 20h14

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
avec sauvegarde de la partie en cours et restitution lors du prochain lancement.

ChainReaction.bas (click droit, puis faire "enregistrer la cible du lien sous")


@+

PS: même 4x4 sans savoir ce qu'elles contiennent n'est pas vraiment jouable, mais si tu y tiens tu peux modifier cette ligne dans la sub dispCell cx,cy,clign en
....
if cell(cx,cy) > 0 and currentGame>1 then
....




Edité par cassiope01 Le 16/06/2012 à 20h22
____________________
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/06/2012 à 21h15

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2252
Tu est bien dubitatif...?...Les jeux pour ordinateur, et notamment les anciens, sont en général des jeux à la con...tu avait oublié ?
J'en ai un autre, encore plus con, je le garde en réserve. Le premier qui m'embete, je le lui balance. :lol
En attendant ton code reste un super sujet d'étude et de réflexion...Je le mets dans le dossier " Best "...;
... Et en JB (accessible au petit peuple) :top :top :top
...Et aprés quelques parties..je trouve qu'il est pas mal du tout se jeu...il faut batailler sec, et rien n'est gagné d'avance.
...___...___....Appel au peuple ! ... Donnez vos avis. ;)



Edité par Roland Le 16/06/2012 à 21h47
____________________
Roro

   
Le 17/06/2012 à 11h37

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Gagner ou perdre sans vraiment le faire exprès et sans que ce soit un jeu de hasard est assez déroutant !!

Amélioration du jeu ordi...

ChainReaction.bas --> (click droit, puis faire "enregistrer la cible du lien sous")


...



Edité par cassiope01 Le 17/06/2012 à 11h38
____________________
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/06/2012 à 18h28

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2252
Que dalle ! Il faut surveiller ce que fait l'ordi...Il faut tenter de l'encercler, tout en gardant des cases éloignées de lui...Ce jeu, il est d'Enfer.. ( peut etre est-ce parce que je ne connais pas la tactique de l'ordi, mais je le trouve vraiment pas mal )
Tu devrais supprimer le premier que tu a mis chez les anglophones (tu leur dis: le joueur et l'ordi peuvent mettre des pions partout, mais dans ce code l'ordi ne joue pas. )
Comment-que-pourquoi-t-est-ce ...que quand je clique sur ton lien le code se r'amène en texte ? :heink
........Calmos..;sur l'IA...On voudrait bien gagner de temps en temps. :heink



Edité par Roland Le 17/06/2012 à 18h56
____________________
Roro

   
Le 17/06/2012 à 21h10

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Encore une petite amélioration du jeu ordi... :siffle

ChainReaction2.bas --> (click droit, puis faire "enregistrer la cible du lien sous")


...



Edité par cassiope01 Le 17/06/2012 à 21h20
____________________
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/06/2012 à 16h18

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Dernière petit modif...

chainreaction.bas ... --> (click droit, puis faire "enregistrer la cible du lien sous")

Je ne sais pas si les différents plateaux de jeu sous forme de fichiers externes serait plus intéressant !?

@+

PS: je ne sais pas pourquoi le download ça se présente sous forme de texte maintenant !? les modos ont dû modifier quelque chose...?



Edité par cassiope01 Le 18/06/2012 à 16h22
____________________
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    
Général » Chaîne Réaction qui va nous donner du fil à retordre  

 |  |

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