FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» PanExpress : l'éditeur Panoramic avec création d'objet
par Jean Claude Aujourd'hui à 11:55

» Projet de planétarium virtuel.
par Pedro Alvarez Hier à 17:29

» Quantité de mémoire utilisée par un exe
par Navigateur Hier à 14:52

» Problème avec 'file_load'.
par Pedro Alvarez Hier à 8:12

» Version instantanée V 0.9.28i20 du 13/06/2018
par jjn4 Sam 16 Juin 2018 - 14:25

» string$(0,chr$(32)) sans erreur
par silverman Ven 15 Juin 2018 - 19:56

» Version instantanée V 0.9.28i19 du 13/06/2018
par Minibug Ven 15 Juin 2018 - 19:14

» Mes souhaits d'amélioration de Panoramic.
par Pedro Alvarez Jeu 14 Juin 2018 - 20:17

» [RÉSOLU] Message d'erreur impossible à indentifier
par Minibug Mer 13 Juin 2018 - 20:52

» Cadre pour image
par Jean Claude Mar 12 Juin 2018 - 16:31

» Créateur d'objets Panoramic
par Minibug Mar 12 Juin 2018 - 14:02

» Planétarium gratuit.
par Jean Claude Sam 9 Juin 2018 - 18:50

» Comment afficher une image sans fond.
par JL35 Sam 9 Juin 2018 - 14:16

» image_width(n) et image_height(n)
par silverman Sam 9 Juin 2018 - 11:22

» Site sur la programmation sympa
par Jean Claude Jeu 7 Juin 2018 - 11:20

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juin 2018
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

Partagez | 
 

 Le jeu des quatre cavaliers

Aller en bas 
AuteurMessage
papydall

avatar

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

MessageSujet: Le jeu des quatre cavaliers    Ven 20 Juin 2014 - 1:09

Salut tout le monde.

Je vous propose un petit casse-tête à résoudre.
Petit, parce qu’il se déroule sur une grille de 3X3 cases, casse-tête parce qu’il peut (j’en suis persuadé) donner du fil à retordre à certains !

Principe du jeu : sur un plateau de 3X3 cases, on place deux cavaliers d’une couleur sur les deux coins du haut et deux autres cavaliers d’une autre couleur sur les deux coins du bas. Le but du jeu est de permuter les cavaliers :  ceux du haut doivent prendre les places de ceux du bas et ceux du bas doivent prendre les places de ceux du haut.
Il n’est permis de déplacer un cavalier que vers une case vide en utilisant les mouvements du cavalier du jeu d’échec.
Simple, vous dites ? Alors tentez votre chance !

Vous pouvez (si vous voulez faire travailler vos neurones) télécharger le programme sur mon Webdav : 4Cavalieres.zip
Bon, je préfère des cavalières  Laughing  à la place des cavaliers, mais le principe du jeu reste le même.
Dézippez le zip où bon vous semble, adaptez (ligne 16) le chemin qui mène au jeu et non à Rome  (comme c’est écrit dans le code ! ) et puis ... je vous souhaite quelques moments de détente après les moments de réflexion.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jean Claude

avatar

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

MessageSujet: Re: Le jeu des quatre cavaliers    Ven 20 Juin 2014 - 12:41

Ben ... c'est pas facile,

J'aime bien les cavalières au bord de la plage, je suppose qu'elle son jumelles. Heu... les canassons aussi lol! 

Pour le moment j'ai réussi à les faire passer du haut vers le bas et vice-versa, mais cote à cote.

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Le jeu des quatre cavaliers    Ven 20 Juin 2014 - 13:08

Jean Claude, c’est bien ce que tu as réalisé mais ce n’est pas assez. Laughing  Laughing 
Le but du jeu c’est qu’au final, celles du haut descendent (en bas) et celles du bas montent (en haut) et que les quatre occupent les coins et non côte à côte.
Il te reste beaucoup de travail mais tu arriveras avec un peu (ou beaucoup) de réflexion et de persévérance !
Bon divertissement !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jicehel

avatar

Nombre de messages : 5923
Age : 45
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Le jeu des quatre cavaliers    Ven 20 Juin 2014 - 14:32

