Forum Liberty Basic France

Projets open source » Mastermind OK Mort aux bugs !...
Le 09/05/2012 à 22h24

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Petite remarque pour cassiope. Je n'ai pas pris tes dernières modifs. C'est le début du commencement de mon émancipation.

Code JB :
 
 
 
  'mastermind v4_ Fonctionnel
   nomainwin
    WindowWidth  = 560
    WindowHeight = 600
    UpperLeftX   = (DisplayWidth-WindowWidth)/2
    UpperLeftY   = (DisplayHeight-WindowHeight)/2
 
     button #w.ne, "Start", [Start], UL, 310, 330
     button #w.tt, "Test", [test], UL, 360, 155,110, 30
    button #w.so, "1", [sou1], UL, 308, 240
    button #w.so, "2", [sou2], UL, 357, 240
    button #w.so, "3", [sou3], UL, 407, 240
    button #w.so, "4", [sou4], UL, 458, 240
    button #w.so, "5", [sou5], UL, 504, 240
   TEXTBOX #w.so1, 305, 270,25, 25
   TEXTBOX #w.so2, 354, 270,25, 25
   TEXTBOX #w.so3, 404, 270,25, 25
   TEXTBOX #w.so4, 455, 270,25, 25
   TEXTBOX #w.so5, 502, 270,25, 25
    STATICTEXT #w, "Combinaison Machine", 360, 220, 150, 15
    STATICTEXT #w.av, "Avec Doublons >", 415, 315, 85, 15
     button #w.av, "*", [ave], UL, 500, 310, 35, 20
    STATICTEXT #w.sa, "Sans Doublons >", 415, 345, 85, 15
    STATICTEXT #w, "(Par Defaut)", 415, 365, 85, 15
    button #w.sa, "*", [san], UL, 500, 340, 35, 20
    button #w.r1, "Red", jeu, UL, 290, 10, 50, 25 'choix place boutons ligne
    button #w.r2, "Red", jeu, UL, 340, 10, 50, 25 'choix couleurs boutons colonnes
    button #w.r3, "Red", jeu, UL, 390, 10, 50, 25
    button #w.r4, "Red", jeu, UL, 440, 10, 50, 25
    button #w.r5, "Red", jeu, UL, 490, 10, 50, 25
    button #w.g1, "Green", jeu, UL, 290, 35, 50, 25
    button #w.g2, "Green", jeu, UL, 340, 35, 50, 25
    button #w.g3, "Green", jeu, UL, 390, 35, 50, 25
    button #w.g4, "Green", jeu, UL, 440, 35, 50, 25
    button #w.g5, "Green", jeu, UL, 490, 35, 50, 25
    button #w.y1, "Yellow", jeu, UL, 290, 60, 50, 25
    button #w.y2, "Yellow", jeu, UL, 340, 60, 50, 25
    button #w.y3, "Yellow", jeu, UL, 390, 60, 50, 25
    button #w.y4, "Yellow", jeu, UL, 440, 60, 50, 25
    button #w.y5, "Yellow", jeu, UL, 490, 60, 50, 25
    button #w.p1, "pink", jeu, UL, 290, 85, 50, 25
    button #w.p2, "pink", jeu, UL, 340, 85, 50, 25
    button #w.p3, "pink", jeu, UL, 390, 85, 50, 25
    button #w.p4, "pink", jeu, UL, 440, 85, 50, 25
    button #w.p5, "pink", jeu, UL, 490, 85, 50, 25
    button #w.b1, "blue", jeu, UL, 290, 110, 50, 25
    button #w.b2, "blue", jeu, UL, 340, 110, 50, 25
    button #w.b3, "blue", jeu, UL, 390, 110, 50, 25
    button #w.b4, "blue", jeu, UL, 440, 110, 50, 25
    button #w.b5, "blue", jeu, UL, 490, 110, 50, 25
  graphicbox #w.a, 5,5,180,555
  graphicbox #w.b, 195,5,80,555
    open "Mastermind..." for window_nf as #w
    #w "trapclose [quit]"
 
 global c$, pro$, prop$
 global bcp, bc, y, p, f1, f2, x
 DIM comb$(5):DIM propo$(5)
 fl2=0:fl1=0:y=20
 
    'good practice to start with a clean sheet
    #w.a "cls ; down"
    #w.b "cls ; down"
 
    #w.a "fill lightgray"
    #w.a "flush videcreensegment" 'nettoyage
    #w.b "fill lightgray"
    #w.b "flush videcreensegment"
 
