FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Le jeu du SOLITAIRE Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Le jeu du SOLITAIRE Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Le jeu du SOLITAIRE Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Le jeu du SOLITAIRE Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Le jeu du SOLITAIRE Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Le jeu du SOLITAIRE Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Le jeu du SOLITAIRE Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Le jeu du SOLITAIRE Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Le jeu du SOLITAIRE Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Le jeu du SOLITAIRE Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Le jeu du SOLITAIRE Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Le jeu du SOLITAIRE Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Le jeu du SOLITAIRE Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Le jeu du SOLITAIRE Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Le jeu du SOLITAIRE Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le deal à ne pas rater :
Code promo Nike : -25% dès 50€ d’achats sur tout le site Nike
Voir le deal

 

 Le jeu du SOLITAIRE

Aller en bas 
5 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Le jeu du SOLITAIRE Empty
MessageSujet: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyDim 25 Jan 2015 - 5:29

Salut tout le monde

Vous trouverez sur mon webdav le jeu du Solitaire.
C’est dans Solitaire.zip
Ce zip contient :

Le programme Solitaire0.bas : une première version du jeu.
Et 3 fichiers bmp : pion.bmp ; sphere.bmp ; bravo.bmp

Dézippez le tout dans un dossier de votre choix et … jouer.

NB : Dans le programme,  l’option AutoRun est omise pour vous faire travailler les neurones !
Je vous la posterai, le moment venu.
Elle est déjà fonctionnelle.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Francis-mr




Nombre de messages : 186
Date d'inscription : 26/11/2012

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyDim 25 Jan 2015 - 9:34

Bonjour,
Bravo Papydall, jeu classique mais très réussi ! cheers
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyDim 25 Jan 2015 - 11:00

Bravo, superbe. Encore quelques petites fonctions à rajouter comme la détection de la fin de partie quand on ne peut plus faire de mouvements, mais la réalisation est super efficace.
Une idée en plus du autorun, ce serait le conseil. Quand on pense que l'on ait mal parti qui donnerait un choix pour rendre possible la fin de partie ou du moins avoir une chance de s'en approcher ?
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyDim 25 Jan 2015 - 12:04

Super, un casse tête de plus.

J'ai exactement les mêmes réflexions que Jicehel.

Pour le moment, j'en suis à 4 boules (qui restent)

A+
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyDim 25 Jan 2015 - 13:03

Buongiorno tutti.

Merci à tous pour vos remarques/idées/suggestions …

Jean Claude a écrit:
Pour le moment, j'en suis à 4 boules (qui restent)

Pas mal, pas mal du tout !
Personnellement je n’y arrive que rarement et en trichant !

@Tous
Je vous posterai en début de soirée l’option AutoRun.
Vous avez toute la liberté de modifier/améliorer le code.

Sur un autre post, on a parlé de manque d’idées pour programmer, eh bien en voilà une :
Programmons ENSEMBLE (chacun peut ajouter sa pierre) le jeu du Solitaire.
Suggestions :
Ajouter l’option :  Annulation du dernier coup.
Ajouter un chronomètre.
Inclure une petite musiquette.
….
D’ici-là, amusez-vous bien
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyDim 25 Jan 2015 - 13:38

Il y a un problème.

Quand on arrive en bout de course et que l'on clique sur le bouton "nouveau", il y a 2 cases qui se vident en même temps.

Bon courage Papydall pour le débogage.

A+

PS: j'ai ajouté en début de la sub Nouveau()
Code:
    w = 40 : hi = 400 : li = 400 : esp = 50 : h = hi+esp : l = li+esp
Il semble que c'est bon.

RE: A+
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyDim 25 Jan 2015 - 14:11

Salut Jean Claude

En réalité, seule la variable w = 40 (dimension du picture) est nécessaire.
Les autres variables (hi,li, esp,h,l) sont des vestiges de mise au point, tu peux les virer sans problème.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Le jeu du SOLITAIRE Empty
MessageSujet: re   Le jeu du SOLITAIRE EmptyDim 25 Jan 2015 - 15:28

il est...
  Le jeu du SOLITAIRE Tylych10 
ton jeu.
Laughing
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyDim 25 Jan 2015 - 16:20

C'est chouette, la chouette! Laughing