Pas encore testé, je viens de voir que tu avais fait ce nouveau jeu.
J'y remédie dès que possible Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6273
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Le jeu des quatre cavaliers    Ven 20 Juin 2014 - 16:54

papydall, tu nous embêtes, c'est trop dur...
manque un petit bouton réinit quand on ne sait plus quoi faire et qu'on tourne en rond...  Very Happy
Pour faire comme jean Claude ça va assez vite, mais après...  scratch

et pour faire le puriste, je dirais qu'il manque le end_sub de la sub Jeu mais c'est juste pour t'embêter.

PS je viens de réussir,mais en 26 coups (cheval de bronze), c'est plutôt laborieux !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Le jeu des quatre cavaliers    Ven 20 Juin 2014 - 20:24

Bien, Voilà JL35  a gagné  le cheval de bronze ; il reste   le cheval d’argent et surtout le cheval d’or, alors à vos boutons de souris !
Personnellement j’ai eu droit au cheval de bronze deux fois de suite et puis le cheval d’argent était lui aussi au rendez-vous, ensuite ….
 je ne sais plus refaire aucune de ces  performances !

JL35 a écrit:
et pour faire le puriste, je dirais qu'il manque le end_sub de la sub Jeu mais c'est juste pour t'embêter.

Mais tu ne m’embêtes pas ; tu as bien fait pour me corriger (Heu … me corriger, non mais corriger ce que j’ai oublié de coder !)
Et tu as aussi l’excellente idée d’ « un petit bouton réinit quand on ne sait plus quoi faire et qu'on tourne en rond... »
Et bien c'est fait : voici comment je me suis pris.

Code:

rem ============================================================================
rem         Problème des quatres cavalières
rem              4cavalieres.bas
rem               Par Papydall
rem ============================================================================

Jeu()

end
rem ============================================================================
SUB Jeu()

    label click
    dim rep$,fich$,i,t(9),n ,clic ,depart,arrivee, nb_deplacement
    height 0,700 : width 0,1200
    rep$ = "C:\Users\acer\Desktop\4Cavalieres\" : ' Adapter le chemin qui mène à ... Rome !

    button 5 : top 5,50 : left 5,900 : caption 5,"RAZ" : on_click 5,click
    alpha  6 : top 6,55 : left 6,1000: caption 6,"Nb Mouvements : " : font_bold 6
    alpha  7 : top 7,55 : left 7,1100
    for i = 10 to 90 step 10
        picture i : width i,260 : height i,200
        on_click i,click
    next i
    top 10,010 : left 10,030 : top 20,010 : left 20,300
    top 30,010 : left 30,570 : top 40,220 : left 40,030
    top 50,220 : left 50,300 : top 60,220 : left 60,570
    top 70,430 : left 70,030 : top 80,430 : left 80,300
    top 90,430 : left 90,570

    Init(): info()
    
end_sub
rem ============================================================================
SUB Init()
    dim_local i

    for i = 10 to 90 step 10 : file_load i,rep$+"cavaliere0.jpg" : t(i/10) = 0 : next i
    fich$ = "cavaliere1.jpg" : file_load 10,rep$+fich$  : file_load 30,rep$+fich$
    fich$ = "cavaliere2.jpg" : file_load 70,rep$+fich$  : file_load 90,rep$+fich$
    t(1) = 1 : t(3) = 1 : t(7) = 2 : t(9) = 2 : clic = 0 : Nb_deplacement = 0
    caption 7,str$(nb_deplacement)