[astart]
 
  wait
 [Start]      '*******************************Début**********
 print  #w.tt,  "!enable"
  print  #w.tt,  "test"
  fl2=1      'temoin de start
    #w.a "redraw videcreensegment"  'efface l'ancien
    #w.b "redraw videcreensegment"
    PRINT #w.so1,"":PRINT #w.so2,"":PRINT #w.so3,""
    PRINT #w.so4,"":PRINT #w.so5,""
    for k=1 to 5
      propo$(k-1)="q"
    next k
  if avec=0 then gosub [sans] 'doublons
  if avec=1 then gosub [avec] 'doublons
      '------------------------------Tour-------------
  wait
 
  sub jeu handle$ 
      pc = instr("rgypb",mid$(handle$,4,1))  ' la ligne qui t'assome
      couleur$ = word$("red green yellow pink blue",pc) ' celle qui t'achève
      x = val(right$(handle$,1))                        ' et celle qui te ranime
                ' ici: grosse prise de tete
      #w.a "backcolor ";couleur$;"; color ";couleur$
      #w.a "place ";20+35*(x-1);" ";y;"; circlefilled 15"
      #w.a "flush redsegment"
      #w.a "flush greensegment"
      #w.a "flush yellowsegment"
      #w.a "flush pinksegment"
      #w.a "flush bluesegment"
 
        prop$=right$(handle$,2) 'r2 de w.r2 ,r3,r4,b1,b2....
        pro$=left$(prop$,1)     'r de r2 de #w.r2
        p$=right$(prop$,1)      '2 de r2
        propo$(val(p$))=pro$ 
       f1=0
  end sub
  wait
[test]
   if fl2=0 then goto [clign] 'appui de test avant start
   bcp=0:bc=0:x=10:f1=f1+1   'F1 témoin d'appui répétés
   x=10
   bc=0
     for j=1 to 5
       if propo$(j)=comb$(j-1) then ' Bonne Coul Place..
         bcp=bcp+1:propo$(j)="z"   ' z neutralise
       end if                       'bcp lue plus bas
     next        'toutes les bonnes coul/place sont neutralisées
     if bcp=0 then x=10  ' assure x=10 suite bug aucune couleur
 
     for j=1 to 5
       if propo$(j)=comb$(0) then  'Bonne Coul mauvaise place
         bc=bc+1: propo$(j)="z"      'z neutralise
       end if
     next
     for j=1 to 5
       if propo$(j)=comb$(1) then
         bc=bc+1: propo$(j)="z"
       end if
     next
     for j=1 to 5
       if propo$(j)=comb$(2) then
         bc=bc+1: propo$(j)="z"
       end if
     next
     for j=1 to 5
       if propo$(j)=comb$(3) then
         bc=bc+1: propo$(j)="z"
       end if
     next
     for j=1 to 5
       if propo$(j)=comb$(4) then
         bc=bc+1: propo$(j)="z"
       end if
     next
   x=10     'affichage...bcp=total Bonne Coul/Place...bc=total Bonne Coul
     if bcp<>0 then   'au moins 1 bonne couleur bonne place
       for u=1 to bcp
         #w.b "backcolor black; color black"
         #w.b "place ";x;" ";y;"; circlefilled 5"
         #w.b "flush blacksegment"
         x=x+10
       next
     end if
 
     if bc<>0 then xx=x 'report dernier x si bcp<>0
       if bc<>0 then  'au moins 1 bonne couleur mauvaise place
         for u=1 to bc
            #w.b "backcolor white; color white"
            #w.b "place ";xx;" ";y;"; circlefilled 5"
            #w.b "flush whitesegment"
            xx=xx+10
         next
       end if
       'x=10
     if f1=1 then y=y+35 'flag appui test non repété>incrémente descente/tour
    p=0
    if y>535 then
      print #w.tt, "PERDU": goto [astart] ' PERDU
    end if
    if bcp=5 then
      print #w.tt, "GAGNE": goto [astart] ' GAGNE
    end if
 wait
 