J’ai ajouté l’option AutoRun et j’ai ajouté un chronomètre.
Re-téléchargez le zip (toujours sous le nom de Solitaire.zip
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyDim 25 Jan 2015 - 20:39

je te met une version où l'on voit la case quand elle est sélectionnée. Ce n'est pas parfait car pour sélectionner un autre pion, il faut cliquer 2 fois dessus mais bon, comme ça on voit bien quand la case est sélectionnée. Perso, j'ai mis une image de pion en rouge, mais on peut simplement augmenter la luminosité du pion sélectionné par exemple puisque l'on utilise kgf.dll. Il faudrait démarrer et arrêter le chrono en automatique pour le bien sans quoi ça n'a pas trop de sens.

Code:
rem ============================================================================
rem       Jeu du Solitaire
rem         Par Papydall
rem ============================================================================

rem ============================================================================
init()
Solitaire_Anglais()
end
rem ============================================================================
SUB Init()
    label clic
    dim p,w, case$(33),f$,fo,hi,li, esp ,h,l,coup, dep, arriv, mang, Nb_coup, selection
    w = 40 : hi = 100 : li = 600
    color 0,255,255,255
    width 0,700
    height 0,700

    form 400 : left 400,50 : top 400,10 : width 400,600 : height 400,600 : hide 400
    alpha 500 : parent 500,400 : top 500,height(400)-80 : left 500,50
    font_bold 500 : font_size 500,22 : caption 500," !!! BRAVO !!! TU ES UN CHAMPION !"

    alpha 520 : top 520,10 : left 520, 100 : font_bold 520 : font_size 520,24
    font_color 520, 0,0,255 : caption 520,"Jeu du Solitaire"
    button 550 : top 550,400 : left 550,50 : caption 550,"Nouveau"
    font_bold 550 : font_size 550,16 : width 550,100 : on_click 550,clic

    button 600 : top 600,400 : left 600,180 : caption 600,"Autorun"
    font_bold 600 : font_size 600,16 : width 600,100 : on_click 600,clic

    button 700 : top 700,400 : left 700,300 : caption 700,"Quitter"
    font_bold 700 : font_size 700,16 : width 700,100 : on_click 700,clic
    
    button 800 : : top 800,400 : left 800,450 : caption 800,"Info"
    font_bold 800 : font_size 800,16 : width 800,100 : on_click 800,clic
    
    dll_on "KGF.dll"
    f$ = "chronometre.swf"
    Flash_In_HTML(f$,0,10,450,li,hi)


END_SUB
rem ============================================================================
rem ============================================================================

' Intégrer un objet Flash dans un objet HTML
' Anim$ est le nom du fichier Flash d'extension SWF
' fo est le numéro du form
' xo,yo coordonnées du coin supérieur gauche
' Larg et Haut sont les dimensions de la fenêtre de vision
SUB Flash_In_HTML(Anim$,fo,xo,yo,larg,haut)
    dim_local  hnd%, res%, url$,q$ ,WB1%
    q$ = chr$(34)
    caption fo,Anim$
    file_open_write 9999,"flash.html"
    file_writeln 9999,"<embed src='"+Anim$+"'"+q$+" width="+q$+str$(larg)+q$+" height="+q$+str$(haut)+q$+">"
    file_close 9999

    hnd% = handle(fo)
    url$ = "file://"+dir_current$+"/flash.html"
    WB1% = dll_call1("WB_Create",hnd%)
    res% = dll_call5("WB_Locate",WB1%,xo,yo,larg+50,haut+50)
    res% = dll_call2("WB_Url",WB1%,adr(url$))

    file_delete "flash.html"
END_SUB
rem ============================================================================
' Solitaire anglais de 33 cases.
' La case 17 est vide
SUB Solitaire_Anglais()
    dim_local l1,l2
    l1 = w*4-10 : l2 = w*2-10
    for p = 1 to 33
        picture p : width p,w : height p,w : on_click p, clic
        hint p,str$(p)
    next p

    for p = 1 to 3
        top p,10+(w+2)*1 : left p,l1+(w+2)*p
    next p

    for p = 4 to 6
        top p,10+(w+2)*2 : left p,l1+(w+2)*(p-3)
    next p

    for p = 7 to 13
        top p,10+(w+2)*3 : left p,l2+(w+2)*(p-6)
    next p

    for p = 14 to 20
        top p,10+(w+2)*4 : left p,l2+(w+2)*(p-13)
    next p

    for p = 21 to 27
        top p,10+(w+2)*5 : left p,l2+(w+2)*(p-20)
    next p

    for p = 28 to 30
        top p,10+(w+2)*6 : left p,l1+(w+2)*(p-27)
    next p

    for p = 31 to 33
        top p,10+(w+2)*7 : left p,l1+(w+2)*(p-30)
    next p

    picture 50 :  parent 50, 400 : width 50,width(400)-50 : height 50,height(400)-50
    file_load 50,"bravo.bmp"
    Nouveau()
END_SUB
rem ===========================================================================
SUB Nouveau()
    dim_local p
    coup = 0 : Nb_coup = 0 : caption 0,"" : selection = 0
    for p = 1 to 33
       file_load p,"sphere.bmp"
       case$(p) = "Occupe"
    next p
    file_load 17,"pion.bmp"
    case$(17) = "Libre"
END_SUB
rem ============================================================================

clic:
   p = number_click
   if p = 550 then Nouveau() : return
   if p = 600 then Autorun() : return
   if p = 700 then Quitter() : return
   if p = 800 then info() : return
   if case$(p) = "Vide" then return
   coup = 1 - coup
   Decode_Clic(p)

return
rem ============================================================================
SUB Decode_Clic(p)
    if coup = 1
       if case$(p) = "Occupe"
           if selection = 1
             file_load dep,"sphere.bmp"
           end_if
           dep = p : file_load dep,"sphere_S.bmp" : selection = 1
       exit_sub
       end_if
    end_if
    arriv = p  :' case d'arrivée
    if (dep = arriv) or (case$(arriv) = "Occupe") then exit_sub

    select arriv
           case 1
                if dep = 03 : mang = 02 : else
                if dep = 09 : mang = 04 : end_if : end_if

           case 2
                if dep = 10 : mang = 05 : end_if

           case 3
                if dep = 01 : mang = 02 : else
                if dep = 11 : mang = 06 : end_if : end_if

           case 4
                if dep = 06 : mang = 05 : else
                if dep = 16 : mang = 09 : end_if : end_if

           case 5
                if dep = 17 : mang = 10 : end_if

           case 6
                if dep = 04 : mang = 05 : else
                if dep = 18 : mang = 11 : end_if : end_if

           case 7
                if dep = 09 : mang = 08 : else
                if dep = 21 : mang = 14 : end_if : end_if

           case 8
                if dep = 10 : mang = 09 : else
                if dep = 22 : mang = 15 : end_if : end_if

           case 9
                if dep = 07 : mang = 08 : else
                if dep = 11 : mang = 10 : else
                if dep = 01 : mang = 04 : else
                if dep = 23 : mang = 16 : end_if : end_if : end_if : end_if

           case 10
                if dep = 08 : mang = 09 : else
                if dep = 12 : mang = 11 : else
                if dep = 02 : mang = 05 : else
                if dep = 24 : mang = 17 : end_if : end_if : end_if : end_if

           case 11
                if dep = 09 : mang = 10 : else
                if dep = 13 : mang = 12 : else
                if dep = 03 : mang = 06 : else
                if dep = 25 : mang = 18 : end_if : end_if : end_if : end_if

           case 12
                if dep = 10 : mang = 11 : else
                if dep = 26 : mang = 19 : end_if : end_if

           case 13
                if dep = 11 : mang = 12 : else
                if dep = 27 : mang = 20 : end_if : end_if

           case 14
                if dep = 16 : mang = 15 : end_if

           case 15
                if dep = 17 : mang = 16 : end_if

           case 16
                if dep = 14 : mang = 15 : else
                if dep = 18 : mang = 17 : else
                if dep = 04 : mang = 09 : else
                if dep = 28 : mang = 23 : end_if : end_if : end_if : end_if

           case 17
                if dep = 19 : mang = 18 : else
                if dep = 15 : mang = 16 : else
                if dep = 05 : mang = 10 : else
                if dep = 29 : mang = 24 : end_if : end_if : end_if : end_if

           case 18
                if dep = 16 : mang = 17 : else
                if dep = 20 : mang = 19 : else
                if dep = 06 : mang = 11 : else
                if dep = 30 : mang = 25 : end_if : end_if : end_if : end_if

           case 19
                if dep = 17 : mang = 18 : end_if

           case 20
                if dep = 18 : mang = 19 : end_if

           case 21
                if dep = 07 : mang = 14 : else
                if dep = 23 : mang = 22 : end_if : end_if

           case 22
                if dep = 08 : mang = 15 : else
                if dep = 24 : mang = 23 : end_if : end_if

           case 23
                if dep = 21 : mang = 22 : else
                if dep = 25 : mang = 24 : else
                if dep = 09 : mang = 16 : else
                if dep = 31 : mang = 28 : end_if : end_if : end_if : end_if

           case 24
                if dep = 22 : mang = 23 : else
                if dep = 26 : mang = 25 : else
                if dep = 10 : mang = 17 : else
                if dep = 32 : mang = 29 : end_if : end_if : end_if : end_if

          case 25
                if dep = 23 : mang = 24 : else
                if dep = 27 : mang = 26 : else
                if dep = 11 : mang = 18 : else
                if dep = 33 : mang = 30 : end_if : end_if : end_if : end_if

          case 26
                if dep = 24 : mang = 25 : else
                if dep = 12 : mang = 19 : end_if : end_if

          case 27
                if dep = 25 : mang = 26 : else
                if dep = 13 : mang = 20 : end_if : end_if

          case 28
                if dep = 30 : mang = 29 : else
                if dep = 16 : mang = 23 : end_if : end_if

          case 29
                if dep = 17 : mang = 24 : end_if

          case 30
                if dep = 28 : mang = 29 : else
                if dep = 18 : mang = 25 : end_if : end_if

          case 31
                if dep = 33 : mang = 32 : else
                if dep = 23 : mang = 28 : end_if : end_if

          case 32
                if dep = 24 : mang = 29 : end_if

          case 33
                if dep = 31 : mang = 32 : else
                if dep = 25 : mang = 30 : end_if : end_if

    end_select

    Jouer_Le_Coup(arriv,dep,mang)

END_SUB
rem ============================================================================
SUB Jouer_Le_Coup(arriv,dep,mang)

    if case$(mang) = "Occupe"
 '  occuper l'arrivée
       file_load arriv,"sphere.bmp"
       case$(arriv) = "Occupe"
 '  Libérer le départ
       file_load dep,"pion.bmp"
       case$(dep) = "Libre"
 '  Manger le pion
       file_load mang,"pion.bmp"
       case$(mang) = "Libre"
       Nb_coup = Nb_coup + 1
       caption 0,"Nombre de coups joués : " + str$(Nb_coup)
       selection = 0
    end_if
    if Nb_coup = 31 then Bravo()
END_SUB
rem ============================================================================
SUB Info()
    dim_local t$
    t$ = " Le solitaire est un jeu de tablier." + chr$(13)
    t$ = t$ + " Il s'agit ici du solitaire anglais en forme de croix grecque à 33 trous." + chr$(13)
    t$ = t$ + " Au départ tous les trous contienent une bille (ou pion ou boule) à l'exception" + chr$(13)
    t$ = t$ + "du trou central qui est vide." + chr$(13)
    t$ = t$ + "Le but du jeu est de 'manger' toutes les pièces pour ne conserver qu'une seule." + chr$(13)
    t$ = t$ + "Pour supprimer une pièce, il faut que 2 pièces soient adjacentes et qu'elles" + chr$(13)
    t$ = t$ + "soient suivies d'une case vide." + chr$(13)
    t$ = t$ + "La 1ère pièce saute par-dessus la seconde pour rejoindre la case vide." + chr$(13)
    t$ = t$ + "La seconde pièce est alors retirée du tablier." + chr$(13)
    t$ = t$ + "Les sauts ne peuvent se faire qu'horizontalement ou verticalement et non en diagonale " + chr$(13)
    t$ = t$ + "------------------------------------------------------------------------------" + chr$(13)
    t$ = t$ + "Pour jouer, utilisez votre souris." + chr$(13)
    t$ = t$ + "Cliquez d'abord sur la boule à déplacer, puis sur la case d'arrivée qui doit" + chr$(13)
    t$ = t$ + "être nécessairement vide, en sautant par dessus une case contenant une boule."+chr$(13)
    t$ = t$ + "------------------------------------------------------------------------------" + chr$(13)
    t$ = t$ + "Vous pouvez démarrer/arrêter le chronomètre à l'aide des boutons adéquats" + chr$(13)+chr$(13)
    t$ = t$ + "************* B O N    D I V E R T I S S E M E N T ***********************"
    message t$
END_SUB
rem ============================================================================
' Régler le volume du haut-parleur
SUB Bravo()
    dim_local q$
    q$ = chr$(34)
    show 400
     file_open_write 9999,"bravo.vbs"
    file_writeln 9999,"Dim speaks, speech"
    file_writeln 9999,"speaks="+q$+"Bravo.... Tu es un champion !!!"+q$
    file_writeln 9999,"Set speech=CreateObject("+q$+"sapi.spvoice"+q$+")"
    file_writeln 9999,"speech.Speak speaks"
    file_close 9999
    execute_wait "bravo.vbs"
    file_delete "bravo.vbs"
    pause 500 : hide 400

END_SUB
rem ============================================================================

SUB Quitter()
    dim_local termine%
    if message_confirmation_yes_no("Vous voulez vraiment quitter ?") = 1
       termine% = dll_call1("KillProcessByHandle",handle(0))
    end_if
END_SUB
rem ============================================================================
rem ============================================================================
SUB Autorun()
    dim_local depart, arrivee, mange
    nouveau()
    restore
    read depart
    while depart <> 0
        read arrivee : read mange
        file_load depart, "pion.bmp"   : ' effacer
        file_load arrivee,"sphere.bmp" : ' deplacer
        file_load mange,  "pion.bmp"   : ' manger
        read depart
        Nb_coup = Nb_coup + 1
       caption 0,"Nombre de coups joués : " + str$(Nb_coup)
       pause 500 : ' à modifier selon vos préferences
    end_while
    pause 1000
    Bravo()

END_SUB

rem ============================================================================
' Solution Solitaire anglais (31 coups)
' départ,arrivée,mangé
data 29,17,24
data 26,24,25
data 33,25,30
data 24,26,25
data 27,25,26
data 18,30,25
data 06,18,11
data 13,11,12
data 18,06,11
data 20,18,19
data 09,11,10
data 02,10,05
data 10,12,11
data 03,11,06
data 12,10,11
data 01,09,04
data 16,04,09
data 14,16,15
data 17,15,16
data 28,16,23
data 31,33,32
data 33,25,30
data 25,11,18
data 11,09,10
data 09,23,16
data 07,09,08
data 04,16,09
data 16,28,23
data 21,23,22
data 28,16,23
data 15,17,16
data 0
rem ============================================================================


je mets les 2 images (elles sont converties par le forum de bmp -> jpg) => Je peux les mettre en bmp quelque part ou modifier les extensions dans les sources pour les utiliser

Le jeu du SOLITAIRE Sphere10
Le jeu du SOLITAIRE Bravo_11

Je rajoute un bravo alternatif pour ceux qui préféreraient une image plus soft.
Le jeu du SOLITAIRE Bravo210
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyLun 26 Jan 2015 - 1:08

Jicehel a écrit:
Je rajoute un bravo alternatif pour ceux qui préféreraient une image plus soft.

Personnellement je ne connais pas beaucoup de Panoramiciens adeptes du soft!

Bravo, Jicehel:
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyLun 26 Jan 2015 - 10:21

J'aurais pu mettre une jeune femme avec les cheveux ébouriffés par le vent pour le clin d'oeil, mais bon, je n'ai pas voulu encouragé la polution du sujet car je crois que ça commence un peu à agacer JL35. Personnellement, je n'ai aucune envie de l'agacer, ça pourrait nuir aux idées machiveliques qu'il a pour trouver de bonnes idées d'utilitaires.
Tient, d'ailleurs avec les onglets, on devrait pouvoir compiler certains utilitaires graphiques dans un seul, avec changement d'outil en cliquant sur l'onglet. Il faudra que j'y réfléchisse dans une quinzaine de jours (le temps que l'abonnement à mon jeu s'arrète).
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyLun 26 Jan 2015 - 23:19

Je te mets une version modifiée de ton programme.
L'idée, c'est que le programme prenne le solitaire depuis un fichier texte.
Ce fichier contiendra aussi la solution du puzzle à terme, mais là ce soir, je n'avais pas le temps de le coder (je n'ai pas encore commencé à jouer ... Smile )
Le code donne:
Code:

rem ============================================================================
rem          Jeu du Solitaire par Papydall modifié par Jicehel
rem                  V2.0 réalisée le 26/01/2015
rem ============================================================================

' ===============================================================================
rem Programme principal
rem ============================================================================

init()
Solitaire_Anglais()
end

rem ============================================================================


'===============================================================================
SUB Init()
    label clic
    dim p : ' Numéro du picture cliqué (la case)
    dim w : w = 40 : ' Taille de l'image d'un pion
    dim hi, li :  hi = 100 : li = 600 : ' hauteur et largeur du chronomètre
    dim nbc_max, nbl_max : nbc_max = 15 : nbl_max = 9 : ' nombre de colonnes et de lignes maximales
    dim case$(nbc_max*nbl_max) : ' Etat des cases
    ' 3 états possibles :      - " " => Case impossible (les pions ne peuvent pas y aller)
    '                          - "x" => Case occupée par un pion
    '                          - "." => Il y a un trou
    dim f$ : ' Variable temporaire stockant le nom du fichier sur lequel on travaille
    dim h,l
    dim coup
    dim dep  : ' La case de départ
    dim arriv : ' La case d'arrivée
    dim mang  : '
    dim Nb_coup
    dim Nb_col, Nb_l

    color 0,255,255,255 :  width 0,700 :    height 0,700

    form 400 : left 400,50 : top 400,10 : width 400,600 : height 400,600 : hide 400
    alpha 500 : parent 500,400 : top 500,height(400)-80 : left 500,50
    font_bold 500 : font_size 500,22 : caption 500," !!! BRAVO !!! TU ES UN CHAMPION !"

    alpha 520 : top 520,10 : left 520, 100 : font_bold 520 : font_size 520,24
    font_color 520, 0,0,255 : caption 520,"Jeu du Solitaire"
    button 550 : top 550,400 : left 550,50 : caption 550,"Nouveau"
    font_bold 550 : font_size 550,16 : width 550,100 : on_click 550,clic