END_SUB
rem ============================================================================
' Informations sur le jeu
SUB Info()

    label fermer
    form 1 : left 1,50 : top 1,50 : height 1,500 : width 1, 700
    print_target_is 1 : font_bold 1 : font_size 1,12 : font_color 1,0,0,255
    button 2 : parent 2,1 : top 2,400 : left 2, 300 : caption 2,"Fermer"
    on_click 2,fermer
    print : print : print " Problème des quatres cavaliers":print
    print " Sur un plateau de 3X3 cases, on place deux cavalières (sur la plage) en haut":print
    print " et deux autres cavalières (dans la forêt.) en bas" :print
    print " Le but du jeu est de permuter les cavalières (sur la plage et dans la forêt)": print
    print " avec le minimum de déplacements." : print
    print " Il est seulement permis de déplacer une cavalière vers une case vide en utilisant": print
    print " les mouvements du cavalier du jeu d'échec.": print
    print " Cliquez sur la cavalière à déplacer, puis cliquez sur la case cible.":print
    print " Le programme veille à ce que le déplacement soit possible" :print
    print " Sinon,il ne se passe rien!":print
    print " Il est possible de parvenir à la solution en effectuant seulement seize déplacements.": print
    print " Indice : Il faut passer d'une configuration en X à une configuration en + puis en X ..."

end_sub
rem ============================================================================
' Fermer la fenêtre d'info
Fermer:
  hide 1
  return
rem ============================================================================
' Gestion des clicks
Click:

  n = number_click : clic = clic + 1
  if n = 5 then Init() : return
  if depart = 0 then depart = n
  if clic = 2 then arrivee = n : deplacement_Valide()
  
return
rem ============================================================================
' Teste la validité du déplacement
' La case du départ doit contenir une cavalière et la case d'arrivée doit être libre
' et satisfaire au mouvement du cavalier du jeu d'échec.
SUB Deplacement_Valide()
    dim_local i
    i = arrivee/10
    if (depart = 10) and ((arrivee = 60) or ( arrivee = 80)) and (t(i) = 0) then Deplacer()
    if (depart = 20) and ((arrivee = 70) or ( arrivee = 90)) and (t(i) = 0) then Deplacer()
    if (depart = 30) and ((arrivee = 40) or ( arrivee = 80)) and (t(i) = 0) then Deplacer()
    if (depart = 40) and ((arrivee = 30) or ( arrivee = 90)) and (t(i) = 0) then Deplacer()
    if (depart = 60) and ((arrivee = 10) or ( arrivee = 70)) and (t(i) = 0) then Deplacer()
    if (depart = 70) and ((arrivee = 60) or ( arrivee = 20)) and (t(i) = 0) then Deplacer()
    if (depart = 80) and ((arrivee = 10) or ( arrivee = 30)) and (t(i) = 0) then Deplacer()
    if (depart = 90) and ((arrivee = 20) or ( arrivee = 40)) and (t(i) = 0) then Deplacer()
    clic = 0 : depart = 0  : arrivee = 0
    caption 7,str$(nb_deplacement)
    if Nb_deplacement > 15 then verif()
    
END_SUB
rem ============================================================================
' Ici, on effectue le mouvement de la cavalière
SUB Deplacer()
    file_load depart,rep$+"cavaliere0.jpg"
    fich$ = "cavaliere" + str$(t(depart/10)) + ".jpg"
    file_load arrivee,rep$+fich$ : t(arrivee/10) = t(depart/10) : t(depart/10) = 0
    if fich$ <> "cavaliere0.jpg" then Nb_deplacement = Nb_deplacement + 1
END_SUB
rem ============================================================================
' Ici, on vérifie si on a réussi à trouver la solution
' Si oui un message de félicitation (avec appréciation) s'affiche
SUB Verif()
    dim_local t$
    if (t(1) = 2) and (t(3) = 2) and (t(7) = 1) and (t(9) = 1)
       t$ =  "*** Félicitations ***"
       if Nb_deplacement = 16
          t$ = t$ + "!!! BRAVO ! Vous êtes le champion des champions !!!" + chr$(13)
          t$ = t$ + "!!! Vous avez gagné le CHEVAL D'OR !!!"
       else
          if Nb_deplacement < 23
             t$ = "!!! BRAVO ! Vous êtes le champion !!!" + chr$(13)
             t$ = t$ + " Vous pouvez mieux faire !!!" + chr$(13)
             t$ = t$ + "!!! Vous avez gagné le CHEVAL D'ARGENT !!!"
          else
             t$ = "!!! BRAVO ! Vous êtes un champion !!!" + chr$(13)
             t$ = t$ + "Mais vous pouvez améliorer votre score !!!" + chr$(13)
             t$ = t$ + "!!! Vous avez gagné le CHEVAL DE BRONZE !!!"
          end_if
       end_if
       message t$
    end_if
