Forum Liberty Basic France

Jeux » Un Tour de Carte ...Sans Cartes...
Le 16/09/2012 à 20h21

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2453
Tout est dans le titre.
On n'oubliera pas que cela reste du travail artisanal.

Code JB :
 
 
    NOMAINWIN
    WindowWidth=550
    WindowHeight=465
    UpperLeftX=INT((DisplayWidth-WindowWidth)/2)
    UpperLeftY=INT((DisplayHeight-WindowHeight)/2)
 
    BUTTON #w.cli, "clic", [clic, UL, 20, 360, 30, 20
    BUTTON #w.cla, "clac", [clac], UL, 125, 360, 30, 20
    BUTTON #w.clo, "cloc", [cloc], UL, 225, 360, 30, 20
    BUTTON #w.go, "go", [go], UL, 115, 390, 50, 20
    BUTTON #w.new, "new", [new], UL, 380, 360, 40, 20
    GRAPHICBOX #w.g, 5, 5, 265, 420
    GRAPHICBOX #w.gt, 275, 5, 260, 420
 
    open "Cartes Tour N°1" FOR WINDOW AS #w
     print #w, "trapclose [quit]"  ' Le print est facultatif
  [new]
     #w.g, "down": #w.g, "fill black"
     #w.gt, "down": #w.gt, "fill darkblue"
     #w.go, "!enable"
 
     dim z(33): dim jeu(34): dim jou(32)
     a$="": b$="": c$="": d$=""
    coup=0: clic=0: clac=0: cloc=0
     x=20: y=0: yy=30
     for n=1 to 32  'on achete les cartes
        z(n)=n
     next n
 
    #w.cli, "!disable": #w.cla, "!disable": #w.clo, "!disable"
      for n=0 to 32
         #w.g, "color yellow; backcolor black"  'on présente le jeu
         #w.g, "font courier_new 18 bold"
         #w.g, "PLACE "; x; " "; y
         #w.g, "\"; z(n)
         y=y+yy
         if n > 10 and n < 12 then x=x+100: y=y-n*yy: nn=n
         if n > 21 and n < 23 then x=x+100: y=y-((n-nn)*yy)
      next n
         #w.gt, "color cyan; backcolor darkblue"
         #w.gt, "font courier_new 14 bold"
         #w.gt, "PLACE 10 50": #w.gt, "\ Voici 32 Cartes... "
         #w.gt, "PLACE 10 75": #w.gt, "\ Choisi s'en une, et"
         #w.gt, "PLACE 10 100": #w.gt, "\ stocke la dans "
         #w.gt, "PLACE 10 125": #w.gt, "\ ta vive mémoire. "
         #w.gt, "PLACE 10 180": #w.gt, "\Quand ton choix est "
         #w.gt, "PLACE 10 205": #w.gt, "\fait, Clique sur 'go'"
  wait
  [go]
    #w.go, "!disable"
    FOR y = 1 TO 32  ' on mélange
       jeu(y) = y
    NEXT
    FOR y = 1 TO 32
       tire = jeu(y)
       distr = INT(rnd(1) * 32) + 1
       jeu(y) = jeu(distr)
       jeu(distr) = tire
    NEXT
 
  [etale]           '  on distribue
      #w.cli, "!enable": #w.cla, "!enable": #w.clo, "!enable"
      #w.gt, "fill darkred"
      #w.gt, "color cyan; backcolor darkred"
      #w.gt, "PLACE 10 50": #w.gt, "\L'ordi va deviner "
      #w.gt, "PLACE 10 75": #w.gt, "\en trois coups "
      #w.gt, "PLACE 10 100": #w.gt, "\la carte choisie."
      #w.gt, "PLACE 10 150": #w.gt, "\Coup N°:"
      #w.gt, "PLACE 120 150": #w.gt, "\";coup
      #w.gt, "PLACE 10 190": #w.gt, "\Clique sur le bouton "
      #w.gt, "PLACE 10 215": #w.gt, "\sous la colonne "
      #w.gt, "PLACE 10 240": #w.gt, "\contenant ta carte"
 
     #w.g, "fill black"  ' on étale
     x=20: y=0:  yy=30: nj=1
      for n=0 to 32
         x=20: y=y+yy
         for nn=1 to 3
            if nj > 32 then exit for
            #w.g, "color yellow; backcolor black"
            #w.g, "font courier_new 18 bold"
            #w.g, "PLACE "; x; " "; y
            #w.g, "\"; jeu(nj)
            x=x+100: nj=nj+1
         next nn
      next n
       '#w.g, "flush"
 
    n=0: a$="": b$="": c$=""     '  on rammasse
     for j=1 to 32
        n=n+1
        if n > 32 then exit for
        a$=a$+str$(jeu(n))+" "
        n=n+1
        if n > 32 then exit for
        b$=b$+str$(jeu(n))+" "
        n=n+1
        if n > 32 then exit for
        c$=c$+str$(jeu(n))+" "
        if n > 32 then exit for
    next j
    if coup=3 then goto [result]
    wait
 
    [clic]
    clic=clic+1                     '  on range
    redim jeu(32)
    d$=b$+a$+c$
    for n=1 to 32
      jeu(n)=val(word$(d$,n))
    next n
    coup=coup+1
    gosub [pause]
     goto [etale]
    wait
    [clac]
    clac=clac+1
    redim jeu(32)
    d$=a$+b$+c$
    for n=1 to 32
      jeu(n)=val(word$(d$,n))
    next n
    coup=coup+1
    gosub [pause]
     goto [etale]
    wait
    [cloc]
    cloc=cloc+1
    redim jeu(32)
    d$=a$+c$+b$
    for n=1 to 32
      jeu(n)=val(word$(d$,n))
    next n
    coup=coup+1
    gosub [pause]
     goto [etale]
    wait
 
  [result]         ' le résultat
     gosub [pause]
     r=17
     if cloc=3 then r=r-1
     if clac=1 and cloc=2 then r=r-1
     if clic=1 and cloc=2 then r=r-1
     if clac=1 and clic=2 then r=r+1
     'if clic=3 then r=r+1
     #w.g, "fill black"
     #w.g, "color yellow; backcolor black"
     #w.g, "font courier_new 18 bold"
     #w.g, "PLACE 20 100": #w.g, "\La carte choisie"
     #w.g, "PLACE 20 140": #w.g, "\est le:"
     #w.g, "PLACE 100 180": #w.g, "\"; jeu(r)
  wait
 
   [pause]
    timer 500, [temps] 'en millisecondes
  wait
 [temps]
    timer 0
  return
 
  [quit]
    CLOSE #w
    END
 
 