'    button 600 : top 600,400 : left 600,180 : caption 600,"Autorun"
'    font_bold 600 : font_size 600,16 : width 600,100 : on_click 600,clic

    button 700 : top 700,400 : left 700,300 : caption 700,"Quitter"
    font_bold 700 : font_size 700,16 : width 700,100 : on_click 700,clic

    button 800 : : top 800,400 : left 800,450 : caption 800,"Info"
    font_bold 800 : font_size 800,16 : width 800,100 : on_click 800,clic

    dll_on "KGF.dll"
    f$ = "chronometre.swf"
    Flash_In_HTML(f$,0,10,450,li,hi)
END_SUB
rem ============================================================================


' ===============================================================================
' Intégrer un objet Flash dans un objet HTML
' Anim$ est le nom du fichier Flash d'extension SWF
' fo est le numéro du form
' xo,yo coordonnées du coin supérieur gauche
' Larg et Haut sont les dimensions de la fenêtre de vision
rem ============================================================================

SUB Flash_In_HTML(Anim$,fo,xo,yo,larg,haut)
    dim_local  hnd%, res%, url$,q$ ,WB1%
    q$ = chr$(34)
    caption fo,Anim$
    file_open_write 9999,"flash.html"
    file_writeln 9999,"<embed src='"+Anim$+"'"+q$+" width="+q$+str$(larg)+q$+" height="+q$+str$(haut)+q$+">"
    file_close 9999
    hnd% = handle(fo)
    url$ = "file://"+dir_current$+"/flash.html"
    WB1% = dll_call1("WB_Create",hnd%)
    res% = dll_call5("WB_Locate",WB1%,xo,yo,larg+50,haut+50)
    res% = dll_call2("WB_Url",WB1%,adr(url$))
    file_delete "flash.html"
END_SUB
rem ============================================================================

' ===============================================================================
' Solitaire anglais de 33 cases.
' La case 17 est vide

SUB Solitaire_Anglais()
    dim_local l1, Ligne_lue$, s$, indice
    FILE_OPEN_READ 1,"Solitaire_anglais.txt"
    FILE_READLN 1, Ligne_lue$ : ' Première ligne: Nb de colonnes; Nb de lignes; Solution disponible
    s$ = right$(left$(Ligne_lue$,4),2) : Nb_col = val(s$) : Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-5)
    s$ = right$(left$(Ligne_lue$,3),1) : Nb_l = val(s$)  : Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-4)
    ' ici on ajoutera le test pour savoir si la solution est dans le fichier
    FILE_READLN 1, Ligne_lue$
    FILE_READLN 1, Ligne_lue$
    p=1 : l1 = 1
    while file_eof(1) <> 1
      FILE_READLN 1, Ligne_lue$
      Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-2)
      Ligne_lue$ = left$(Ligne_lue$ + string$(Nb_col," "),Nb_col)
      for indice = 1 to Nb_col
          picture p : width p,w : height p,w
          if left$(Ligne_lue$,1)<>" "
            on_click p, clic
            hint p,str$(p)
          end_if
          top p, 10
          top p,10+(w+2)* l1 : left p,10+(w+2)*indice
          case$(p) = left$(Ligne_lue$,1) : Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-1)
          p=p+1
      next indice
      l1 = l1+1
    end_while
   
    picture 250 :  parent 250, 400 : width 250,width(400)-50 : height 250,height(400)-50
    file_load 50,"bravo.bmp"
    Nouveau()
END_SUB
rem ===========================================================================

' ===============================================================================
SUB Nouveau()
    dim_local p
    coup = 0 : Nb_coup = 0 : caption 0,""
    for p = 1 to Nb_col * Nb_l
      if case$(p) = "x" then file_load p,"sphere.bmp"
      if case$(p) = "." then file_load p,"pion.bmp"
    next p
END_SUB
rem ============================================================================

' ===============================================================================
clic:
  p = number_click
  if p = 550 then Nouveau() : return
  if p = 700 then Quitter() : return
  if p = 800 then info() : return
  if coup = 0 and case$(p) = "." then return
  Decode_Clic(p)
return
rem ============================================================================

' ===============================================================================
SUB Decode_Clic(p)

    if case$(p) = "x"
          if coup = 1 then file_load dep,"sphere.bmp"
          dep = p : file_load dep,"sphere_S.bmp" : coup = 1
          exit_sub
    end_if
   
    arriv = p  :' case d'arrivée
    if dep = arriv then exit_sub
    mang = 0
    if arriv = dep-2 then mang = dep-1
    if arriv = dep+2 then mang = dep+1
    if arriv = dep-2*Nb_col then mang=dep-Nb_col
    if arriv = dep+2*Nb_col then mang=dep+Nb_col
    if mang > 0 then Jouer_Le_Coup(arriv,dep,mang)
END_SUB

rem ============================================================================

' ===============================================================================
SUB Jouer_Le_Coup(arriv,dep,mang)
    if case$(mang) = "x"
 '  occuper l'arrivée
      file_load arriv,"sphere.bmp"
      case$(arriv) = "x"
 '  Libérer le départ
      file_load dep,"pion.bmp"
      case$(dep) = "."
 '  Manger le pion
      file_load mang,"pion.bmp"
      case$(mang) = "."
      Nb_coup = Nb_coup + 1
      caption 0,"Nombre de coups joués : " + str$(Nb_coup)
      coup = 0
    end_if
    if Nb_coup = 31 then Bravo()
END_SUB
rem ============================================================================

' ===============================================================================
SUB Info()
    dim_local t$
    t$ = " Le solitaire est un jeu de tablier." + chr$(13)
    t$ = t$ + " Il s'agit ici du solitaire anglais en forme de croix grecque à 33 trous." + chr$(13)
    t$ = t$ + " Au départ tous les trous contienent une bille (ou pion ou boule) à l'exception" + chr$(13)
    t$ = t$ + "du trou central qui est vide." + chr$(13)
    t$ = t$ + "Le but du jeu est de 'manger' toutes les pièces pour ne conserver qu'une seule." + chr$(13)
    t$ = t$ + "Pour supprimer une pièce, il faut que 2 pièces soient adjacentes et qu'elles" + chr$(13)
    t$ = t$ + "soient suivies d'une case vide." + chr$(13)
    t$ = t$ + "La 1ère pièce saute par-dessus la seconde pour rejoindre la case vide." + chr$(13)
    t$ = t$ + "La seconde pièce est alors retirée du tablier." + chr$(13)
    t$ = t$ + "Les sauts ne peuvent se faire qu'horizontalement ou verticalement et non en diagonale " + chr$(13)
    t$ = t$ + "------------------------------------------------------------------------------" + chr$(13)
    t$ = t$ + "Pour jouer, utilisez votre souris." + chr$(13)
    t$ = t$ + "Cliquez d'abord sur la boule à déplacer, puis sur la case d'arrivée qui doit" + chr$(13)
    t$ = t$ + "être nécessairement vide, en sautant par dessus une case contenant une boule."+chr$(13)
    t$ = t$ + "------------------------------------------------------------------------------" + chr$(13)
    t$ = t$ + "Vous pouvez démarrer/arrêter le chronomètre à l'aide des boutons adéquats" + chr$(13)+chr$(13)
    t$ = t$ + "************* B O N    D I V E R T I S S E M E N T ***********************"
    message t$
END_SUB
rem ============================================================================

' ===============================================================================
' Régler le volume du haut-parleur
SUB Bravo()
    dim_local q$
    q$ = chr$(34)
    show 400
    file_open_write 9999,"bravo.vbs"
    file_writeln 9999,"Dim speaks, speech"
    file_writeln 9999,"speaks="+q$+"Bravo.... Tu es un champion !!!"+q$
    file_writeln 9999,"Set speech=CreateObject("+q$+"sapi.spvoice"+q$+")"
    file_writeln 9999,"speech.Speak speaks"
    file_close 9999
    execute_wait "bravo.vbs"
    file_delete "bravo.vbs"
    pause 500 : hide 400

END_SUB
rem ============================================================================

' ===============================================================================
SUB Quitter()
    dim_local termine%
    if message_confirmation_yes_no("Vous voulez vraiment quitter ?") = 1
      termine% = dll_call1("KillProcessByHandle",handle(0))
    end_if
END_SUB
rem ============================================================================



Pour le fichier "Solitaire_anglais.txt" ça donne:
Code:
c:09 l:7 sol:0
  abcdefg
  -------
1|  xxx
2|  xxx
3|xxxxxxx
4|xxx.xxx
5|xxxxxxx
6|  xxx
7|  xxx   

Après il faut juste remettre le bouton Autorun, l'activer si sol vaut 1 et charger les déplacements dans un tableau
Après la résolution automatique calculée, perso, j'ai du mal à la concevoir. Ce serait plus pour un matheux comme toi Wink
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyMar 27 Jan 2015 - 0:49

Thank you Jicehel.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyMar 27 Jan 2015 - 17:41

Voilà, j'ai ajouté la partie pour gérer la solution pour l'autorun, ça donne ça:
Code:

rem ============================================================================
rem          Jeu du Solitaire par Papydall modifié par Jicehel
rem                  V2.0 réalisée le 26/01/2015
rem ============================================================================

' ===============================================================================
rem Programme principal
rem ============================================================================

init()
Solitaire_Anglais()
end

rem ============================================================================


'===============================================================================
SUB Init()

rem ============================================================================
    label clic

rem ============================================================================
    dim p : ' Numéro du picture cliqué (la case)
    dim w : w = 40 : ' Taille de l'image d'un pion
    dim hi, li :  hi = 100 : li = 600 : ' hauteur et largeur du chronomètre
    dim nbc_max, nbl_max : nbc_max = 15 : nbl_max = 9 : ' nombre de colonnes et de lignes maximales
    dim case$(nbc_max*nbl_max) : ' Etat des cases
    ' 3 états possibles :      - " " => Case impossible (les pions ne peuvent pas y aller)
    '                          - "x" => Case occupée par un pion
    '                          - "." => Il y a un trou
    dim f$ : ' Variable temporaire stockant le nom du fichier sur lequel on travaille
    dim h,l
    dim coup
    dim dep  : ' La case de départ
    dim arriv : ' La case d'arrivée
    dim mang  : '
    dim Nb_coup
    dim Nb_col, Nb_l
    dim Sol  : ' Marqueur indiquant si la Solution est renseignée dans la définition du solitaire
    dim T_sol(200,3) : ' Tableau pour stocker la solution (200 coups max ...)
    dim Cpt_Sol: ' Nombre de coup de la solution