end_sub
rem ============================================================================



NB : je n’ai pas mis à jour le programme sur mon Webdav : il y aura peut-être d’autres modifications.
Alors n’hésitez pas à commenter, à proposer et même à critiquer ! Laughing 
C'est comme ça qu'on apprend.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 6273
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Le jeu des quatre cavaliers    Ven 20 Juin 2014 - 21:06

Merci papydall.
Mais j'arrive parfois à des situations bizarres où les clics restent sans effet, alors que j'ai des possibilités de bouger, tout reste figé et il faut quitter, je ne vois pas trop pourquoi... mais je n'ai pas étudié le code.
là par exemple (mais je ne dis pas que c'est lié à cette configuration particulière, d'ailleurs si je la reproduis ça ne le fait plus, et c'était pareil avec la 1ère version):


N'empêche papydall, c'est un beau jeu, en si peu de lignes.
Remarque: la case centrale ne peut pas recevoir d'image  silent (il n'y en a déjà pas trop de disponibles...)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Le jeu des quatre cavaliers    Ven 20 Juin 2014 - 21:40

Ça m’a arrivé aussi la situation de ne plus pouvoir bouger alors que c’est possible et je ne vois pas pourquoi.
Il y a certainement une solution à cela. Je regarderai quand j’aurai grandit un peu !
Pour le moment, j’ai d’autres chats à caresser (il ne faut surtout pas les fouetter !  Laughing  Laughing )

En ce qui concerne la case centrale : c’est vrai qu’elle ne peut pas être une destination : c’est impossible.
D’ailleurs, dans le code ( SUB Deplacement_Valide() ), je teste toutes les cases (départ ou arrivée) sauf la case centrale.

Pour le moment je vais caresser mes chats ! D’ici-là si tu trouves le pourquoi de la situation figée, ça sera parfait.
A +
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 6273
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Le jeu des quatre cavaliers    Ven 20 Juin 2014 - 22:14

Eh, moi aussi j'ai d'autres chats à fouetter (drôle d'expression d'ailleurs...).
Je ne vois rien dans le code qui semble propre, à part le fait des subs qui appellent des subs qui appellent des sous-programmes externes..., je ne sais pas, ça me paraît un peu scabreux, même si ce n'est qu'un sentiment non justifié.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Le jeu des quatre cavaliers    Ven 20 Juin 2014 - 23:01

Qui dit mieux ?
Juste ce qu'il faut : 16 coups et   basta !

La question qui se pose : puis-je refaire cette performance ?
J'y retourne pour voir.

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
papydall

avatar

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

MessageSujet: Re: Le jeu des quatre cavaliers    Ven 20 Juin 2014 - 23:37

Une  petite amélioration du programme.
Désormais, les déplacements effectués sont affichés dans une liste.
Je pense aussi avoir résolu le problème de l'image figée (les tests peuvent affirmer ou infirmer cela)

J’ai relevé les 16 mouvements nécessaires à réaliser la tâche, mais je ne vais pas les dévoiler, sous peine de gâcher  le plaisir de jouer !

Code:

rem ============================================================================
rem         Problème des quatres cavalières
rem              4cavalieres.bas
rem               Par Papydall
rem ============================================================================

Jeu()

end
rem ============================================================================
SUB Jeu()

    label click
    dim rep$,fich$,i,t(9),n ,clic ,depart,arrivee, nb_deplacement
    height 0,700 : width 0,1200
    rep$ = "C:\Users\acer\Desktop\4Cavalieres\" : ' Adapter le chemin qui mène à ... Rome !

    button 5 : top 5,50 : left 5,900 : caption 5,"RAZ" : on_click 5,click
    alpha  6 : top 6,55 : left 6,1000: caption 6,"Nb Mouvements : " : font_bold 6
    alpha  7 : top 7,55 : left 7,1100
    list 8 : top 8,100 : left 8, 900 : width 8,200 : height 8,550 : font_bold 8
    for i = 10 to 90 step 10
        picture i : width i,260 : height i,200
        on_click i,click
    next i
    top 10,010 : left 10,030 : top 20,010 : left 20,300
    top 30,010 : left 30,570 : top 40,220 : left 40,030
    top 50,220 : left 50,300 : top 60,220 : left 60,570
    top 70,430 : left 70,030 : top 80,430 : left 80,300
    top 90,430 : left 90,570

    Init(): info()