[sou1]                   ' Affiche combi machine
    PRINT #w.so1, UPPER$(comb$(0));
 wait
[sou2]
    PRINT #w.so2, UPPER$(comb$(1));
 wait
[sou3]
    PRINT #w.so3, UPPER$(comb$(2));
 wait
[sou4]
    PRINT #w.so4, UPPER$(comb$(3));
 wait
[sou5]
    PRINT #w.so5, UPPER$(comb$(4));
 wait
 
[ave]
avec=1
    print #w.av, "avec" 'rappel option sur bouton
    print #w.sa, "*"
   wait
[san]
avec=0
    print #w.sa, "sans"
    print #w.av, "*"
   wait
 
[avec]  ' avec doublons
    y=20 :p=0        'première ligne affichée
    source$="r g y p b"  'les initiales des couleurs(et le left handle$)
          for i=0 to 4
      co=int(rnd(1)*5)+1  'génération combi
      comb$(i)=word$(source$,co) 'méfiance y'a un comb$(0)
    next i
 return
[sans]  ' sans doublons
    y=20 :p=0        'première ligne affichée
    source$="r g y p b"  'les initiales des couleurs(et le left handle$)
    for i=0 to 4
      co=int(rnd(1)*5)+1  'génération combi
      comb$(i)=word$(source$,co) 'méfiance y'a un comb$(0)
    next i
      if comb$(0)<>comb$(1)and comb$(0)<>comb$(2) and comb$(0)<>comb$(3) and comb$(0)<>comb$(4) then
       if comb$(1)<>comb$(2)and comb$(1)<>comb$(3) and comb$(1)<>comb$(4) then
        if comb$(2)<>comb$(3)and comb$(2)<>comb$(4) then
         if comb$(3)<>comb$(4) then return 'pas de doublons retour à l'appelant
        end if
        end if
       end if
       goto [sans]  'il y a doublons > nouvelle génération
  wait
 
 [clign]
 [ess]
 timer 0
     print  #w.tt,  "!disable"
     scan     'garde un oeil sur action joueur
     print  #w.tt,  "!enable"
     print  #w.tt,  "Doublons ? Start ?"
 
 timer 1000
 goto  [ess]
 
 
wait
    [quit]
       #w.a "discard" 'libère mémoire
       #w.b "discard"
 
    close #w
    end
 
 


____________________
Roro

   
Le 10/05/2012 à 09h13

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
ça ne fonctionne pas.

Il y a toujours 5 points blanc/noir !!!
Ne devrait-il pas y avoir seulement le nombre de couleurs présentes dans la proposition ?

Avec 4 propositions (pour l'instant il suffirait de désactiver la dernière colonne de boutons) et 6 couleurs possibles ce serait mieux je pense !

Y a un BUG quand tu cliques sur le bouton "test" dès le départ....!

La combinaison cachée pourrait être montrée en cliquant sur un seul bouton plutôt que 5 ;)
ou mieux encore : la première rangée pourrait être la combinaison secrète (seulement des ronds vides seraient affichés au départ), et les propositions du joueur commenceraient à la 2ème ligne... ;)


Pour le choix 'avec' / 'sans' doublon il y a 2 autres solutions toutes prêtes :