rem ============================================================================
    color 0,255,255,255 :  width 0,700 :    height 0,700

    form 400 : left 400,50 : top 400,10 : width 400,600 : height 400,600 : hide 400
    alpha 500 : parent 500,400 : top 500,height(400)-80 : left 500,50
    font_bold 500 : font_size 500,22 : caption 500," !!! BRAVO !!! TU ES UN CHAMPION !"

    alpha 520 : top 520,10 : left 520, 170 : font_bold 520 : font_size 520,24
    font_color 520, 0,0,255 : caption 520,"Jeu du Solitaire"

    button 550 : top 550,460 : left 550,50 : caption 550,"Nouveau"
    font_bold 550 : font_size 550,16 : width 550,100 : on_click 550,clic

    button 600 : top 600,460 : left 600,180 : caption 600,"Autorun"
    font_bold 600 : font_size 600,16 : width 600,100 : on_click 600,clic : inactive 600

    button 700 : top 700,460 : left 700,300 : caption 700,"Quitter"
    font_bold 700 : font_size 700,16 : width 700,100 : on_click 700,clic

    button 800 : : top 800,460 : left 800,450 : caption 800,"Info"
    font_bold 800 : font_size 800,16 : width 800,100 : on_click 800,clic

    dll_on "KGF.dll" : f$ = "chronometre.swf" : Flash_In_HTML(f$,0,10,500,li,hi)
END_SUB
rem ============================================================================


' ===============================================================================
' Intégrer un objet Flash dans un objet HTML
' Anim$ est le nom du fichier Flash d'extension SWF
' fo est le numéro du form
' xo,yo coordonnées du coin supérieur gauche
' Larg et Haut sont les dimensions de la fenêtre de vision
rem ============================================================================

SUB Flash_In_HTML(Anim$,fo,xo,yo,larg,haut)
    dim_local  hnd%, res%, url$,q$ ,WB1%
    q$ = chr$(34)
    caption fo,Anim$
    file_open_write 9999,"flash.html"
    file_writeln 9999,"<embed src='"+Anim$+"'"+q$+" width="+q$+str$(larg)+q$+" height="+q$+str$(haut)+q$+">"
    file_close 9999
    hnd% = handle(fo)
    url$ = "file://"+dir_current$+"/flash.html"
    WB1% = dll_call1("WB_Create",hnd%)
    res% = dll_call5("WB_Locate",WB1%,xo,yo,larg+50,haut+50)
    res% = dll_call2("WB_Url",WB1%,adr(url$))
    file_delete "flash.html"
END_SUB
rem ============================================================================

' ===============================================================================
' Solitaire anglais de 33 cases.
' La case 17 est vide

SUB Solitaire_Anglais()
    dim_local l1, Ligne_lue$, s$, indice, Parcours_Ligne
'    FILE_OPEN_READ 1,"Solitaire_anglais.txt"
    FILE_OPEN_READ 1,"diamant.txt"
    FILE_READLN 1, Ligne_lue$ : ' Première ligne: Nb de colonnes; Nb de lignes; Solution disponible
    s$ = right$(left$(Ligne_lue$,4),2) : Nb_col = val(s$) : Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-5)
    s$ = right$(left$(Ligne_lue$,3),1) : Nb_l = val(s$)  : Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-4)
    s$ = right$(left$(Ligne_lue$,5),1) : Sol = val(s$)
    FILE_READLN 1, Ligne_lue$
    FILE_READLN 1, Ligne_lue$
    p=1 : l1 = 1
    for Parcours_Ligne= 1 to Nb_l
      FILE_READLN 1, Ligne_lue$
      Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-2)
      Ligne_lue$ = left$(Ligne_lue$ + string$(Nb_col," "),Nb_col)
      for indice = 1 to Nb_col
          picture p : width p,w : height p,w
          if left$(Ligne_lue$,1)<>" "
            on_click p, clic
            hint p,str$(p)
          end_if
          top p, 10
          top p,10+(w+2)* l1 : left p,10+(w+2)*indice
          case$(p) = left$(Ligne_lue$,1) : Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-1)
          p=p+1
      next indice
      l1 = l1+1
    next Parcours_Ligne
    if Sol = 1
          FILE_READLN 1, Ligne_lue$
          FILE_READLN 1, Ligne_lue$
          indice = -1
          while file_eof(1) <> 1
            FILE_READLN 1, Ligne_lue$
            while len(Ligne_lue$) >=4
                indice = indice + 1
                s$ = left$(Ligne_lue$,2) : dep = (val(right$(s$,1))-1) * Nb_col + asc(left$(s$,1)) - asc("a") +1
                Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-2)
                s$ = left$(Ligne_lue$,2) : arriv = (val(right$(s$,1))-1) * Nb_col + asc(left$(s$,1)) - asc("a") +1
                if len(Ligne_lue$) > 2 then Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-3)
                if arriv = dep-2 then mang = dep-1
                if arriv = dep+2 then mang = dep+1
                if arriv = dep-2*Nb_col then mang=dep-Nb_col
                if arriv = dep+2*Nb_col then mang=dep+Nb_col
                T_sol(indice,1) = dep : T_sol(indice,2) = mang : T_sol(indice,3) = arriv
            end_while
          end_while
          Cpt_Sol = indice : active 600
    end_if
    picture 250 :  parent 250, 400 : width 250,width(400)-50 : height 250,height(400)-50
    file_load 50,"bravo.bmp"
    Nouveau()
END_SUB
rem ===========================================================================

' ===============================================================================
SUB Nouveau()
    dim_local p
    coup = 0 : Nb_coup = 0 : caption 0,""
    for p = 1 to Nb_col * Nb_l
      if case$(p) = "x" then file_load p,"sphere.bmp"
      if case$(p) = "." then file_load p,"pion.bmp"
    next p
END_SUB
rem ============================================================================

' ===============================================================================
clic:
  p = number_click
  if p = 550 then Nouveau() : return
  if p = 600 then Autorun() : return
  if p = 700 then Quitter() : return
  if p = 800 then info() : return
  if coup = 0 and case$(p) = "." then return
  Decode_Clic(p)
return
rem ============================================================================

' ===============================================================================
SUB Decode_Clic(p)

    if case$(p) = "x"
          if coup = 1 then file_load dep,"sphere.bmp"
          dep = p : file_load dep,"sphere_S.bmp" : coup = 1
          exit_sub
    end_if
   
    arriv = p  :' case d'arrivée
    if dep = arriv then exit_sub
    mang = 0
    if arriv = dep-2 then mang = dep-1
    if arriv = dep+2 then mang = dep+1
    if arriv = dep-2*Nb_col then mang=dep-Nb_col
    if arriv = dep+2*Nb_col then mang=dep+Nb_col
    if mang > 0 then Jouer_Le_Coup(arriv,dep,mang)
END_SUB

rem ============================================================================

' ===============================================================================
SUB Jouer_Le_Coup(arriv,dep,mang)
    if case$(mang) = "x"
 '  occuper l'arrivée
      file_load arriv,"sphere.bmp"
      case$(arriv) = "x"
 '  Libérer le départ
      file_load dep,"pion.bmp"
      case$(dep) = "."
 '  Manger le pion
      file_load mang,"pion.bmp"
      case$(mang) = "."
      Nb_coup = Nb_coup + 1
      caption 0,"Nombre de coups joués : " + str$(Nb_coup)
      coup = 0
    end_if
    if Nb_coup = 31 then Bravo()
END_SUB
rem ============================================================================

' ===============================================================================
SUB Info()
    dim_local t$
    t$ = " Le solitaire est un jeu de tablier." + chr$(13)
    t$ = t$ + " Il s'agit ici du solitaire anglais en forme de croix grecque à 33 trous." + chr$(13)
    t$ = t$ + " Au départ tous les trous contienent une bille (ou pion ou boule) à l'exception" + chr$(13)
    t$ = t$ + "du trou central qui est vide." + chr$(13)
    t$ = t$ + "Le but du jeu est de 'manger' toutes les pièces pour ne conserver qu'une seule." + chr$(13)
    t$ = t$ + "Pour supprimer une pièce, il faut que 2 pièces soient adjacentes et qu'elles" + chr$(13)
    t$ = t$ + "soient suivies d'une case vide." + chr$(13)
    t$ = t$ + "La 1ère pièce saute par-dessus la seconde pour rejoindre la case vide." + chr$(13)
    t$ = t$ + "La seconde pièce est alors retirée du tablier." + chr$(13)
    t$ = t$ + "Les sauts ne peuvent se faire qu'horizontalement ou verticalement et non en diagonale " + chr$(13)
    t$ = t$ + "------------------------------------------------------------------------------" + chr$(13)
    t$ = t$ + "Pour jouer, utilisez votre souris." + chr$(13)
    t$ = t$ + "Cliquez d'abord sur la boule à déplacer, puis sur la case d'arrivée qui doit" + chr$(13)
    t$ = t$ + "être nécessairement vide, en sautant par dessus une case contenant une boule."+chr$(13)
    t$ = t$ + "------------------------------------------------------------------------------" + chr$(13)
    t$ = t$ + "Vous pouvez démarrer/arrêter le chronomètre à l'aide des boutons adéquats" + chr$(13)+chr$(13)
    t$ = t$ + "************* B O N    D I V E R T I S S E M E N T ***********************"
    message t$
END_SUB
rem ============================================================================

' ===============================================================================
' Régler le volume du haut-parleur
SUB Bravo()
    dim_local q$
    q$ = chr$(34)
    show 400
    file_open_write 9999,"bravo.vbs"
    file_writeln 9999,"Dim speaks, speech"
    file_writeln 9999,"speaks="+q$+"Bravo.... Tu es un champion !!!"+q$
    file_writeln 9999,"Set speech=CreateObject("+q$+"sapi.spvoice"+q$+")"
    file_writeln 9999,"speech.Speak speaks"
    file_close 9999
    execute_wait "bravo.vbs"
    file_delete "bravo.vbs"
    pause 500 : hide 400

END_SUB
rem ============================================================================

' ===============================================================================
SUB Quitter()
    dim_local termine%
    if message_confirmation_yes_no("Vous voulez vraiment quitter ?") = 1
      termine% = dll_call1("KillProcessByHandle",handle(0))
    end_if
END_SUB
rem ============================================================================

' ===============================================================================
SUB Autorun()
    dim_local depart, arrivee, mange
    nouveau()
    while Nb_coup <= Cpt_Sol
        Caption 0, str$(T_sol(Nb_coup,1)) + ":" +str$(T_sol(Nb_coup,2)) + ":" +str$(T_sol(Nb_coup,3))
        file_load T_sol(Nb_coup,1), "pion.bmp"  : ' effacer
        file_load T_sol(Nb_coup,3),"sphere.bmp" : ' deplacer
        file_load T_sol(Nb_coup,2),  "pion.bmp"  : ' manger
        Nb_coup = Nb_coup + 1
      caption 0,"Nombre de coups joués : " + str$(Nb_coup)
      pause 500 : ' à modifier selon vos préferences
    end_while
    pause 1000
    Bravo()

END_SUB

Je donne un fichier exemple de solitaire. Il en existe plein à code, je vais en mettre quelques un au fil du temps pour que tu les mettes dans ton zip. Si tu veux, on peut faire un article sur le Solitaire (dans les jeux classiques en continuation des autres articles)

Fichier: "diamant.txt"
Code:
c:11 l:9 sol:1
  abcdefghijk
  -----------
1|    xxx
2|  xxxxx
3|  xxxxxxx
4| xxxxxxxxx
5|xxxxx.xxxxx
6| xxxxxxxxx
7|  xxxxxxx
8|  xxxxx
9|    xxx   

Solution:
d5f5 d3d5 c5e5 a5c5 b4d4 d7d5 b6d6 f3d3 f1f3 c3e3 d2f2 f7d7 c7e7 f9f7 d8f8 e4e2
e1e3 e6e8 e9e7 g2e2 e2e4 e4e6 c5e5 g4g2 g1g3 i4g4 h2h4 i6i4 k5i5 f3h3 i3g3 i4i6
g4i4 j4h4 f7d7 d7d5 d4d6 h7f7 g9g7 h5h7 j6h6 f5f3 f3h3 h3h5 h5f5 e5g5 f7f5 d6f6
g6g8 i7g7 f5h5 h5h7 h7f7 f7f9 h8f8 f9f7 f7f5