end_sub
rem ============================================================================
SUB Init()
    dim_local i

    for i = 10 to 90 step 10 : file_load i,rep$+"cavaliere0.jpg" : t(i/10) = 0 : next i
    fich$ = "cavaliere1.jpg" : file_load 10,rep$+fich$  : file_load 30,rep$+fich$
    fich$ = "cavaliere2.jpg" : file_load 70,rep$+fich$  : file_load 90,rep$+fich$
    t(1) = 1 : t(3) = 1 : t(7) = 2 : t(9) = 2 : clic = 0 : Nb_deplacement = 0
    caption 7,str$(nb_deplacement)
    clear 8 : item_add 8,"  Mouvements effectués"
END_SUB
rem ============================================================================
' Informations sur le jeu
SUB Info()

    label fermer
    form 1 : left 1,50 : top 1,50 : height 1,500 : width 1, 700
    print_target_is 1 : font_bold 1 : font_size 1,12 : font_color 1,0,0,255
    button 2 : parent 2,1 : top 2,400 : left 2, 300 : caption 2,"Fermer"
    on_click 2,fermer
    print : print : print " Problème des quatres cavaliers":print
    print " Sur un plateau de 3X3 cases, on place deux cavalières (sur la plage) en haut":print
    print " et deux autres cavalières (dans la forêt.) en bas" :print
    print " Le but du jeu est de permuter les cavalières (sur la plage et dans la forêt)": print
    print " avec le minimum de déplacements." : print
    print " Il est seulement permis de déplacer une cavalière vers une case vide en utilisant": print
    print " les mouvements du cavalier du jeu d'échec.": print
    print " Cliquez sur la cavalière à déplacer, puis cliquez sur la case cible.":print
    print " Le programme veille à ce que le déplacement soit possible" :print
    print " Sinon,il ne se passe rien!":print
    print " Il est possible de parvenir à la solution en effectuant seulement seize déplacements.": print
    print " Indice : Il faut passer d'une configuration en X à une configuration en + puis en X ..."

end_sub
rem ============================================================================
' Fermer la fenêtre d'info
Fermer:
  hide 1
  return
rem ============================================================================
' Gestion des clicks
Click:

  n = number_click : clic = clic + 1
  if n = 5 then Init() : return
  if depart = 0 then depart = n
  if clic = 2 then arrivee = n : deplacement_Valide()

return
rem ============================================================================
' Teste la validité du déplacement
' La case du départ doit contenir une cavalière et la case d'arrivée doit être libre
' et satisfaire au mouvement du cavalier du jeu d'échec.
SUB Deplacement_Valide()
    dim_local i
    i = arrivee/10
    if (depart = 10) and ((arrivee = 60) or ( arrivee = 80)) and (t(i) = 0) then Deplacer() : exit_sub
    if (depart = 20) and ((arrivee = 70) or ( arrivee = 90)) and (t(i) = 0) then Deplacer() : exit_sub
    if (depart = 30) and ((arrivee = 40) or ( arrivee = 80)) and (t(i) = 0) then Deplacer() : exit_sub
    if (depart = 40) and ((arrivee = 30) or ( arrivee = 90)) and (t(i) = 0) then Deplacer() : exit_sub
    if (depart = 60) and ((arrivee = 10) or ( arrivee = 70)) and (t(i) = 0) then Deplacer() : exit_sub
    if (depart = 70) and ((arrivee = 60) or ( arrivee = 20)) and (t(i) = 0) then Deplacer() : exit_sub
    if (depart = 80) and ((arrivee = 10) or ( arrivee = 30)) and (t(i) = 0) then Deplacer() : exit_sub
    if (depart = 90) and ((arrivee = 20) or ( arrivee = 40)) and (t(i) = 0) then Deplacer() : exit_sub
    clic = 0 : depart = 0  : arrivee = 0