____________________
Roro

   
Le 17/09/2012 à 10h34

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2453
NOTE: Les ajustements en fonction de clic, clac et cloc, au chapitre [result], sont empiriques.
Si un matheux passe par là, il pourrait nous expliquer de quoi il retourne.
Mais le taux de réussite reste assez élévé..

PS: Il semblerait que ce forum soit muni d'un clapet anti-retour. ( de commentaires...)
____________________
Roro

   
Le 18/09/2012 à 14h06

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Ce serait plus sympa avec des vrai cartes ;)
Si tu veux j'ai les fichiers nécessaires.

@+
____________________
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/09/2012 à 16h50

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2453
Je te remercie, je viens de les trouver dans "poker"
Je regarde si c'est dans mes cordes.......à+



Edité par Roland Le 18/09/2012 à 16h56
____________________
Roro

   
Le 18/09/2012 à 17h08

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Oui c'est celle là.
Dans Poker, j'ai aussi mis un petit code pour fabriquer le répertoire avec toutes les cartes, à partir d'un seul fichier BMP.
Bien sûr que c'est dans tes cordes maintenant ;)

@+



Edité par cassiope01 Le 18/09/2012 à 17h09
____________________
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/09/2012 à 21h02

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2453
Le tout, c'est d'arriver à délimiter "le petit code" à l'intérieur du "gros", il m'a semblé que que tu chargeais les bmp au fur et à mesure des besoins...Je poursuis l'investigation.
Ce tour ne marche qu'avec 32 cartes, et avec 2 ou 3 cas particuliers (ajustements clic clac cloc) je pense qu'avec 54, il faudrait faire 4 passes......à+
Hey ! c'est le zip qui est dans le dossier. :)
.......Boudiou !... le "petit code"......petit...mais costaud. :|



Edité par Roland Le 18/09/2012 à 21h34
____________________
Roro

   
Le 19/09/2012 à 08h24

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
T'es même pas obligé de prendre 32 cartes : Tour des 3 colonnes.

Comme dans Poker, tu pourrais distribuer les cartes en colonnes à partir du paquet... puis tu poses la question en disant de cliquer n'importe où dans une des colonnes pour la désigner (pas besoin de boutons), etc... puis tu renvois toutes les cartes sur le paquet pour les redistribuer en colonnes (tu reproduits ça 2 fois), puis la dernière fois tu fais pareil sauf la carte du joueur.
Le seul soucis c'est qu'on va vite comprendre si on lance plusieurs fois le programme puisque la carte à découvrir se trouve toujours au même endroit !!! :siffle
Remarque pour limiter ça, tu pourrais renvoyer TOUTES les cartes sur le paquet puis faire reglisser celle du joueur vers le centre de la fenêtre !!! ça ça serait plus impressionnant :top