CHECKBOX #handle.ext, "label", setHandler, resetHandler, x, y, wide, high

ou bien

RADIOBUTTON #handle.ext, "label", setHandler, resetHandler, x, y, wide, high



@+



Edité par cassiope01 Le 10/05/2012 à 09h18
____________________
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 10/05/2012 à 14h52

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Hey ! Mais c'est pas un bug. Quand on appui sur "test" au départ,le bouton clignote avec ecrit dessus:
"doublons? Start?".Ca indique qu'il faut d'abord cliquer sur:"doublons" ou sur "start" :p
J'ai commencé d'écrire des modifs: choix du nombre de colonnes, choix du nombre de couleurs, avec ajout de deux couleurs . Mais avec mon code" carolingien", l'usine à gaz fuyait de toutes part, et les dangers d'explosion m'on fait mettre la chose en stand-by. :p
Il n'y a pas toujours 5 points. Si tu prend l'option: "avec doublons", et que tu propose des couleurs qui ne sont pas dans la combi machine, tu peux n'avoir aucun points.
Je trouve que c'est mieux de pouvoir interroger la combi machine sélectivement (chacun ses gouts n'est-ce pas.)
Tes deux lignes de la mort qui tue, je les copie, et je les mets au "comprenoir". :heink

J'ai enfin réussi à avoir tous les élements, et à envoyer le pognon à "shoptalk"; Pour tout dire, je n'y crois pas des masses. j'ai la craie à la main pour faire une croix sur le pognon...

A part ça , j'ai vu que tu t'interréssais aux dominos de Gearce. (toi qui comprend l'anglish tu pourrais m'expliquer en quoi consiste son jeu)
Si on voulait faire une simul de jeu de domino, il faudrait les considérer comme des dipoles.(domino 1.0)
J'ai réfléchi à la manipulation de dipoles dans un champ. é bé c'est pas évident.

Par ailleurs, je me demande s'il est possible de faire un tableau (5X5), dont chaque case serait un tableau (3X3 par exemple). Mais c'est plutot au "matou" (singulier de "matheux")Claude qu'il faudrait demander cela. ;)
____________________
Roro

   
Le 10/05/2012 à 17h51

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:
Par ailleurs, je me demande s'il est possible de faire un tableau (5X5), dont chaque case serait un tableau (3X3 par exemple). Mais c'est plutot au "matou" (singulier de "matheux")Claude qu'il faudrait demander cela. ;)

Oui, c'est possible, mais faut feinter...!

Ils en parlent justement sur le forum engliche.


@+



Edité par cassiope01 Le 10/05/2012 à 18h04
____________________
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 13/05/2012 à 09h54

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
J'ai vu le forum anglais, ils parlent de tableaux multidimentionnel, et comme j'ai vu des x, y, z, j'en conclu
qu'un tableau à trois dimensions se represente par un cube ( pour les plus de trois, difficile d'imaginer)
Ce dont je parle, c'est beaucoup plus simple. Il suffit, dans un tableau (100,100) de désigner par le chiffre des dizaines les cases "contenant", et par les dizaines+unités, les cases "contenues', et changer de "base" en fonction des valeurs.
Et voilà qui est répondu à ma question.
Avec un tableau de tableau(3,3), on doit pouvoir gérer le déplacement d'un dipole dans les huit directions:Nord, nord-est, Est, sud-est...ext....Mais peut etre...Délire-je. (...ça se dit ça ??) :s
____________________
Roro

   
Le 13/05/2012 à 10h27

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:

Avec un tableau de tableau(3,3), on doit pouvoir gérer le déplacement d'un dipole dans les huit directions:Nord, nord-est, Est, sud-est...ext....Mais peut etre...Délire-je. (...ça se dit ça ??) :s

Tu as tout compris.
____________________
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    
Projets open source » Mastermind OK Mort aux bugs !...  

 |  |

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