Code : Tout sélectionner
Global.s Rep$ = GetPathPart(ProgramFilename()) : SetCurrentDirectory(Rep$)
Code : Tout sélectionner
Global Fichier_Scores.s = Rep$ + "Scores.Json"
Code : Tout sélectionner
Global.s Rep$ = GetPathPart(ProgramFilename()) : SetCurrentDirectory(Rep$)
Code : Tout sélectionner
Global Fichier_Scores.s = Rep$ + "Scores.Json"
En effet, c'etait le cas.Ar-S a écrit :(Merci de t'auto traiter de buse si ce n'est pas le cas ?)
Moi aussi il m'énerveKCC a écrit :Je l'ai pas fini car la patience et moi....
C'est comme avec les dames, il faut une préséance.SPH a écrit :J'ai beau cliquer sur une piece pour la mettre dans le trou, rien ne se passe...
MLD a écrit :Moi aussi il m'énerve![]()
Code : Tout sélectionner
;OpenFile(110,"PPscor") ;avant
OpenFile(110, GetTemporaryDirectory() + "PPscor") ;après
Code : Tout sélectionner
Procedure brasse()
If dpj = 1
isSolvable = #False
Repeat
For i = (ngcm - ngcd) To 1 Step-1
irnd = Random(27,1)
Swap Tposc(i,1),Tposc(irnd,1)
Swap Tposc(i,4),Tposc(irnd,4)
Next
;Is puzzle solvable? If (number of tiles) - (number of cycles) is even then puzzle is solvable.
;Le puzzle est-il résoluble? Si (le nombre de tuiles) - (le nombre de cycles) est pair alors le puzzle est résoluble.
;Johnson & Story (1879) https://www.jstor.org/stable/2369492?seq=1#metadata_info_tab_contents
tile$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ!" ;possible tiles (doesn't include the blank, i.e 'hole')
cycleCount = 0
startCycleElement = 0
While Trim(tile$) <> ""
;get a remaining tile
startCycleElement$ = ""
For i = 1 To Len(tile$)
If Mid(tile$, i, 1) <> " "
startCycleElement = i
startCycleElement$ = Chr(Tposc(i, 4))
Break
EndIf
Next
;Find all tiles in a cycle and remove them. A cycle starts on one tile
;and looks to where that tile should go, then looks to where that tile
;goes and so forth until ending up at the original tile.
;Trouvez toutes les tuiles dans un cycle et retirez-les. Un cycle commence
;sur une tuile et regarde où cette tuile doit aller, puis regarde où va cette
;tuile et ainsi de suite jusqu'à ce qu'elle finisse sur la tuile d'origine.
While startCycleElement <> 0
nextCycleElement = FindString(tile$, startCycleElement$)
If nextCycleElement
;Remove tile from the possible tiles. ;Retirez la tuile des tuiles possibles.
ReplaceString(tile$, startCycleElement$, " ", #PB_String_InPlace)
startCycleElement = nextCycleElement
startCycleElement$ = Chr(Tposc(startCycleElement, 4))
Else
;End of cycle. ;Fin du cycle.
cycleCount + 1
startCycleElement = 0
EndIf
Wend
Wend
;If (number of tiles) - (number of cycles) is even then puzzle is solvable.
;Si (nombre de tuiles) - (nombre de cycles) est pair alors le puzzle est résoluble.
If (Len(tile$) - cycleCount) % 2 = 0
isSolvable = #True
EndIf
Until isSolvable
EndIf
For zz = 1 To (ngcm - ngcd)
ResizeGadget(Tposc(zz,1),Tposc(zz,2),Tposc(zz,3),#PB_Ignore,#PB_Ignore)
SetGadgetText(Tposc(zz,1),Chr(Tposc(zz,4)))
Next
EndProcedure
Ceci est impossible, c'est une question de temps.Devimec a écrit :Parfois, le puzzle n'est pas résoluble
MLD a écrit :@KCC
Je suis désolé![]()
![]()
@DevimecCeci est impossible, c'est une question de temps.Devimec a écrit :Parfois, le puzzle n'est pas résoluble
Pour le fichier dans la procedure control. Merci correction effectuée dans le poste 1
Si vous pouvez le faire, dites-moi combien de temps il vous faut pour résoudre ce puzzle.MLD a écrit :Ceci est impossible, c'est une question de temps.
Code : Tout sélectionner
Procedure brasse()
If dpj = 1
; For i = (ngcm - ngcd) To 1 Step-1
; irnd = Random(27,1)
; Swap Tposc(i,1),Tposc(irnd,1)
; Swap Tposc(i,4),Tposc(irnd,4)
; Next
Swap Tposc(26,1),Tposc(27,1)
Swap Tposc(26,4),Tposc(27,4)
EndIf
For zz = 1 To (ngcm - ngcd)
ResizeGadget(Tposc(zz,1),Tposc(zz,2),Tposc(zz,3),#PB_Ignore,#PB_Ignore)
SetGadgetText(Tposc(zz,1),Chr(Tposc(zz,4)))
Next
EndProcedure
Si les tuiles sont posées au hasard ou échangées comme vous l'avez fait, la moitié des dispositions possibles ne sont pas résolubles. Si l'agencement des carreaux est créé par glissement, tous sont résolubles (c'est-à-dire en inversant les marches).MLD a écrit :@Devimec
c'est la même chose avec n'importe quelle dernière lettre a placer.
Je ne suis pas très doué pour ce jeu. j'ai déjà mis plus de 2 heures pour en finir un.
Mais j'ai vu un jour un jeune (15 ans) en finir un en mois de 5 mm
Comme certains finissais un rubik's cub en moins d'une minute.
Moi, je n'en est jamais finis un seul.![]()
Mais bon courage a vous.
On peu lancer un concours sur le forum![]()
Ce jeu vient de chine et existe depuis très longtemps.
Comme KCC, quand j'étais en culotte courte, ce jeu en plastique faisait fureur dans les cours de récréations.