END_SUB
rem ============================================================================
' Ici, on effectue le mouvement de la cavalière
SUB Deplacer()
    file_load depart,rep$+"cavaliere0.jpg"
    fich$ = "cavaliere" + str$(t(depart/10)) + ".jpg"
    file_load arrivee,rep$+fich$ : t(arrivee/10) = t(depart/10) : t(depart/10) = 0
    if fich$ <> "cavaliere0.jpg" then Nb_deplacement = Nb_deplacement + 1
    item_add 8,"  Case " + str$(depart/10) + " ==> case " + str$(arrivee/10)
    clic = 0 : depart = 0  : arrivee = 0
    caption 7,str$(nb_deplacement)
    if Nb_deplacement > 15 then verif()
    
END_SUB
rem ============================================================================
' Ici, on vérifie si on a réussi à trouver la solution
' Si oui un message de félicitation (avec appréciation) s'affiche
SUB Verif()
    dim_local t$
    if (t(1) = 2) and (t(3) = 2) and (t(7) = 1) and (t(9) = 1)
       t$ =  "*** Félicitations ***"
       if Nb_deplacement = 16
          t$ = t$ + "!!! BRAVO ! Vous êtes le champion des champions !!!" + chr$(13)
          t$ = t$ + "!!! Vous avez gagné le CHEVAL D'OR !!!"
       else
          if Nb_deplacement < 23
             t$ = "!!! BRAVO ! Vous êtes le champion !!!" + chr$(13)
             t$ = t$ + " Vous pouvez mieux faire !!!" + chr$(13)
             t$ = t$ + "!!! Vous avez gagné le CHEVAL D'ARGENT !!!"
          else
             t$ = "!!! BRAVO ! Vous êtes un champion !!!" + chr$(13)
             t$ = t$ + "Mais vous pouvez améliorer votre score !!!" + chr$(13)
             t$ = t$ + "!!! Vous avez gagné le CHEVAL DE BRONZE !!!"
          end_if
       end_if
       message t$
    end_if
end_sub
rem ============================================================================
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 6273
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Le jeu des quatre cavaliers    Sam 21 Juin 2014 - 0:06

ça attendra un peu, pour le moment  Sleep je ne vais pas me coucher énervé !
bonne nuit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Le jeu des quatre cavaliers    Sam 21 Juin 2014 - 0:47

J’ai modifié mon programme en ajoutant un bouton AUTORUN pour le faire jouer tout seul comme un grand.
Il trouve la solution en 16 coups :  c’est juste le SMIG !
Toujours pour ne pas gâcher le plaisir de torturer ses neurones, je ne vais pas poster cette version.
Il faut laisser le temps pour les Jean Claude, les Jean Charles, et les autres Panoramiciens pour une partie de torture cérébrale !
Peut-être si  les demandes  se font pressantes je posterais la version AUTORUN.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jicehel

avatar

Nombre de messages : 5923
Age : 45
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Le jeu des quatre cavaliers    Sam 21 Juin 2014 - 10:40

Première partie: Cheval d'or ... Wink J'ai de la chance

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6273
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Le jeu des quatre cavaliers    Sam 21 Juin 2014 - 11:34

Eh Jicehel, t'es sûr que papydall n'a pas mis la version autorun par erreur ?  Very Happy 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Le jeu des quatre cavaliers    Sam 21 Juin 2014 - 11:50

Joli !
Le cheval de bronze et le cheval d’or sont « tombés ». Il ne reste plus que le cheval d’argent.
A qui le tour ?

Puisque le talentueux Jicehel  a décroché le cheval d’or et a posté l’image indiquant les mouvements à faire pour réussir le jeu, je vous poste le programme modifié avec l’option AUTORUN.
NB : j’ai remis à jour  mon Webdav.

Code:

rem ============================================================================
rem         Problème des quatres cavalières
rem              4cavalieres.bas
rem               Par Papydall
rem ============================================================================

Jeu()