Après il faudrait coder la partie "selection du solitaire". Il faut prévoir qu'il en existent des dizaines différents.
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyMar 27 Jan 2015 - 17:43

Jicehel a écrit:
Perso, j'ai mis une image de pion en rouge, mais on peut simplement augmenter la luminosité du pion sélectionné par exemple puisque l'on utilise kgf.dll

J’ai refais mon apprentissage de Panoramic : Pour changer la luminosité d’un PICTURE, on n’a pas besoin de KGF.DLL.
Panoramic nous offre la commande BRIGHTNESS N,V

Dans la SUB Decode_Clic(p), j’ai changé file_load dep,"sphere_S.bmp" par brightness p,50 et ça marche.

EDIT : dans ton dernier code, l'AutoRun est à revoir : il reste 3 boules !
Re EDIT : jette un oeil ici
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyMar 27 Jan 2015 - 18:27

Oui, j'ai fais ça rapidos pendant ma pause au boulot mais je regarde ce soir, je n'ai pas pofiné ... Déjà que j'ai pris une bonne pause pour le coder car j'avais fait des bétises, je n'ai pas voulu abuser mais j'ai peut être posté un peu vite, je regarde
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyMar 27 Jan 2015 - 18:35

Pas de problème, Jicehel.
C’est ainsi qu’on progresse.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyMar 27 Jan 2015 - 18:36

Par contre pour moi l'autorun fonctionne. Peut être un problème de copie du fichier texte sur le forum. je ferais un zip avec les fichiers.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyMar 27 Jan 2015 - 21:32

Voilà, j'ai mis les plateaux de jeu (quelques uns, il faudra que j'en fasse d'autre plus tard) ici: Fichier zip avec les plateaux

Sinon j'ai intégré ta trouvaille sur le Brighness dans le code, ça donne ça:
Code:

rem ============================================================================
rem          Jeu du Solitaire par Papydall modifié par Jicehel
rem                  V2.0 réalisée le 26/01/2015
rem ============================================================================

' ===============================================================================
rem Programme principal
rem ============================================================================

init()
Solitaire_Anglais()
end

rem ============================================================================


'===============================================================================
SUB Init()

rem ============================================================================
    label clic

rem ============================================================================
    dim p : ' Numéro du picture cliqué (la case)
    dim w : w = 40 : ' Taille de l'image d'un pion
    dim hi, li :  hi = 100 : li = 600 : ' hauteur et largeur du chronomètre
    dim nbc_max, nbl_max : nbc_max = 15 : nbl_max = 9 : ' nombre de colonnes et de lignes maximales
    dim case$(nbc_max*nbl_max) : ' Etat des cases
    ' 3 états possibles :      - " " => Case impossible (les pions ne peuvent pas y aller)
    '                          - "x" => Case occupée par un pion
    '                          - "." => Il y a un trou
    dim f$ : ' Variable temporaire stockant le nom du fichier sur lequel on travaille
    dim h,l
    dim coup
    dim dep  : ' La case de départ
    dim arriv : ' La case d'arrivée
    dim mang  : '
    dim Nb_coup
    dim Nb_col, Nb_l
    dim Sol  : ' Marqueur indiquant si la Solution est renseignée dans la définition du solitaire
    dim T_sol(200,3) : ' Tableau pour stocker la solution (200 coups max ...)
    dim Cpt_Sol: ' Nombre de coup de la solution

rem ============================================================================
    color 0,255,255,255 :  width 0,700 :    height 0,700

    form 400 : left 400,50 : top 400,10 : width 400,600 : height 400,600 : hide 400
    alpha 500 : parent 500,400 : top 500,height(400)-80 : left 500,50
    font_bold 500 : font_size 500,22 : caption 500," !!! BRAVO !!! TU ES UN CHAMPION !"

    alpha 520 : top 520,10 : left 520, 170 : font_bold 520 : font_size 520,24
    font_color 520, 0,0,255 : caption 520,"Jeu du Solitaire"

    button 550 : top 550,460 : left 550,50 : caption 550,"Nouveau"
    font_bold 550 : font_size 550,16 : width 550,100 : on_click 550,clic

    button 600 : top 600,460 : left 600,180 : caption 600,"Autorun"
    font_bold 600 : font_size 600,16 : width 600,100 : on_click 600,clic : inactive 600

    button 700 : top 700,460 : left 700,300 : caption 700,"Quitter"
    font_bold 700 : font_size 700,16 : width 700,100 : on_click 700,clic

    button 800 : : top 800,460 : left 800,450 : caption 800,"Info"
    font_bold 800 : font_size 800,16 : width 800,100 : on_click 800,clic

    dll_on "KGF.dll" : f$ = "chronometre.swf" : Flash_In_HTML(f$,0,10,500,li,hi)
END_SUB
rem ============================================================================


' ===============================================================================
' Intégrer un objet Flash dans un objet HTML
' Anim$ est le nom du fichier Flash d'extension SWF
' fo est le numéro du form
' xo,yo coordonnées du coin supérieur gauche
' Larg et Haut sont les dimensions de la fenêtre de vision
rem ============================================================================

SUB Flash_In_HTML(Anim$,fo,xo,yo,larg,haut)
    dim_local  hnd%, res%, url$,q$ ,WB1%
    q$ = chr$(34)
    caption fo,Anim$
    file_open_write 9999,"flash.html"
    file_writeln 9999,"<embed src='"+Anim$+"'"+q$+" width="+q$+str$(larg)+q$+" height="+q$+str$(haut)+q$+">"
    file_close 9999
    hnd% = handle(fo)
    url$ = "file://"+dir_current$+"/flash.html"
    WB1% = dll_call1("WB_Create",hnd%)
    res% = dll_call5("WB_Locate",WB1%,xo,yo,larg+50,haut+50)
    res% = dll_call2("WB_Url",WB1%,adr(url$))
    file_delete "flash.html"
END_SUB
rem ============================================================================

' ===============================================================================
' Solitaire anglais de 33 cases.
' La case 17 est vide

SUB Solitaire_Anglais()
    dim_local l1, Ligne_lue$, s$, indice, Parcours_Ligne
'    FILE_OPEN_READ 1,"Solitaire_anglais.txt"
    FILE_OPEN_READ 1,"s.txt"
    FILE_READLN 1, Ligne_lue$ : ' Première ligne: Nb de colonnes; Nb de lignes; Solution disponible
    s$ = right$(left$(Ligne_lue$,4),2) : Nb_col = val(s$) : Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-5)
    s$ = right$(left$(Ligne_lue$,3),1) : Nb_l = val(s$)  : Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-4)
    s$ = right$(left$(Ligne_lue$,5),1) : Sol = val(s$)
    FILE_READLN 1, Ligne_lue$
    FILE_READLN 1, Ligne_lue$
    p=1 : l1 = 1
    for Parcours_Ligne= 1 to Nb_l
      FILE_READLN 1, Ligne_lue$
      Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-2)
      Ligne_lue$ = left$(Ligne_lue$ + string$(Nb_col," "),Nb_col)
      for indice = 1 to Nb_col
          picture p : width p,w : height p,w
          if left$(Ligne_lue$,1)<>" "
            on_click p, clic
            hint p,str$(p)
          end_if
          top p, 10
          top p,10+(w+2)* l1 : left p,10+(w+2)*indice
          case$(p) = left$(Ligne_lue$,1) : Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-1)
          p=p+1
      next indice
      l1 = l1+1
    next Parcours_Ligne
    if Sol = 1
          FILE_READLN 1, Ligne_lue$
          FILE_READLN 1, Ligne_lue$
          indice = -1
          while file_eof(1) <> 1
            FILE_READLN 1, Ligne_lue$
            while len(Ligne_lue$) >=4
                indice = indice + 1
                s$ = left$(Ligne_lue$,2) : dep = (val(right$(s$,1))-1) * Nb_col + asc(left$(s$,1)) - asc("a") +1
                Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-2)
                s$ = left$(Ligne_lue$,2) : arriv = (val(right$(s$,1))-1) * Nb_col + asc(left$(s$,1)) - asc("a") +1
                if len(Ligne_lue$) > 2 then Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-3)
                if arriv = dep-2 then mang = dep-1
                if arriv = dep+2 then mang = dep+1
                if arriv = dep-2*Nb_col then mang=dep-Nb_col
                if arriv = dep+2*Nb_col then mang=dep+Nb_col
                T_sol(indice,1) = dep : T_sol(indice,2) = mang : T_sol(indice,3) = arriv
            end_while
          end_while
          Cpt_Sol = indice : active 600
    end_if
    picture 250 :  parent 250, 400 : width 250,width(400)-50 : height 250,height(400)-50
    file_load 50,"bravo.bmp"
    Nouveau()
END_SUB
rem ===========================================================================

' ===============================================================================
SUB Nouveau()
    dim_local p
    coup = 0 : Nb_coup = 0 : caption 0,""
    for p = 1 to Nb_col * Nb_l
      if case$(p) = "x" then file_load p,"sphere.bmp"
      if case$(p) = "." then file_load p,"pion.bmp"
    next p
END_SUB
rem ============================================================================

' ===============================================================================
clic:
  p = number_click
  if p = 550 then Nouveau() : return
  if p = 600 then Autorun() : return
  if p = 700 then Quitter() : return
  if p = 800 then info() : return
  if coup = 0 and case$(p) = "." then return
  Decode_Clic(p)
return
rem ============================================================================

' ===============================================================================
SUB Decode_Clic(p)

    if case$(p) = "x"
          if coup = 1 then file_load dep,"sphere.bmp"
          dep = p : brightness p,50 : coup = 1
          exit_sub
    end_if
   
    arriv = p  :' case d'arrivée
    if dep = arriv then exit_sub
    mang = 0
    if arriv = dep-2 then mang = dep-1
    if arriv = dep+2 then mang = dep+1
    if arriv = dep-2*Nb_col then mang=dep-Nb_col
    if arriv = dep+2*Nb_col then mang=dep+Nb_col
    if mang > 0 then Jouer_Le_Coup(arriv,dep,mang)
END_SUB

rem ============================================================================

' ===============================================================================
SUB Jouer_Le_Coup(arriv,dep,mang)
    if case$(mang) = "x"
 '  occuper l'arrivée
      file_load arriv,"sphere.bmp"
      case$(arriv) = "x"
 '  Libérer le départ
      file_load dep,"pion.bmp"
      case$(dep) = "."
 '  Manger le pion
      file_load mang,"pion.bmp"
      case$(mang) = "."
      Nb_coup = Nb_coup + 1
      caption 0,"Nombre de coups joués : " + str$(Nb_coup)
      coup = 0
    end_if
    if Nb_coup = 31 then Bravo()
END_SUB
rem ============================================================================