Astuce : rappelle toi que si tu places tous les sprites au même endroit : seul le dernier sprite créé sera visible car il se trouvera toujours au dessus des autres...
Donc il te faut créer le sprite du dos des cartes en dernier, et tu n'auras donc jamais à rendre aucun sprite invisible : il suffit de les placer aux même coordonnées que celui du dos... il cachera toujours tous les autres... :top

@+



Edité par cassiope01 Le 19/09/2012 à 08h29
____________________
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/09/2012 à 10h28

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2453
Et oui, avec 27 cartes, on élimine les cas particuliers et le taux de réussite est de 100%.
J'ai élagué " poker" pour extraire la procédure de distribution. Et je suis tombé sur un truc que je ne comprend pas:
La sub deal, a deux param's: " plyer "et "view"; qui viennent de shuffle (player,1 ou 0 , qui désigne le joueur en cours )
Or dans "deal" , le param "view" n'est pas utilisé ( n'apparait pas ), et est pourtant actif . :heink
Tu n'aurais pas fais des économies dans ce coin là ?
Super le lien. :top Je tentais de me remémorer les tours que me faisait mon père, je vais certainement en retrouver sur ce site.......à+
____________________
Roro

   
Le 19/09/2012 à 10h48

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Comment ça "View" n'apparait pas dans Deal ???
C'est même la condition d'un "if" !!!!

Ceci dit tu devrais plutôt écrire tes propres SUB en t'inspirant éventuellement des miennes, car dans Poker elles avaient certainement une fonction qui "collait" plus à mon cahier des charges de l'époque... et dont tu n'as absolument pas besoin pour ton programme par exemple.

@+



Edité par cassiope01 Le 19/09/2012 à 10h50
____________________
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/09/2012 à 15h13

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2453
P....n ! de M...e ! Tu a raison. Je l'ai épluché vingt fois cette sub sans le voir.
Je suis épaté par la distribution des cartes, et j'essaie d'en piger le mécanisme. ( pour me l'approprier..off corse).
Il n'y a qu'en analysant des codes plus évolués que j'avancerai. Si je fais à ma façon....tu sais ce que ça donne !
____________________
Roro

   
Le 19/09/2012 à 19h44

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:
Il n'y a qu'en analysant des codes plus évolués que j'avancerai.

ça c'est pas forcément vrai, en tout cas pas seulement... on apprend très bien aussi en codant pour réaliser un projet de A à Z (avec toutes l'aide possible bien sûr) et obtenir la satisfaction du résultat qui va encourager à progresser pour coder encore plus efficace, etc...
C'est juste mon avis... ;)

Mais tu veux que j'essaye de le coder ce tour de carte (avec les trucs de Poker) ?

@+



Edité par cassiope01 Le 19/09/2012 à 19h48
____________________
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/09/2012 à 20h20

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2453
Je suis toujours friand de tes subtilités. :miam
Et suis curieux de voir si j'y retrouve mes petits.. :p
____________________
Roro

   
Le 21/09/2012 à 13h53

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Il faut d'abord utiliser Make_Cards_Sprites.zip (revu & corrigé :top ) pour fabriquer le répertoire des cartes.

Puis tu peux voir si ça marche à chaque fois :siffle

Code VB :
' http://libertybasic.fr/forum/topic-204-0-2292+un-tour-de-carte.php#m2292

    nomainwin
 
    WindowWidth = 800
    WindowHeight = 600
    UpperLeftX = (DisplayWidth-WindowWidth) / 3
    UpperLeftY = (DisplayHeight-WindowHeight) / 2
 
    mois$ = "Jan Fév Mar Avr Mai Jun Jui Aou Sep Oct Nov Déc"
    today$ = date$("mm/dd/yyyy")
    j = date$(today$)
    jsem$ = word$("Mar Mer Jeu x Ven Sam x Dim Lun",int((j/7-int(j/7))*10)+1)
    date$ = jsem$+" "+mid$(today$,4,2)+" "+word$(mois$, val(today$))+"   "+left$(time$(),5)'right$(today$,4)

    DIM distrib(9,3), info$(10,10), cards(52)
    GLOBAL xdeck, ydeck, lc, hc, xd, yd, stepp, cht$
 
    ' couleur = "Trèfle Carreau Coeur Pique"
    ' valeur = "1(As) 2 3 4 5 6 7 8 9 10 11(Valet) 12(Dame) 13(Roi)"
    ' une carte est définie comme suit : Couleur * 100 + valeur
    ' ex : 205 = 5 de Carreau
    '      401 = As de Pique

    lc = 70    ' dimension d'une carte
    hc = 101
    xdeck = 10  ' position du paquet
    ydeck = 38
    xd = 120   ' coordonnée de la première carte distribuée.
    yd = 80
 
    graphicbox #g.map, 5, 5, WindowWidth-16, WindowHeight-152
    graphicbox #g.txt, 5, WindowHeight-152, WindowWidth-16, 121
    open "    Petit tour de cartes..."+space$(20)+date$ for window_nf as #g  'graphics_nf_nsb
    #g "trapclose quit"
    #g.map "down ;fill darkgreen"  ' "buttonface" = couleur du background actuel de Windows.
    #g.txt "down ;fill darkgreen"
    #g.txt "font Comic_Sans_MS 14 bold"
    #g.txt "backcolor darkgreen ; color yellow"
    #g.map "getbmp tapis 0 0 ";WindowWidth-16;" ";WindowHeight-132
    #g.map "background tapis"
 
    if fileExists(DefaultDir$, "Cartes\Card0.bmp") then
        n = 0
        for couleur=1 to 4
            for valeur=1 to 13
                n = n + 1
                cards(n) = couleur*100+valeur  ' cartes stockée dans cards(52)
                loadbmp "SpriteCard", "Cartes\card";cards(n);".bmp"
                #g.map "addsprite Sprite";cards(n);" SpriteCard"
                #g.map "spritexy Sprite";cards(n);" ";xdeck;" ";ydeck
               ' #g.map "drawsprites"
            next
        next
        loadbmp "Dos", "Cartes\card0.bmp"
        #g.map "addsprite Sprite0 Dos"
        #g.map "spritexy Sprite0 ";xdeck;" ";ydeck
        #g.map "drawsprites"
    else
        notice "Pas de fichiers BMPs"
        call quit "#g"
    end if
 
    [new]
    stepp = 1
    #g.map "cls ; fill darkgreen"
    #g.txt "cls ; fill darkgreen"
    call message "Choisissez une carte,", "puis cliquez sur la ligne sur laquelle elle se trouve.", ""
    call shuffleDeck  'mélange le paquet de 52 cartes
    call distrib
 
    #g.map "when leftButtonDown [clic]"
 
    WAIT
 
    [clic]
        #g.txt "cls ;fill darkgreen"
        if stepp = 4 then call slide distrib(5,2), xd, yd, xdeck, ydeck : goto [new]
        mX = MouseX
        mY = MouseY
        #g.map "when leftButtonDown"
        if mY > yd and mY < yd+3*hc then ligne = int((mY-yd)/hc)+1 else [outa] ' défini le n° de la ligne cliquée.
        select case ligne
        case 1 : cht$ = ch$(2)+ch$(1)+ch$(3)
        case 2 : cht$ = ch$(1)+ch$(2)+ch$(3)
        case 3 : cht$ = ch$(1)+ch$(3)+ch$(2)
        end select
        stepp = stepp + 1
        select case stepp
        case 2,3
            t1$ = "cliquez sur la ligne sur laquelle"
            t2$ = "votre carte se trouve."
            t3$ = ""
        case 4
            t1$ = ""
            t2$ = "voici votre carte."
            t3$ = ""
        end select
        call recup
        if stepp = 4 then
            call slide distrib(5,2), xdeck, ydeck, xd, yd
        else
            call distrib
        end if
        call message t1$, t2$, t3$
        [outa]
        #g.map "when leftButtonDown [clic]"
    wait
 
    sub message txt1$, txt2$, txt3$
        #g.txt "cls ;fill darkgreen"
        L1 = len(txt1$)
        L2 = len(txt2$)
        L3 = len(txt3$)
        #g.txt "place ";(WindowWidth-(L1*9))/2;" 35 ;|";txt1$
        #g.txt "place ";(WindowWidth-(L2*9))/2;" 65 ;|";txt2$
        #g.txt "place ";(WindowWidth-(L3*9))/2;" 95 ;|";txt3$
        #g.txt "flush ; discard"
    end sub
 
    sub recup   ' remise sur le paquet
        for y = 1 to 3
            for x = 1 to 9
                #g.map "spritexy? Sprite";distrib(x,y);" spx spy"
                call slide distrib(x,y), spx, spy, xdeck, ydeck
            next
        next
        nc = 1 : n = 1    ' réorganisation astucieuse de distrib(x,y) à l'aide de cht$ constituée dans [clic].
        for y = 1 to 3
            for x = 1 to 9
                distrib(x,y) = val(word$(cht$,nc)) ': print distrib(x,y);" ";
                nc = nc + 9
                if nc > 27 then n = n + 1 : nc = n
            next
            print
        next
    end sub
 
    sub distrib   ' distribution des cartes.
        redim ch$(3)
        for y = 1 to 3
            for x = 1 to 9
                call slide distrib(x,y), xdeck, ydeck, xd+(x-1)*lc, yd+(y-1)*hc
                ch$(y) = ch$(y);distrib(x,y);" "
            next
        next
    end sub
 
    sub slide carte, dx, dy, ax, ay  'déplace la carte du paquet vers arx,ary
        steps = 8  'pas
        ecx = (dx - ax)/steps
        ecy = (dy - ay)/steps
        for s = 1 to steps
            #g.map "spritexy Sprite";carte;" ";dx-s*ecx;" ";dy-s*ecy
            #g.map "drawsprites"
            call pause 10
        next
    end sub
 
    Sub shuffleDeck        'mélange les 52 cartes, puis mémorise les 27 premières dans un tableau.
        For i = 52 to 1 Step -1
            x = Int(Rnd(1) * i) + 1
            temp = cards(x)
            cards(x) = cards(i)
            cards(i) = temp
        Next i
        for y = 1 to 3      ' mémorise les 27 premières dans distrib(x,y)
            for x = 1 to 9
                n = n + 1
                distrib(x,y) = cards(n)
            next
        next
    End Sub
 
    function fileExists(path$, filename$)
        'DIM info$(10,10) 'doit avoir été déclaré en début de prog
        files path$, filename$, info$(  ' path$ = DefaultDir$ en général...
        fileExists = val(info$(0, 0))  'non zéro si vrai
    end function
 
    sub pause temp   'pause en millisecondes
        timer temp, [temps]
        wait
        [temps]
        timer 0
    end sub
 
    sub quit handle$
        unloadbmp "SpriteCard"
        unloadbmp "Dos"
        unloadbmp "tapis"
        close #handle$
        END
    end sub
 


PS: il est assez facile de modifier ce code pour qu'il y ait une autre distribution ex: 5x5, 3x3, 5x3, 7x5 mais le nombre de clics qui sera demandé au joueur sera toujours égal au nombre de lignes...

@+



Edité par cassiope01 Le 21/09/2012 à 19h12
____________________
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 21/09/2012 à 16h56

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2453
Chargé.... Hé, à voir sur place, ça à l'air charnu. gros merci..smiley smac!
Hé, tu sais que si tu veux mettre une corde à ton trébuchet ( celui en surimpression de la vidéo ) elle va sortir de l'écran...Tu n'a rien dit de ma connerie sur le code TSH73, a tu remarqué que la corde était élastique ? :p
____________________
Roro

   
Le 21/09/2012 à 17h44

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2453
Que dire d'autre que: :top :top :clap
Je met ça pour les visiteurs du soir, car vu les heures de fréquentations , ils doivent avoir du mal avec notre patois.
Note for the night birds visitors:
Make a répertory, include the code above and the "make_cards_sprites.zip".
Unzip "make_cards_sprites" and run: "make_cards_sprites_texas.bas".
Then, Run main code .
The card trick: Choose a card and clic on the card included line, at the third round the soothsayer code find your card.



Edité par Roland Le 21/09/2012 à 17h45
____________________
Roro

   
Le 21/09/2012 à 18h22

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
et tu n'as pas pensé une seconde que s'ils viennent sur un forum francophone (déjà fallait le chercher :| ) c'est parce qu'ils causent la france :lol et qu'ils sont soit insomniaques soit ailleurs autour de la planète : Nouméa, Québec, Kerguélen, Réunion, expatriés, ou encore francophiles !!!

Notre forum est bien petit par rapport aux anglophones... :siffle

Je vais peut-être l'angliciser pour le mettre chez nos amis anglophone.
Je serai curieux de voir ce que ça donne en permettant plusieures distributions possibles (5x3, 5x5, etc...)

@+



Edité par cassiope01 Le 22/09/2012 à 06h45
____________________
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 21/09/2012 à 20h16

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2453
Possible que le rapport entre le nombre de lignes et le nombre de cartes par ligne soit constant, pour 100% de réussite, c'est à vérifier
Tu pourrait angliciser d'autres codes. Le petit puzzle à inversion de couleurs par exemple ( il n'y a pas beaucoup de texte .)
J'ai fais une version anglaise de Babylone, l'a-tu essayé ? a-tu des suggestions à son sujet ? ( niveau jeu off corse, pas du code ) Si tu estime qu'il est au point, je la posterai pour envoi par delà les mers.

Je planche actuellement sur un niveau de Bd_jb, ça fait travailler le neurone ce truc là !

Mais bon, j'ai maintenant la distribution "Hold'em" à ausculter, ça va aussi faire chauffer le cpu.......à+



Edité par Roland Le 21/09/2012 à 21h52
____________________
Roro

   
Le 22/09/2012 à 07h47

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Je ne sais pas toi mais sur le site Kimunga moi je n'ai pas compris grand chose aux explications concernant les variantes.
Mon code ne fonctionne QUE si le nbre de lignes ET le nbre de cartes par ligne sont IMPAIRS.
Et il doit y avoir le même nbre de redistribution qu'il y a de lignes.

Roland:
Tu pourrait angliciser d'autres codes. Le petit puzzle à inversion de couleurs par exemple ( il n'y a pas beaucoup de texte .)

Tu veux parler de chainreaction.bas ?

@+

HS: J'ai essayé Babylone : je n'y ai rien compris, j'ai laissé tombé :(
J'ai toujours tendance à penser qu'un petit jeu doit rester intuitif, facile de prise en main et d'utilisation et tout de suite plaisant à jouer...
Le panneau de paramétrage par exemple me ferait plutôt penser aux réglages d'une machine outils d'usinage numérique :heink : petit, fouilli, complexe...
Ce n'est que mon avis.
Tu as raison, montre le aux anglais, tu auras d'autres avis...



Edité par cassiope01 Le 22/09/2012 à 07h55
____________________
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 22/09/2012 à 10h09

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Voici une version où la disposition des cartes est tirée au hasard parmis 3 possibles... :top

Code VB :
  ' http://libertybasic.fr/forum/topic-204-0-2292+un-tour-de-carte.php#m2292

    nomainwin
 
    WindowWidth = 800
    WindowHeight = 700
    UpperLeftX = (DisplayWidth-WindowWidth) / 3
    UpperLeftY = (DisplayHeight-WindowHeight) / 3
 
    mois$ = "Jan Fév Mar Avr Mai Jun Jui Aou Sep Oct Nov Déc"
    today$ = date$("mm/dd/yyyy")
    j = date$(today$)
    jsem$ = word$("Mar Mer Jeu x Ven Sam x Dim Lun",int((j/7-int(j/7))*10)+1)
    date$ = jsem$+" "+mid$(today$,4,2)+" "+word$(mois$, val(today$))+"   "+left$(time$(),5)'right$(today$,4)

    DIM info$(10,10), cards(52)
    GLOBAL xdeck, ydeck, lc, hc, xd, yd, stepp, cht$, NTL, NTC, nRedistrib
 
    ' couleur = "Trèfle Carreau Coeur Pique"
    ' valeur = "1(As) 2 3 4 5 6 7 8 9 10 11(Valet) 12(Dame) 13(Roi)"
    ' une carte est définie comme suit : Couleur * 100 + valeur
    ' ex : 205 = 5 de Carreau
    '      401 = As de Pique

    lc = 70    ' dimension d'une carte
    hc = 101
    xdeck = 10  ' position du paquet
    ydeck = 38
    dim distrib(1,1)
 
    graphicbox #g.map, 5, 5, WindowWidth-16, WindowHeight-152
    graphicbox #g.txt, 5, WindowHeight-152, WindowWidth-16, 121
    open "    Petit tour de cartes..."+space$(20)+date$ for window_nf as #g  'graphics_nf_nsb
    #g "trapclose quit"
    #g.map "down ;fill darkgreen"  ' "buttonface" = couleur du background actuel de Windows.
    #g.txt "down ;fill darkgreen"
    #g.txt "font Comic_Sans_MS 14"' bold"
    #g.txt "backcolor darkgreen ; color yellow"
    #g.map "getbmp tapis 0 0 ";WindowWidth-16;" ";WindowHeight-132
    #g.map "background tapis"
 
    if fileExists(DefaultDir$, "Cartes\Card0.bmp") then
        n = 0
        for couleur=1 to 4
            for valeur=1 to 13
                n = n + 1
                cards(n) = couleur*100+valeur  ' cartes stockée dans cards(52)
                loadbmp "SpriteCard", "Cartes\card";cards(n);".bmp"
                #g.map "addsprite Sprite";cards(n);" SpriteCard"
                #g.map "spritexy Sprite";cards(n);" ";xdeck;" ";ydeck
               ' #g.map "drawsprites"
            next
        next
        loadbmp "Dos", "Cartes\card0.bmp"
        #g.map "addsprite Sprite0 Dos"
        #g.map "spritexy Sprite0 ";xdeck;" ";ydeck
        #g.map "drawsprites"
    else
        notice "Pas de fichiers BMPs"
        call quit "#g"
    end if
 
    [new]
    disposition = int(rnd(0)*3)+1
    'disposition = 2     ' tests...
    NTL = val(left$(word$("3x9 5x5 3x3",disposition),1))    ' nbre de lignes
    NTC = val(right$(word$("3x9 5x5 3x3",disposition),1))    ' nbre de cartes par lignes
    redim distrib(NTC,NTL)
    select case disposition
    case 1
        xd = 120   ' coordonnée de la première carte distribuée.
        yd = 80
        nRedistrib = 4   ' = 3 click du joueur
    case 2
        xd = 240   ' coordonnée de la première carte distribuée.
        yd = 30
        nRedistrib = 3   ' = 2 click du joueur
    case 3
        xd = 260   ' coordonnée de la première carte distribuée.
        yd = 80
        nRedistrib = 3   ' = 2 click du joueur
    end select
    stepp = 1
    #g.map "cls ; fill darkgreen"
    #g.txt "cls ; fill darkgreen"
    call message "Choisissez une carte,", "puis cliquez sur la ligne sur laquelle elle se trouve.", ""
    call shuffleDeck  'mélange le paquet de 52 cartes
    call distrib
 
    #g.map "when leftButtonDown [click]"
 
    WAIT
 
    [click]
        #g.txt "cls ;fill darkgreen"
        'if stepp = NTL+1 then call slide distrib(int(NTC/2)+1,(NTL/2)+1), (WindowWidth-lc)/2, (WindowHeight-152-hc)/2, xdeck, ydeck : goto [new]
        if stepp = nRedistrib then call slide distrib(int(NTC/2)+1,(NTL/2)+1), (WindowWidth-lc)/2, (WindowHeight-152-hc)/2, xdeck, ydeck : goto [new]
        mX = MouseX
        mY = MouseY
        #g.map "when leftButtonDown"
        if mY > yd and mY < yd+NTL*hc then ligne = int((mY-yd)/hc)+1 else [outa] ' défini le n° de la ligne cliquée.
        select case
        case NTL = 3                                ' ordre de stockage des lignes
            select case ligne
            case 1 : cht$ = ch$(3)+ch$(1)+ch$(2)
            case 2 : cht$ = ch$(1)+ch$(2)+ch$(3)
            case 3 : cht$ = ch$(2)+ch$(3)+ch$(1)
            end select
        case NTL = 5
            select case ligne
            case 1 : cht$ = ch$(2)+ch$(3)+ch$(1)+ch$(4)+ch$(5)
            case 2 : cht$ = ch$(1)+ch$(4)+ch$(2)+ch$(3)+ch$(5)
            case 3 : cht$ = ch$(5)+ch$(2)+ch$(3)+ch$(4)+ch$(1)
            case 4 : cht$ = ch$(2)+ch$(5)+ch$(4)+ch$(1)+ch$(3)
            case 5 : cht$ = ch$(1)+ch$(4)+ch$(5)+ch$(2)+ch$(3)
            end select
        end select
        stepp = stepp + 1
        if stepp < nRedistrib then
            t1$ = "cliquez sur la ligne sur laquelle"
            t2$ = "votre carte se trouve."
            t3$ = ""
        else
            t1$ = ""
            t2$ = "voici votre carte.   "
            t3$ = ""
        end if
        call recup
        if stepp = nRedistrib then 'NTL+1 then
            call slide distrib(int(NTC/2)+1,(NTL/2)+1), xdeck, ydeck, (WindowWidth-lc)/2, (WindowHeight-152-hc)/2
        else
            call distrib
        end if
        call message t1$, t2$, t3$
        [outa]
        #g.map "when leftButtonDown [click]"
    wait
 
    sub recup   ' remise sur le paquet
        for y = 1 to NTL
            for x = 1 to NTC
                #g.map "spritexy? Sprite";distrib(x,y);" spx spy"
                call slide distrib(x,y), spx, spy, xdeck, ydeck
            next
        next
        nc = 1 : n = 1    ' réorganisation astucieuse de distrib(x,y) à l'aide de cht$ constituée dans [clic].
        for y = 1 to NTL
            for x = 1 to NTC
                distrib(x,y) = val(word$(cht$,nc))
                nc = nc + NTC
                if nc > NTL*NTC then n=n+1 : nc = n
            next
        next
    end sub
 
    sub distrib   ' distribution des cartes.
        redim ch$(NTL)
        for y = 1 to NTL
            for x = 1 to NTC
                call slide distrib(x,y), xdeck, ydeck, xd+(x-1)*lc, yd+(y-1)*hc
               ' mémorise le contenu complet de cette ligne (y) dans la chaine de caractères correspondante (tableau)
                ch$(y) = ch$(y);distrib(x,y);" "
            next
        next
    end sub
 
    sub slide carte, dx, dy, ax, ay  'déplace la carte du paquet vers arx,ary
        steps = 8  'pas
        ecx = (dx - ax)/steps
        ecy = (dy - ay)/steps
        for s = 1 to steps
            #g.map "spritexy Sprite";carte;" ";dx-s*ecx;" ";dy-s*ecy
            #g.map "drawsprites"
            call pause 10
        next
    end sub
 
    Sub shuffleDeck        'mélange les 52 cartes, puis mémorise les 27 premières dans un tableau.
        For i = 52 to 1 Step -1
            x = Int(Rnd(1) * i) + 1
            temp = cards(x)
            cards(x) = cards(i)
            cards(i) = temp
        Next i
        for y = 1 to NTL      ' mémorise les NTL*NTC premières dans distrib(x,y)
            for x = 1 to NTC
                n = n + 1
                distrib(x,y) = cards(n)
            next
        next
    End Sub
 
    sub message txt1$, txt2$, txt3$
        #g.txt "cls ;fill darkgreen"
        L1 = len(txt1$)
        L2 = len(txt2$)
        L3 = len(txt3$)
        #g.txt "place ";(WindowWidth-(L1*9))/2;" 35 ;|";txt1$
        #g.txt "place ";(WindowWidth-(L2*9))/2;" 65 ;|";txt2$
        #g.txt "place ";(WindowWidth-(L3*9))/2;" 95 ;|";txt3$
        #g.txt "flush ; discard"
    end sub
 
    function fileExists(path$, filename$)
        'DIM info$(10,10) 'doit avoir été déclaré en début de prog
        files path$, filename$, info$(  ' path$ = DefaultDir$ en général...
        fileExists = val(info$(0, 0))  'non zéro si vrai
    end function
 
    sub pause temp   'pause en millisecondes
        timer temp, [temps]
        wait
        [temps]
        timer 0
    end sub
 
    sub quit handle$
        unloadbmp "SpriteCard"
        unloadbmp "Dos"
        unloadbmp "tapis"
        close #handle$
        END
    end sub
 




Edité par cassiope01 Le 22/09/2012 à 10h21
____________________
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 22/09/2012 à 10h55

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2453
Chain_reaction, il y est chez l'oncle Sam.
Je te parle du petit puzzle carré que j'avais nommé "Un Jeu Facile" (qui ne l'est pas tant que ça )

Pour les lignes..ext.. Il y a une explication ( qui n'en ai pas une ) sur un autre site, mais dont je n'ai pas gardé l'adresse. le principe, c'est une sorte de "tri", qui ressemble de loin au tri à bulle.

Toi, tu n'a pas lu le "help" de Babylone. Ducros s'est encore décarcassé en vain.. :gre
Le tableau de bord: Figure toi que je suis tombé plusieurs fois sur des jeux, qui auraient été supers, s'ils n'avaient pas eus un ou plusieurs paramètres mal réglés. Ce qui les rendait injouables.
Avec Babylone, on peut régler tous les paramètres, ce qui fait qu'il y a plusieurs façons de jouer.
Au début, c'est assez facile. Mais ça va en se compliquant.
En fonction des réglages, le jeu peut etre "stressy" ou "cool", favoriser la stratégie ou l'opportunisme.
je suis d'accord qu'un petit jeu doit rester intuitif. Babylone n'est pas un petit jeu.
Et que dire de l'intuitivité de Wykersham :|
Je regarde ta nouveauté, mais tu m'inquiete, la redistribution ne doit pas se faire au hasard, pour que le tri se fasse.
Bon, je poste ça avant que la connection, déconnecte ( déconne serait plus juste ).....
____________________
Roro

   
Jeux » Un Tour de Carte ...Sans Cartes...  

 |  |

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