end
rem ============================================================================
SUB Jeu()

    label click
    dim rep$,fich$,i,t(9),n ,clic ,depart,arrivee, nb_deplacement
    height 0,700 : width 0,1200
    rep$ = "C:\Users\acer\Desktop\4Cavalieres\" : ' Adapter le chemin qui mène à ... Rome !

    button 5 : top 5,50 : left 5,850 : caption 5,"RAZ" : on_click 5,click
    alpha  6 : top 6,55 : left 6,950: caption 6,"Nb Mouvements : " : font_bold 6
    alpha  7 : top 7,55 : left 7,1050
    list 8 : top 8,100 : left 8, 900 : width 8,200 : height 8,550 : font_bold 8
    button 9 : top 9,50 : left 9,1100 : caption 9,"AUTORUN" : on_click 9,click
        for i = 10 to 90 step 10
        picture i : width i,260 : height i,200 : on_click i,click
    next i
    top 10,010 : left 10,030 : top 20,010 : left 20,300
    top 30,010 : left 30,570 : top 40,220 : left 40,030
    top 50,220 : left 50,300 : top 60,220 : left 60,570
    top 70,430 : left 70,030 : top 80,430 : left 80,300
    top 90,430 : left 90,570

    Init(): info()

end_sub
rem ============================================================================
SUB Init()
    dim_local i
    for i = 10 to 90 step 10 : file_load i,rep$+"cavaliere0.jpg" : t(i/10) = 0 : next i
    fich$ = "cavaliere1.jpg" : file_load 10,rep$+fich$  : file_load 30,rep$+fich$
    fich$ = "cavaliere2.jpg" : file_load 70,rep$+fich$  : file_load 90,rep$+fich$
    t(1) = 1 : t(3) = 1 : t(7) = 2 : t(9) = 2 : clic = 0 : Nb_deplacement = 0
    caption 7,str$(nb_deplacement)
    clear 8 : item_add 8,"  Mouvements effectués"
END_SUB
rem ============================================================================
' Informations sur le jeu
SUB Info()

    label fermer
    form 1 : left 1,50 : top 1,50 : height 1,500 : width 1, 700
    print_target_is 1 : font_bold 1 : font_size 1,12 : font_color 1,0,0,255
    button 2 : parent 2,1 : top 2,400 : left 2, 300 : caption 2,"Fermer"
    on_click 2,fermer
    print : print : print " Problème des quatres cavaliers":print
    print " Sur un plateau de 3X3 cases, on place deux cavalières (sur la plage) en haut":print
    print " et deux autres cavalières (dans la forêt.) en bas" :print
    print " Le but du jeu est de permuter les cavalières (sur la plage et dans la forêt)": print
    print " avec le minimum de déplacements." : print
    print " Il est seulement permis de déplacer une cavalière vers une case vide en utilisant": print
    print " les mouvements du cavalier du jeu d'échec.": print
    print " Cliquez sur la cavalière à déplacer, puis cliquez sur la case cible.":print
    print " Le programme veille à ce que le déplacement soit possible" :print
    print " Sinon,il ne se passe rien!":print
    print " Il est possible de parvenir à la solution en effectuant seulement seize déplacements.": print
    print " Indice : Il faut passer d'une configuration en X à une configuration en + puis en X ..."

end_sub
rem ============================================================================
' Fermer la fenêtre d'info
Fermer:
  hide 1
  return
rem ============================================================================
' Gestion des clicks
Click:

  n = number_click : clic = clic + 1
  if n = 5 then Init() : return
  if n = 9 then autoRun() : return
  if depart = 0 then depart = n
  if clic = 2 then arrivee = n : deplacement_Valide()

return
rem ============================================================================
' Teste la validité du déplacement
' La case du départ doit contenir une cavalière et la case d'arrivée doit être libre
' et satisfaire au mouvement du cavalier du jeu d'échec.
SUB Deplacement_Valide()
    dim_local i
    i = arrivee/10
    if (depart = 10) and ((arrivee = 60) or ( arrivee = 80)) and (t(i) = 0) then Deplacer() : exit_sub
    if (depart = 20) and ((arrivee = 70) or ( arrivee = 90)) and (t(i) = 0) then Deplacer() : exit_sub
    if (depart = 30) and ((arrivee = 40) or ( arrivee = 80)) and (t(i) = 0) then Deplacer() : exit_sub
    if (depart = 40) and ((arrivee = 30) or ( arrivee = 90)) and (t(i) = 0) then Deplacer() : exit_sub
    if (depart = 60) and ((arrivee = 10) or ( arrivee = 70)) and (t(i) = 0) then Deplacer() : exit_sub
    if (depart = 70) and ((arrivee = 60) or ( arrivee = 20)) and (t(i) = 0) then Deplacer() : exit_sub
    if (depart = 80) and ((arrivee = 10) or ( arrivee = 30)) and (t(i) = 0) then Deplacer() : exit_sub
    if (depart = 90) and ((arrivee = 20) or ( arrivee = 40)) and (t(i) = 0) then Deplacer() : exit_sub
    clic = 0 : depart = 0  : arrivee = 0