' ===============================================================================
SUB Info()
    dim_local t$
    t$ = " Le solitaire est un jeu de tablier." + chr$(13)
    t$ = t$ + " Il s'agit ici du solitaire anglais en forme de croix grecque à 33 trous." + chr$(13)
    t$ = t$ + " Au départ tous les trous contienent une bille (ou pion ou boule) à l'exception" + chr$(13)
    t$ = t$ + "du trou central qui est vide." + chr$(13)
    t$ = t$ + "Le but du jeu est de 'manger' toutes les pièces pour ne conserver qu'une seule." + chr$(13)
    t$ = t$ + "Pour supprimer une pièce, il faut que 2 pièces soient adjacentes et qu'elles" + chr$(13)
    t$ = t$ + "soient suivies d'une case vide." + chr$(13)
    t$ = t$ + "La 1ère pièce saute par-dessus la seconde pour rejoindre la case vide." + chr$(13)
    t$ = t$ + "La seconde pièce est alors retirée du tablier." + chr$(13)
    t$ = t$ + "Les sauts ne peuvent se faire qu'horizontalement ou verticalement et non en diagonale " + chr$(13)
    t$ = t$ + "------------------------------------------------------------------------------" + chr$(13)
    t$ = t$ + "Pour jouer, utilisez votre souris." + chr$(13)
    t$ = t$ + "Cliquez d'abord sur la boule à déplacer, puis sur la case d'arrivée qui doit" + chr$(13)
    t$ = t$ + "être nécessairement vide, en sautant par dessus une case contenant une boule."+chr$(13)
    t$ = t$ + "------------------------------------------------------------------------------" + chr$(13)
    t$ = t$ + "Vous pouvez démarrer/arrêter le chronomètre à l'aide des boutons adéquats" + chr$(13)+chr$(13)
    t$ = t$ + "************* B O N    D I V E R T I S S E M E N T ***********************"
    message t$
END_SUB
rem ============================================================================

' ===============================================================================
' Régler le volume du haut-parleur
SUB Bravo()
    dim_local q$
    q$ = chr$(34)
    show 400
    file_open_write 9999,"bravo.vbs"
    file_writeln 9999,"Dim speaks, speech"
    file_writeln 9999,"speaks="+q$+"Bravo.... Tu es un champion !!!"+q$
    file_writeln 9999,"Set speech=CreateObject("+q$+"sapi.spvoice"+q$+")"
    file_writeln 9999,"speech.Speak speaks"
    file_close 9999
    execute_wait "bravo.vbs"
    file_delete "bravo.vbs"
    pause 500 : hide 400

END_SUB
rem ============================================================================

' ===============================================================================
SUB Quitter()
    dim_local termine%
    if message_confirmation_yes_no("Vous voulez vraiment quitter ?") = 1
      termine% = dll_call1("KillProcessByHandle",handle(0))
    end_if
END_SUB
rem ============================================================================

' ===============================================================================
SUB Autorun()
    dim_local depart, arrivee, mange
    nouveau()
    inactive 700 : inactive 600 : inactive 550 : inactive 800
    while Nb_coup <= Cpt_Sol
        Caption 0, str$(T_sol(Nb_coup,1)) + ":" +str$(T_sol(Nb_coup,2)) + ":" +str$(T_sol(Nb_coup,3))
        brightness T_sol(Nb_coup,1),50: wait 300
        file_load T_sol(Nb_coup,1),"pion.bmp"  : ' effacer
        file_load T_sol(Nb_coup,3),"sphere.bmp" : ' deplacer
        file_load T_sol(Nb_coup,2),  "pion.bmp"  : ' manger
        brightness T_sol(Nb_coup,3),50: wait 300
        file_load T_sol(Nb_coup,3),"sphere.bmp" : ' remettre normal
        Nb_coup = Nb_coup + 1 : wait 500
      caption 0,"Nombre de coups joués : " + str$(Nb_coup)
    end_while
    active 700 : active 550 : active 800
    pause 800
    Bravo()

END_SUB


Bon, je te laisse faire un peu de cosmétique et intégrer la partie choix du plateau de jeu ?
De mon côté, si tu veux, je peux faire un article pour le mag sur le solitaire et faire d'autres plateaux + solution
PS: je n'ai pas fini la solution du plateau anglais faute de temps. Ca fera parti de ce qui seront fait plus tard.
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyMar 27 Jan 2015 - 22:09

Dès que possible j'irais voir ton fichier avec les plateaux, Jicehel,

En attendant, j'utilise ta version avec les pions rouges qui indiquent le pion en cours de jeu, et je dois dire que cela rend le jeu plus lisible.

Pour le moment, je n'ai pas réussi à faire mieux que 3 pions restants.

A+

Quelle bonne idée, Papydall, tu as eu de faire ce jeu en Panoramic !
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyMar 27 Jan 2015 - 22:14

En plus qu'en tu auras trouvé la solution du plateau, tu as tellement de variantes (formes, positions de départs, etc...) que tu en auras pour un moment à te casser la tête ...
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyMer 28 Jan 2015 - 0:17

Bravo, jicehel ! Tu est un champion !
Jicehel a écrit:
De mon côté, si tu veux, je peux faire un article pour le mag sur le solitaire et faire d'autres plateaux + solution

Moi je veux bien ; vas-y pour l’article.
C’est ton plein droit.

Remarque :
Dans ton code lignes 148 et 149 :
Code:
 picture 250 :  parent 250, 400 : width 250,width(400)-50 : height 250,height(400)-50
    file_load 50,"bravo.bmp"
C’est :
Code:
File_load 250,"bravo.bmp"
Autre anomalie :
Quand on joue quelques coups et on demande Nouveau, Nouveau ne réinitialise pas le plateau.
Il faut réinitialiser case$(p) dans SUB Nouveau()

Jean Claude a écrit:
Quelle bonne idée, Papydall, tu as eu de faire ce jeu en Panoramic !
C’est juste pour  donner du boulot à Jicehel  Laughing  et à tous ceux qui veulent bien sûr s’y mettre.
C’est à toi …
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyMer 28 Jan 2015 - 1:28

Ah oui, tu as raison. Je n'avais pas du tout testé ça, mais du coup en plus, ce n'était plus logique au niveau de l'organisation du programme (et j'avais oublié de fermer le fichier.)

Il faudrait coder:
le bouton quitter pour le changer en arrêter quand le programme est en autorun
la sélection du plateau de jeu

Là, j'ai fini de jouer et de regarder "La France a un incroyable talent", alors je mets la version qui corrige le problème de gestion du bouton démarrer + le 250 qui était resté en 50

Code:

rem ============================================================================
rem          Jeu du Solitaire par Papydall modifié par Jicehel
rem                  V2.0 réalisée le 26/01/2015
rem ============================================================================

' ===============================================================================
rem Programme principal
rem ============================================================================

init()
Solitaire()
end

rem ============================================================================


'===============================================================================
SUB Init()

rem ============================================================================
    label clic

rem ============================================================================
    dim p : ' Numéro du picture cliqué (la case)
    dim w : w = 40 : ' Taille de l'image d'un pion
    dim hi, li :  hi = 100 : li = 600 : ' hauteur et largeur du chronomètre
    dim nbc_max, nbl_max : nbc_max = 15 : nbl_max = 9 : ' nombre de colonnes et de lignes maximales
    dim case$(nbc_max*nbl_max) : ' Etat des cases
    ' 3 états possibles :      - " " => Case impossible (les pions ne peuvent pas y aller)
    '                          - "x" => Case occupée par un pion
    '                          - "." => Il y a un trou
    dim f$ : ' Variable temporaire stockant le nom du fichier sur lequel on travaille
    dim h,l
    dim coup
    dim dep  : ' La case de départ
    dim arriv : ' La case d'arrivée
    dim mang  : '
    dim Nb_coup
    dim Nb_col, Nb_l
    dim Sol  : ' Marqueur indiquant si la Solution est renseignée dans la définition du solitaire
    dim T_sol(200,3) : ' Tableau pour stocker la solution (200 coups max ...)
    dim Cpt_Sol: ' Nombre de coup de la solution

rem ============================================================================
    color 0,255,255,255 :  width 0,700 :    height 0,700

    form 400 : left 400,50 : top 400,10 : width 400,600 : height 400,600 : hide 400
    alpha 500 : parent 500,400 : top 500,height(400)-80 : left 500,50
    font_bold 500 : font_size 500,22 : caption 500," !!! BRAVO !!! TU ES UN CHAMPION !"

    alpha 520 : top 520,10 : left 520, 170 : font_bold 520 : font_size 520,24
    font_color 520, 0,0,255 : caption 520,"Jeu du Solitaire"

    button 550 : top 550,460 : left 550,50 : caption 550,"Nouveau"
    font_bold 550 : font_size 550,16 : width 550,100 : on_click 550,clic

    button 600 : top 600,460 : left 600,180 : caption 600,"Autorun"
    font_bold 600 : font_size 600,16 : width 600,100 : on_click 600,clic : inactive 600

    button 700 : top 700,460 : left 700,300 : caption 700,"Quitter"
    font_bold 700 : font_size 700,16 : width 700,100 : on_click 700,clic

    button 800 : : top 800,460 : left 800,450 : caption 800,"Info"
    font_bold 800 : font_size 800,16 : width 800,100 : on_click 800,clic

    dll_on "KGF.dll" : f$ = "chronometre.swf" : Flash_In_HTML(f$,0,10,500,li,hi)
END_SUB
rem ============================================================================


' ===============================================================================
' Intégrer un objet Flash dans un objet HTML
' Anim$ est le nom du fichier Flash d'extension SWF
' fo est le numéro du form
' xo,yo coordonnées du coin supérieur gauche
' Larg et Haut sont les dimensions de la fenêtre de vision
rem ============================================================================

SUB Flash_In_HTML(Anim$,fo,xo,yo,larg,haut)
    dim_local  hnd%, res%, url$,q$ ,WB1%
    q$ = chr$(34)
    caption fo,Anim$
    file_open_write 9999,"flash.html"
    file_writeln 9999,"<embed src='"+Anim$+"'"+q$+" width="+q$+str$(larg)+q$+" height="+q$+str$(haut)+q$+">"
    file_close 9999
    hnd% = handle(fo)
    url$ = "file://"+dir_current$+"/flash.html"
    WB1% = dll_call1("WB_Create",hnd%)
    res% = dll_call5("WB_Locate",WB1%,xo,yo,larg+50,haut+50)
    res% = dll_call2("WB_Url",WB1%,adr(url$))
    file_delete "flash.html"
END_SUB
rem ============================================================================

' ===============================================================================
' Solitaire anglais de 33 cases.
' La case 17 est vide

SUB Solitaire()
    dim_local l1, Ligne_lue$, s$, indice, Parcours_Ligne
'    FILE_OPEN_READ 1,"Solitaire_anglais.txt"
    FILE_OPEN_READ 1,"s.txt"
    FILE_READLN 1, Ligne_lue$ : ' Première ligne: Nb de colonnes; Nb de lignes; Solution disponible
    s$ = right$(left$(Ligne_lue$,4),2) : Nb_col = val(s$) : Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-5)
    s$ = right$(left$(Ligne_lue$,3),1) : Nb_l = val(s$)  : Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-4)
    s$ = right$(left$(Ligne_lue$,5),1) : Sol = val(s$)
    FILE_READLN 1, Ligne_lue$
    FILE_READLN 1, Ligne_lue$
    p=1 : l1 = 1
    for Parcours_Ligne= 1 to Nb_l
      FILE_READLN 1, Ligne_lue$
      Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-2)
      Ligne_lue$ = left$(Ligne_lue$ + string$(Nb_col," "),Nb_col)
      for indice = 1 to Nb_col
          if object_exists(p) = 0 then picture p : width p,w : height p,w
          if left$(Ligne_lue$,1)<>" "
            on_click p, clic
            hint p,str$(p)
          end_if
          top p, 10
          top p,10+(w+2)* l1 : left p,10+(w+2)*indice
          case$(p) = left$(Ligne_lue$,1) : Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-1)
          p=p+1
      next indice
      l1 = l1+1
    next Parcours_Ligne
    if Sol = 1
          FILE_READLN 1, Ligne_lue$
          FILE_READLN 1, Ligne_lue$
          indice = -1
          while file_eof(1) <> 1
            FILE_READLN 1, Ligne_lue$
            while len(Ligne_lue$) >=4
                indice = indice + 1
                s$ = left$(Ligne_lue$,2) : dep = (val(right$(s$,1))-1) * Nb_col + asc(left$(s$,1)) - asc("a") +1
                Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-2)
                s$ = left$(Ligne_lue$,2) : arriv = (val(right$(s$,1))-1) * Nb_col + asc(left$(s$,1)) - asc("a") +1
                if len(Ligne_lue$) > 2 then Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-3)
                if arriv = dep-2 then mang = dep-1
                if arriv = dep+2 then mang = dep+1
                if arriv = dep-2*Nb_col then mang=dep-Nb_col
                if arriv = dep+2*Nb_col then mang=dep+Nb_col
                T_sol(indice,1) = dep : T_sol(indice,2) = mang : T_sol(indice,3) = arriv
            end_while
          end_while
          Cpt_Sol = indice : active 600
    end_if
    FILE_CLOSE 1
    if object_exists(250) = 0 then picture 250 :  parent 250, 400 : width 250,width(400)-50 : height 250,height(400)-50
    file_load 250,"bravo.bmp"
    coup = 0 : Nb_coup = 0 : caption 0,""
    for indice = 1 to Nb_col * Nb_l
      if case$(indice) = "x" then file_load indice,"sphere.bmp"
      if case$(indice) = "." then file_load indice,"pion.bmp"
    next indice
END_SUB
rem ============================================================================

' ===============================================================================
clic:
  p = number_click
  if p = 550 then Solitaire() : return
  if p = 600 then Autorun() : return
  if p = 700 then Quitter() : return
  if p = 800 then info() : return
  if coup = 0 and case$(p) = "." then return
  Decode_Clic(p)
return
rem ============================================================================

' ===============================================================================
SUB Decode_Clic(p)

    if case$(p) = "x"
          if coup = 1 then file_load dep,"sphere.bmp"
          dep = p : brightness p,50 : coup = 1
          exit_sub
    end_if
   
    arriv = p  :' case d'arrivée
    if dep = arriv then exit_sub
    mang = 0
    if arriv = dep-2 then mang = dep-1
    if arriv = dep+2 then mang = dep+1
    if arriv = dep-2*Nb_col then mang=dep-Nb_col
    if arriv = dep+2*Nb_col then mang=dep+Nb_col
    if mang > 0 then Jouer_Le_Coup(arriv,dep,mang)
END_SUB

rem ============================================================================

' ===============================================================================
SUB Jouer_Le_Coup(arriv,dep,mang)
    if case$(mang) = "x"
 '  occuper l'arrivée
      file_load arriv,"sphere.bmp"
      case$(arriv) = "x"
 '  Libérer le départ
      file_load dep,"pion.bmp"
      case$(dep) = "."
 '  Manger le pion
      file_load mang,"pion.bmp"
      case$(mang) = "."
      Nb_coup = Nb_coup + 1
      caption 0,"Nombre de coups joués : " + str$(Nb_coup)
      coup = 0
    end_if
    if Nb_coup = 31 then Bravo()
END_SUB
rem ============================================================================

' ===============================================================================
SUB Info()
    dim_local t$
    t$ = " Le solitaire est un jeu de tablier." + chr$(13)
    t$ = t$ + " Il s'agit ici du solitaire anglais en forme de croix grecque à 33 trous." + chr$(13)
    t$ = t$ + " Au départ tous les trous contienent une bille (ou pion ou boule) à l'exception" + chr$(13)
    t$ = t$ + "du trou central qui est vide." + chr$(13)
    t$ = t$ + "Le but du jeu est de 'manger' toutes les pièces pour ne conserver qu'une seule." + chr$(13)
    t$ = t$ + "Pour supprimer une pièce, il faut que 2 pièces soient adjacentes et qu'elles" + chr$(13)
    t$ = t$ + "soient suivies d'une case vide." + chr$(13)
    t$ = t$ + "La 1ère pièce saute par-dessus la seconde pour rejoindre la case vide." + chr$(13)
    t$ = t$ + "La seconde pièce est alors retirée du tablier." + chr$(13)
    t$ = t$ + "Les sauts ne peuvent se faire qu'horizontalement ou verticalement et non en diagonale " + chr$(13)
    t$ = t$ + "------------------------------------------------------------------------------" + chr$(13)
    t$ = t$ + "Pour jouer, utilisez votre souris." + chr$(13)
    t$ = t$ + "Cliquez d'abord sur la boule à déplacer, puis sur la case d'arrivée qui doit" + chr$(13)
    t$ = t$ + "être nécessairement vide, en sautant par dessus une case contenant une boule."+chr$(13)
    t$ = t$ + "------------------------------------------------------------------------------" + chr$(13)
    t$ = t$ + "Vous pouvez démarrer/arrêter le chronomètre à l'aide des boutons adéquats" + chr$(13)+chr$(13)
    t$ = t$ + "************* B O N    D I V E R T I S S E M E N T ***********************"
    message t$
END_SUB
rem ============================================================================

' ===============================================================================
' Régler le volume du haut-parleur
SUB Bravo()
    dim_local q$
    q$ = chr$(34)
    show 400
    file_open_write 9999,"bravo.vbs"
    file_writeln 9999,"Dim speaks, speech"
    file_writeln 9999,"speaks="+q$+"Bravo.... Tu es un champion !!!"+q$
    file_writeln 9999,"Set speech=CreateObject("+q$+"sapi.spvoice"+q$+")"
    file_writeln 9999,"speech.Speak speaks"
    file_close 9999
    execute_wait "bravo.vbs"
    file_delete "bravo.vbs"
    pause 500 : hide 400

END_SUB
rem ============================================================================

' ===============================================================================
SUB Quitter()
    dim_local termine%
    if message_confirmation_yes_no("Vous voulez vraiment quitter ?") = 1
      termine% = dll_call1("KillProcessByHandle",handle(0))
    end_if
END_SUB
rem ============================================================================

' ===============================================================================
SUB Autorun()
    dim_local depart, arrivee, mange
    solitaire()
    inactive 700 : inactive 600 : inactive 550 : inactive 800
    while Nb_coup <= Cpt_Sol
        Caption 0, str$(T_sol(Nb_coup,1)) + ":" +str$(T_sol(Nb_coup,2)) + ":" +str$(T_sol(Nb_coup,3))
        brightness T_sol(Nb_coup,1),50: wait 200
        file_load T_sol(Nb_coup,1),"pion.bmp"  : ' effacer
        file_load T_sol(Nb_coup,3),"sphere.bmp" : ' deplacer
        file_load T_sol(Nb_coup,2),  "pion.bmp"  : ' manger
        brightness T_sol(Nb_coup,3),50: wait 200
        file_load T_sol(Nb_coup,3),"sphere.bmp" : ' remettre normal
        Nb_coup = Nb_coup + 1 : wait 300
      caption 0,"Nombre de coups joués : " + str$(Nb_coup)
    end_while
    active 700 : active 550 : active 800
    pause 800
    Bravo()

END_SUB

Aller en cadeau, j'ai redimensionné l'image pour que ça tienne mieux dans l'image qui apparaît en fin de jeu
Le jeu du SOLITAIRE Bravo_12



Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE EmptyMer 28 Jan 2015 - 20:40

De mon coté j'ai continué sur le code de Jicehel avec les plateaux (pistes).

J'ai ajouté un combo pour choisir le plateau (que j'ai appelé piste). pour commencer il est impératif de choisir une piste. Pour changer de piste il faut relancer le programme.

Il faut, évidement, récupérer les éléments plateaux sur le lien qu'a indiqué Jicehel =>  http://fzip.li/WD57/

Je n'ai pas réussi à trouver le moyen de centrer la piste dans la fenêtre.

Code:
rem ============================================================================
rem          Jeu du Solitaire par Papydall modifié par Jicehel
rem                  V2.0 réalisée le 26/01/2015
rem ============================================================================

' ===============================================================================
rem Programme principal
rem ============================================================================

init()

end

rem ============================================================================


'===============================================================================
SUB Init()

rem ============================================================================
    label clic,choix
rem ============================================================================
    dim n%:' choiX aléatoire du plateaux
    dim p : ' Numéro du picture cliqué (la case)
    dim w : w = 40 : ' Taille de l'image d'un pion
    dim hi, li :  hi = 100 : li = 600 : ' hauteur et largeur du chronomètre
    dim nbc_max, nbl_max : nbc_max = 15 : nbl_max = 9 : ' nombre de colonnes et de lignes maximales
    dim case$(nbc_max*nbl_max) : ' Etat des cases
    ' 3 états possibles :      - " " => Case impossible (les pions ne peuvent pas y aller)
    '                          - "x" => Case occupée par un pion
    '                          - "." => Il y a un trou
    dim a$,f$,f2$(7) : ' Variable temporaire stockant le nom du fichier sur lequel on travaille
    dim h,l
    dim coup
    dim dep  : ' La case de départ
    dim arriv : ' La case d'arrivée
    dim mang  : '
    dim Nb_coup
    dim Nb_col, Nb_l
    dim Sol  : ' Marqueur indiquant si la Solution est renseignée dans la définition du solitaire
    dim T_sol(200,3) : ' Tableau pour stocker la solution (200 coups max ...)
    dim Cpt_Sol: ' Nombre de coup de la solution

    f2$(1)="Solitaire_anglais.txt"
    f2$(2)="diamant.txt"
    f2$(3)="holicron.txt"
    f2$(4)="Le_rectangle.txt"
    f2$(5)="Noeud_papillon.txt"
    f2$(6)="Sphere.txt"
    f2$(7)="S.txt"

rem ============================================================================
    color 0,255,255,255 :  width 0,700 :  height 0,700
    border_small 0 : left 0,(screen_x/2)-(width(0)/2) : top 0,(screen_y/2)-(height(0)/2)

    form 400 : left 400,50 : top 400,10 : width 400,700 : height 400,700 : hide 400
    alpha 500 : parent 500,400 : top 500,height(400)-80 : left 500,50
    font_bold 500 : font_size 500,22 : caption 500," !!! BRAVO !!! TU ES UN CHAMPION !"

    alpha 520 : top 520,10 : left 520, 170 : font_bold 520 : font_size 520,24
    font_color 520, 0,0,255 : caption 520,"Jeu du Solitaire"

    button 550 : top 550,460 : left 550,20 : caption 550,"Nouveau"
    font_bold 550 : font_size 550,16 : width 550,100 : on_click 550,clic : inactive 550

    button 600 : top 600,460 : left 600,140 : caption 600,"Autorun"
    font_bold 600 : font_size 600,16 : width 600,100 : on_click 600,clic : inactive 600

    button 700 : top 700,460 : left 700,260 : caption 700,"Quitter"
    font_bold 700 : font_size 700,16 : width 700,100 : on_click 700,clic

    button 800 : : top 800,460 : left 800,560 : caption 800,"Info"
    font_bold 800 : font_size 800,16 : width 800,100 : on_click 800,clic

    combo 900 : : top 900,460 : left 900,380 : text 900,"Choix Piste"
    font_bold 900 : font_size 900,12 : width 900,160 : on_click 900,choix
    for n%=1 to 7:item_add 900,f2$(n%):next n%
    dll_on "KGF.dll" : f$ = "chronometre.swf" : Flash_In_HTML(f$,0,10,500,li,hi)
END_SUB
rem ============================================================================
choix:
    a$=item_index$(900)
    if a$="Solitaire_anglais.txt" then n%=1
    if a$="diamant.txt" then n%=2
    if a$="holicron.txt" then n%=3
    if a$="Le_rectangle.txt" then n%=4
    if a$="Noeud_papillon.txt" then n%=5
    if a$="Sphere.txt" then n%=6
    if a$="S.txt" then n%=7
    active 550 : set_focus 550 : inactive 900 : Solitaire()
return

' ===============================================================================
' Intégrer un objet Flash dans un objet HTML
' Anim$ est le nom du fichier Flash d'extension SWF
' fo est le numéro du form
' xo,yo coordonnées du coin supérieur gauche
' Larg et Haut sont les dimensions de la fenêtre de vision
rem ============================================================================

SUB Flash_In_HTML(Anim$,fo,xo,yo,larg,haut)
    dim_local  hnd%, res%, url$,q$ ,WB1%
    q$ = chr$(34)
    caption fo,Anim$
    file_open_write 9999,"flash.html"
    file_writeln 9999,"<embed src='"+Anim$+"'"+q$+" width="+q$+str$(larg)+q$+" height="+q$+str$(haut)+q$+">"
    file_close 9999
    hnd% = handle(fo)
    url$ = "file://"+dir_current$+"/flash.html"
    WB1% = dll_call1("WB_Create",hnd%)
    res% = dll_call5("WB_Locate",WB1%,xo,yo,larg+50,haut+50)
    res% = dll_call2("WB_Url",WB1%,adr(url$))
    file_delete "flash.html"
END_SUB
rem ============================================================================

' ===============================================================================
' Solitaire anglais de 33 cases.
' La case 17 est vide

SUB Solitaire()
    text 900,"Choix Piste"
    dim_local l1, Ligne_lue$, s$, indice, Parcours_Ligne
'    FILE_OPEN_READ 1,"Solitaire_anglais.txt"
    FILE_OPEN_READ 1,f2$(n%)
    FILE_READLN 1, Ligne_lue$ : ' Première ligne: Nb de colonnes; Nb de lignes; Solution disponible
    s$ = right$(left$(Ligne_lue$,4),2) : Nb_col = val(s$) : Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-5)
    s$ = right$(left$(Ligne_lue$,3),1) : Nb_l = val(s$)  : Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-4)
    s$ = right$(left$(Ligne_lue$,5),1) : Sol = val(s$)
    FILE_READLN 1, Ligne_lue$
    FILE_READLN 1, Ligne_lue$
    p=1 : l1 = 1
    for Parcours_Ligne= 1 to Nb_l
      FILE_READLN 1, Ligne_lue$
      Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-2)
      Ligne_lue$ = left$(Ligne_lue$ + string$(Nb_col," "),Nb_col)
      for indice = 1 to Nb_col
          if object_exists(p) = 0 then picture p : width p,w : height p,w
          if left$(Ligne_lue$,1)<>" "
            on_click p, clic
            hint p,str$(p)
          end_if
          top p, 10
          top p,10+(w+2)* l1 : left p,10+(w+2)*indice
          case$(p) = left$(Ligne_lue$,1) : Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-1)
          p=p+1
      next indice
      l1 = l1+1
    next Parcours_Ligne
    if Sol = 1
          FILE_READLN 1, Ligne_lue$
          FILE_READLN 1, Ligne_lue$
          indice = -1
          while file_eof(1) <> 1
            FILE_READLN 1, Ligne_lue$
            while len(Ligne_lue$) >=4
                indice = indice + 1
                s$ = left$(Ligne_lue$,2) : dep = (val(right$(s$,1))-1) * Nb_col + asc(left$(s$,1)) - asc("a") +1
                Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-2)
                s$ = left$(Ligne_lue$,2) : arriv = (val(right$(s$,1))-1) * Nb_col + asc(left$(s$,1)) - asc("a") +1
                if len(Ligne_lue$) > 2 then Ligne_lue$ = right$(Ligne_lue$,len(Ligne_lue$)-3)
                if arriv = dep-2 then mang = dep-1
                if arriv = dep+2 then mang = dep+1
                if arriv = dep-2*Nb_col then mang=dep-Nb_col
                if arriv = dep+2*Nb_col then mang=dep+Nb_col
                T_sol(indice,1) = dep : T_sol(indice,2) = mang : T_sol(indice,3) = arriv
            end_while
          end_while
          Cpt_Sol = indice : active 600
    end_if
    FILE_CLOSE 1
    if object_exists(250) = 0 then picture 250 :  parent 250, 400 : width 250,width(400)-50 : height 250,height(400)-50
    file_load 250,"bravo.bmp"
    coup = 0 : Nb_coup = 0 : caption 0,""
    for indice = 1 to Nb_col * Nb_l
      if case$(indice) = "x" then file_load indice,"sphere.bmp"
      if case$(indice) = "." then file_load indice,"pion.bmp"
    next indice
END_SUB
rem ============================================================================

' ===============================================================================
clic:
  p = number_click
  if p = 550 then Solitaire() : return
  if p = 600 then Autorun() : return
  if p = 700 then Quitter() : return
  if p = 800 then info() : return
  if coup = 0 and case$(p) = "." then return
  Decode_Clic(p)
return
rem ============================================================================

' ===============================================================================
SUB Decode_Clic(p)

    if case$(p) = "x"
          if coup = 1 then file_load dep,"sphere.bmp"
          dep = p : brightness p,50 : coup = 1
          exit_sub
    end_if

    arriv = p  :' case d'arrivée
    if dep = arriv then exit_sub
    mang = 0
    if arriv = dep-2 then mang = dep-1
    if arriv = dep+2 then mang = dep+1
    if arriv = dep-2*Nb_col then mang=dep-Nb_col
    if arriv = dep+2*Nb_col then mang=dep+Nb_col
    if mang > 0 then Jouer_Le_Coup(arriv,dep,mang)
END_SUB

rem ============================================================================

' ===============================================================================
SUB Jouer_Le_Coup(arriv,dep,mang)
    if case$(mang) = "x"
 '  occuper l'arrivée
      file_load arriv,"sphere.bmp"
      case$(arriv) = "x"
 '  Libérer le départ
      file_load dep,"pion.bmp"
      case$(dep) = "."
 '  Manger le pion
      file_load mang,"pion.bmp"
      case$(mang) = "."
      Nb_coup = Nb_coup + 1
      caption 0,"Nombre de coups joués : " + str$(Nb_coup)
      coup = 0
    end_if
    if Nb_coup = 31 then Bravo()
END_SUB
rem ============================================================================

' ===============================================================================
SUB Info()
    dim_local t$
    t$ = " Le solitaire est un jeu de tablier." + chr$(13)
    t$ = t$ + " Il s'agit ici du solitaire anglais en forme de croix grecque à 33 trous." + chr$(13)
    t$ = t$ + " Au départ tous les trous contienent une bille (ou pion ou boule) à l'exception" + chr$(13)
    t$ = t$ + "du trou central qui est vide." + chr$(13)
    t$ = t$ + "Le but du jeu est de 'manger' toutes les pièces pour ne conserver qu'une seule." + chr$(13)
    t$ = t$ + "Pour supprimer une pièce, il faut que 2 pièces soient adjacentes et qu'elles" + chr$(13)
    t$ = t$ + "soient suivies d'une case vide." + chr$(13)
    t$ = t$ + "La 1ère pièce saute par-dessus la seconde pour rejoindre la case vide." + chr$(13)
    t$ = t$ + "La seconde pièce est alors retirée du tablier." + chr$(13)
    t$ = t$ + "Les sauts ne peuvent se faire qu'horizontalement ou verticalement et non en diagonale " + chr$(13)
    t$ = t$ + "------------------------------------------------------------------------------" + chr$(13)
    t$ = t$ + "Pour jouer, utilisez votre souris." + chr$(13)
    t$ = t$ + "Cliquez d'abord sur la boule à déplacer, puis sur la case d'arrivée qui doit" + chr$(13)
    t$ = t$ + "être nécessairement vide, en sautant par dessus une case contenant une boule."+chr$(13)
    t$ = t$ + "------------------------------------------------------------------------------" + chr$(13)
    t$ = t$ + "Vous pouvez démarrer/arrêter le chronomètre à l'aide des boutons adéquats" + chr$(13)+chr$(13)
    t$ = t$ + "************* B O N    D I V E R T I S S E M E N T ***********************"
    message t$
END_SUB
rem ============================================================================

' ===============================================================================
' Régler le volume du haut-parleur
SUB Bravo()
    dim_local q$
    q$ = chr$(34)
    show 400
    file_open_write 9999,"bravo.vbs"
    file_writeln 9999,"Dim speaks, speech"
    file_writeln 9999,"speaks="+q$+"Bravo.... Tu es un champion !!!"+q$
    file_writeln 9999,"Set speech=CreateObject("+q$+"sapi.spvoice"+q$+")"
    file_writeln 9999,"speech.Speak speaks"
    file_close 9999
    execute_wait "bravo.vbs"
    file_delete "bravo.vbs"
    pause 500 : hide 400

END_SUB
rem ============================================================================

' ===============================================================================
SUB Quitter()
    dim_local termine%
    if message_confirmation_yes_no("Vous voulez vraiment quitter ?") = 1
      termine% = dll_call1("KillProcessByHandle",handle(0))
    end_if
END_SUB
rem ============================================================================

' ===============================================================================
SUB Autorun()
    dim_local depart, arrivee, mange
    solitaire()
    inactive 700 : inactive 600 : inactive 550 : inactive 800
    while Nb_coup <= Cpt_Sol
        Caption 0, str$(T_sol(Nb_coup,1)) + ":" +str$(T_sol(Nb_coup,2)) + ":" +str$(T_sol(Nb_coup,3))
        brightness T_sol(Nb_coup,1),50: wait 200
        file_load T_sol(Nb_coup,1),"pion.bmp"  : ' effacer
        file_load T_sol(Nb_coup,3),"sphere.bmp" : ' deplacer
        file_load T_sol(Nb_coup,2),  "pion.bmp"  : ' manger
        brightness T_sol(Nb_coup,3),50: wait 200
        file_load T_sol(Nb_coup,3),"sphere.bmp" : ' remettre normal
        Nb_coup = Nb_coup + 1 : wait 300
      caption 0,"Nombre de coups joués : " + str$(Nb_coup)
    pause 800
    end_while
    active 700 : active 550 : active 800
    pause 1600
    Bravo()
END_SUB

A+

PS: un autre bug, sur certains plateaux on gagne avant la fin.
Revenir en haut Aller en bas
Contenu sponsorisé





Le jeu du SOLITAIRE Empty
MessageSujet: Re: Le jeu du SOLITAIRE   Le jeu du SOLITAIRE Empty

Revenir en haut Aller en bas
 
Le jeu du SOLITAIRE
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» JEU : Le Solitaire anglais
» JEU : Le Solitaire européen

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Les jeux faits avec Panoramic-
Sauter vers: