Un petit jeu moin simple qu'il en a l'air

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Un petit jeu moin simple qu'il en a l'air

Message par Micoute »

Dans tous mes programmes je mets toujours :

Code : Tout sélectionner

Global.s Rep$ = GetPathPart(ProgramFilename()) : SetCurrentDirectory(Rep$)
c'est grâce à MLD que j'ai pris ce reflexe, car il m'a dit que j'avais l'habitude de ne travailler que pour moi. Par exemple ça me permet d'écrire :

Code : Tout sélectionner

Global Fichier_Scores.s = Rep$ + "Scores.Json"
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Un petit jeu moin simple qu'il en a l'air

Message par Kwai chang caine »

Cool !!!! Simple et joli :D
Ca me rappelle ma jeunesse quand il distribuaient ce genre de jeu dans les stations services :mrgreen:
En principe c'était avec une image.....et ça me prenait encore plus la tete
Je l'ai pas fini car la patience et moi.... :oops:
J'ai déjà assez de mal depuis des années, à soigner l'addiction que j'ai prise avec le virus chronophage du 2048 (A cause d'un code PB comme le tiens d'ailleurs :twisted:)
En tout cas il m'a bien plu, et je te remercie du partage 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
SPH
Messages : 4944
Inscription : mer. 09/nov./2005 9:53

Re: Un petit jeu moin simple qu'il en a l'air

Message par SPH »

Le jeu refuse de marcher chez moi (5.72 x64)
J'ai beau cliquer sur une piece pour la mettre dans le trou, rien ne se passe...

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Un petit jeu moin simple qu'il en a l'air

Message par Ar-S »

@sph
Tu as cliqué sur "nouveau jeu" ?
(Merci de t'auto traiter de buse si ce n'est pas le cas ? :mrgreen: )
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
SPH
Messages : 4944
Inscription : mer. 09/nov./2005 9:53

Re: Un petit jeu moin simple qu'il en a l'air

Message par SPH »

Ar-S a écrit :(Merci de t'auto traiter de buse si ce n'est pas le cas ? :mrgreen: )
En effet, c'etait le cas.
Ca marche maintenant :!:

Hazard totalement fortuit : j'ai moi meme aussi codé un jeu de poussepousse !! (je l'ai posté) :? 8O :mrgreen:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Un petit jeu moin simple qu'il en a l'air

Message par MLD »

Merci a vous tous
KCC a écrit :Je l'ai pas fini car la patience et moi....
Moi aussi il m'énerve :mrgreen: :oops:
SPH a écrit :J'ai beau cliquer sur une piece pour la mettre dans le trou, rien ne se passe...
C'est comme avec les dames, il faut une préséance. :mrgreen: :oops:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Un petit jeu moin simple qu'il en a l'air

Message par Kwai chang caine »

MLD a écrit :Moi aussi il m'énerve :mrgreen:
:lol: :lol:
Image
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Demivec
Messages : 91
Inscription : sam. 18/sept./2010 18:13

Re: Un petit jeu moin simple qu'il en a l'air

Message par Demivec »

@MLD: Vous devez également corriger la procédure 'control ()'.

Code : Tout sélectionner

;OpenFile(110,"PPscor") ;avant
OpenFile(110, GetTemporaryDirectory() + "PPscor") ;après
Parfois, le puzzle n'est pas résoluble. Voici une vérification de la configuration pour vous assurer qu'elle l'est.

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
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Un petit jeu moin simple qu'il en a l'air

Message par MLD »

@KCC
Je suis désolé :mrgreen: :lol:

@Devimec
Devimec a écrit :Parfois, le puzzle n'est pas résoluble
Ceci est impossible, c'est une question de temps.
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Un petit jeu moin simple qu'il en a l'air

Message par MLD »

MLD a écrit :@KCC
Je suis désolé :mrgreen: :lol:

@Devimec
Devimec a écrit :Parfois, le puzzle n'est pas résoluble
Ceci est impossible, c'est une question de temps.
Pour le fichier dans la procedure control. Merci correction effectuée dans le poste 1
Demivec
Messages : 91
Inscription : sam. 18/sept./2010 18:13

Re: Un petit jeu moin simple qu'il en a l'air

Message par Demivec »

MLD a écrit :Ceci est impossible, c'est une question de temps.
Si vous pouvez le faire, dites-moi combien de temps il vous faut pour résoudre ce puzzle.

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
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Un petit jeu moin simple qu'il en a l'air

Message par MLD »

@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. :mrgreen:
Mais bon courage a vous.
On peu lancer un concours sur le forum :lol: :mrgreen:
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.
Demivec
Messages : 91
Inscription : sam. 18/sept./2010 18:13

Re: Un petit jeu moin simple qu'il en a l'air

Message par Demivec »

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. :mrgreen:
Mais bon courage a vous.
On peu lancer un concours sur le forum :lol: :mrgreen:
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.
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).

Juste pour référence, le puzzle a été "inventé" par Noyes Palmer Chapman, un maître de poste à Canastota, New York, en 1879.
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Un petit jeu moin simple qu'il en a l'air

Message par MLD »

@Devimec
L'invention par Noyes Palmer Chapman est assez contestée. Des jeux chinois apparentés sont bien plus anciens
La résolution avec le carré vide en bas a droite a été démontrée par Preston Jensen en utilisant une fonction heuristique.
Mais il existe une autre solution: Cassé l'écran de son ordi :mrgreen: :mrgreen: :oops:
Répondre