END_SUB
rem ============================================================================
' Ici, on effectue le mouvement de la cavalière
SUB Deplacer()
    file_load depart,rep$+"cavaliere0.jpg"
    fich$ = "cavaliere" + str$(t(depart/10)) + ".jpg"
    file_load arrivee,rep$+fich$ : t(arrivee/10) = t(depart/10) : t(depart/10) = 0
    if fich$ <> "cavaliere0.jpg" then Nb_deplacement = Nb_deplacement + 1
    item_add 8,"  Case " + str$(depart/10) + " ==> case " + str$(arrivee/10)
    clic = 0 : depart = 0  : arrivee = 0
    caption 7,str$(nb_deplacement)
    if Nb_deplacement > 15 then verif()
    
END_SUB
rem ============================================================================
' Ici, on vérifie si on a réussi à trouver la solution
' Si oui un message de félicitation (avec appréciation) s'affiche
SUB Verif()
    dim_local t$
    if (t(1) = 2) and (t(3) = 2) and (t(7) = 1) and (t(9) = 1)
       t$ =  "*** Félicitations ***"
       if Nb_deplacement = 16
          t$ = t$ + "!!! BRAVO ! Vous êtes le champion des champions !!!" + chr$(13)
          t$ = t$ + string$(30," ") + "!!! Vous avez gagné le CHEVAL D'OR !!!"
       else
          if Nb_deplacement < 23
             t$ = "!!! BRAVO ! Vous êtes le champion !!!" + chr$(13)
             t$ = t$ + " Vous pouvez mieux faire !!!" + chr$(13)
             t$ = t$ + "!!! Vous avez gagné le CHEVAL D'ARGENT !!!"
          else
             t$ = "!!! BRAVO ! Vous êtes un champion !!!" + chr$(13)
             t$ = t$ + "Mais vous pouvez améliorer votre score !!!" + chr$(13)
             t$ = t$ + "!!! Vous avez gagné le CHEVAL DE BRONZE !!!"
          end_if
       end_if
       message t$
    end_if
end_sub
rem ============================================================================
SUB AutoRun()
    dim_local i
    restore : Init()
    for i = 1 to 16
        read depart : read arrivee
        depart = depart * 10 : arrivee = arrivee * 10
        deplacer() : wait 1000 : ' delai à adapter
    next i
END_SUB
rem ============================================================================
data 9,4,7,2,1,6,3,8,6,7,4,3,2,9,8,1,3,8,1,6,8,1,9,4,7,2,6,7,4,3,2,9
rem ============================================================================
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

Nombre de messages : 8077
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Sam 21 Juin 2014 - 17:38

Me voilà avec le cheval d' argent !
 lol! 

" />



Mais pourquoi cette phrase :  
" Vous pouvez mieux faire !!!"
qui me rappelle douloureusement ces études qui m' ont poursuivi ?....
 lol! 



Bon cette petite phrase m' a blessée dans mon orgueil...




Merci Papydall pour ces quelques minutes d' évasion...
 Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Le jeu des quatre cavaliers    

Revenir en haut Aller en bas
 
Le jeu des quatre cavaliers
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Ecran noir et 4 carrés- rien a faire
» ATI Eyefinity : L'évolution du Multi- Écran !
» Problème Bbox TV
» Probleme initialisation bloquee decodeur TV - BBox (4 petits carreaux)
» iPad Air 2 : une seule carte SIM pour quatre opérateurs

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: