Forum Liberty Basic France

Jeux » Un Tour de Carte ...Sans Cartes...
Le 22/09/2012 à 10h55

Administrateur

Groupe: Administrateur

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

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

   
Le 22/09/2012 à 11h06

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2489
C'est le nombre de ligne qui doit etre impair, pour que la carte choisie soit ramenée dans le tas du milieu, à chaque distribution.
Le nombre max de cartes par ligne est fonction du nombre de lignes ( en fait du nombre de redistributions)
Plus le nombre est élevé, plus le tri est long ( nombre de redistrib )
Pour cerner le fonctionnement, il faudrait pouvoir régler le nombre de cartes par ligne , le nombre de lignes et le nombre de redistrib
A ce que j'ai vu du code, ça serait un sacré binzz..... enfin...à mon niveau...



Edité par Roland Le 22/09/2012 à 11h16
____________________
Roro

   
Le 22/09/2012 à 15h32

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2489
Non, ça y est, je maitrise les trois parametres : 5 lignes, 10 cartes par ligne, 5 distr (4 clics)
Avec 11 cartes par ligne, on tombe par la fenetre du 54 ième étage !!!!! :|
Because 5x11=55 Il manque le Joker :s
Une question: Quand tu rammasse en disposant la ligne clicquée au centre, entre les deux autres ( 5 lignes), et que tu redistribue, tu dois redistribuer en prenant la carte sur le paquet et remplir les lignes une par une.
Est-ce bien ce que tu fais ? car le com:
' mémorise le contenu complet de cette ligne (y) dans la chaine de caractères correspondante (tableau)
me fait douter.
Il ne faut rien mémoriser, :gre :gre :gre :gre :gre Tricheur!!! :hehe le tri se fait par la manipulation.



Edité par Roland Le 22/09/2012 à 16h14
____________________
Roro

   
Le 22/09/2012 à 19h03

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2489
Il semblerait que tu mémorise la ligne pour gerer l'affichage. Ouf! c'est que j'ai du mal à m'y retrouver, avec l'affichage... :p
____________________
Roro

   
Le 22/09/2012 à 19h04

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:
Une question: Quand tu rammasse en disposant la ligne clicquée au centre, entre les deux autres ( 5 lignes), et que tu redistribue, tu dois redistribuer en prenant la carte sur le paquet et remplir les lignes une par une.
Est-ce bien ce que tu fais ? car le com:
' mémorise le contenu complet de cette ligne (y) dans la chaine de caractères correspondante (tableau)
me fait douter.
Il ne faut rien mémoriser, :gre :gre :gre :gre :gre Tricheur!!! :hehe le tri se fait par la manipulation.

D'où vient ton code Roland ? Comprends-tu ce qu'il fait ?
Parce que le mien ne fait pratiquement rien de différent au niveau des variables...! Je m'en suis inspiré.
Mon code ne peut pas mémoriser une carte visée par le joueur puisque celui-ci ne clique pas dessus (ou s'il le fait ça ne change rien) !
Je ne vois pas ce qui te gratte ?

@+



Edité par cassiope01 Le 22/09/2012 à 19h06
____________________
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 à 19h07

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2489
Hey! on s'est croisés. ;) J'ai pigé le pourquoi . Voir le post au dessus.
____________________
Roro

   
Le 22/09/2012 à 21h00

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2489
Ho ! I am shoking !!Citation:
D'où vient ton code Roland ? Comprends-tu ce qu'il fait ?

C'est du frais du jour, pondu par un Roland élevé en plein air.
Il n'y a que la procédure de mélange du paquet que j'ai piqué chez tonton Sam .
C'est vrai que le chat touche au clavier, mais c'est juste pour avoir la gamelle.( ou me faire ch...r )
____________________
Roro

   
Le 23/09/2012 à 08h19

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Oups :( s'cuse :top
Mais aussi c'est ta faute : si tu arrêtais de raconter plein de conneries dans tes posts, j'arriverais peut-être à m'y faire :lol :lol

Il faudrait quand même siter tes sources, disons que ça se fait ;)
L'australien Gearce par exemple aime bien les tours de magie et autre trucs du genre.
C'est à lui que je pensais en voulant mettre ce code sur leur forum, mais si le truc est de lui !!!!!!

@+
____________________
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 23/09/2012 à 09h00

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Dans mon code tu peux bien sûr changer le nbre de lignes (var NTL), le nbre de cartes par ligne (var NTC), et le nbre de distribution (var nRedistrib sachant que le nbre de click que fera le joueur est nRedistrib-1).

Bien sûr il faut ajuster les variable xd,yd qui sont les coordonnées d'affichage de la première carte distribuée en haut à gauche, juste histoire que la distribution soit plutôt centrée à l'écran.

J'ai essayé 3x7, ça marche pas par exemple...

J'ai cru comprendre que le nombre de carte par ligne devait être un multiple du nombre de ligne (IMPAIR), et le nombre de click du joueur (c'est à dire le nbre de redistributions sans compter le premier étalage) sera le multiplicateur du nombre de ligne pour obtenir le nbre de carte par ligne...

Mais il semble que je n'ai pas tout bien compris... :(

Et toi ?

@+



Edité par cassiope01 Le 23/09/2012 à 09h02
____________________
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 23/09/2012 à 10h40

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2489
Hyapadmal ;) Le code est de moi pur jus, mais le tour de carte doit etre connu d'un milliard de personnes.

Je suis tellement habitué à m'arracher les cheveux sur tes codes, que je préfère te poser les questions avant d'etre complètement chauve., et parfois, il y a eu peu trop d'avance à l'allumage. :p

Je crois que c'est mur pour TSH73, il pourrait bien nous sortir une équation de derrière les fagots.
Il faut lui donner la version à 27 cartes, pour qu'il ne nous prenne pas pour des fous.( il peut ne pas connaitre le tour )
Mais pour expliquer ce qu'on voudrait comprendre, en anglais, à un russe...Bonjour l'angoisse. :heink

.........d'aprés ce que je comprend: tu n'extrait pas la carte en comptant dans le paquet, mais tu dis que c'est la 5ième de la deuxième ligne

if stepp = 4 then
call slide distrib(5,2),.....(.version 27 cartes)



Edité par Roland Le 23/09/2012 à 13h12
____________________
Roro

   
Le 23/09/2012 à 16h24

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2489
T'é un sacré malin toi, tu mets la ligne au milieu...dans le code. Mais tu la présente ailleurs à la distribution..
.Et moi qui cherche à comprendre pourquoi cette ligne se balade du haut en bas et que le résultat est quand meme bon. :top



Edité par Roland Le 23/09/2012 à 16h24
____________________
Roro

   
Le 23/09/2012 à 17h21

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Mais oui, mais c'est bien sûr !!!!!!
Tu racontes toujours n'importe quoi (moins ces derniers temps je ne comprend pas trop pourquoi : tu as pris des cours ou tu as bouffé un génie), mais une fois sur un million, dans ce n'importe quoi se trouve la solution...!
5,2 ne peut fonctionner qu'avec 27 cartes. Quel idiot je fais !!!

Merci Roland :top



Edité par cassiope01 Le 23/09/2012 à 17h22
____________________
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 23/09/2012 à 17h41

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Oups ! fausse joie... j'avais déjà rectifié ça dans la dernière version... Grrrr!!

@+
____________________
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 23/09/2012 à 17h44

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2489
Ouai; mais j'ai fait des essais avec 50 cartes sur Cinq lignes, et il se passe que la carte, une fois rendue dans la ligne du milieu, oscille d'un coup sur l'autre entre deux positions symétrique par rapport au centre de la ligne. Et pareil avec 5 lignes de 9c, et 5 lignes de 7cartes.
Mais ta deuxième mouture fonctionne bien, malgrés qu'elle ne devrait pas.
Va comprendre ?...Gilles...
......Et avec 3x7 meme phénomène.....



Edité par Roland Le 23/09/2012 à 17h54
____________________
Roro

   
Le 23/09/2012 à 18h07

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
La dernière version c'est celle-ci :

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 = 3     ' 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
        yd = 80-50*(NTL>3)        ' coordonnée de la première carte distribuée.
        xd = 120+((9-NTC)/3)*lc
        nRedistrib = 3   ' = click du joueur
    case 2
        yd = 80-50*(NTL>3)
        xd = 120+((9-NTC)/3)*lc
        nRedistrib = 2   ' = click du joueur
    case 3
        yd = 80-50*(NTL>3)
        xd = 120+((9-NTC)/3)*lc
        nRedistrib = 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 > nRedistrib then call slide distrib(int(NTC/2)+1,int(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    ' SOLUTION
            call slide distrib(int(NTC/2)+1,int(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
 


et elle ne fonctionne pas avec d'autres distributions que 3x9, 5x5 et 3x3 contrairement à ce que tu dis...!

@+
____________________
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 23/09/2012 à 19h46

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2489
Le hasard ne m'a donné que des bonnes distributions.
Le rapport N lignes/N cartes par ligne doit etre déterminant (5/5=1 ; 3/3=1 ; 9/3=3 -->3/3=1)
Trés fort la dernière...5x5 en deux tours... :top



Edité par Roland Le 23/09/2012 à 20h03
____________________
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