Creation d'un Freecell

Salut tout le monde,

Comme indiqué dans le titre je me lance dans la création d'un jeu Freecell.

Pas de soucis particuliers jusqu’à maintenant sauf pour la distribution des cartes en début de partis; vu que les partis sont numérotés dans un jeu de freecell en général, j'imagine que l'ordre des cartes est prédéfinis non? quelqu'un à une idée ? pour le moment je fais en random mais ce ne dois pas être la meilleur solution hmm

ECG

bonjour,

pour générer des séquences identiques sur base d'un numéro de partie tu peux utiliser ce bout de code

a=rnd(-1) 'indique que l'on veut une séquence de nombres tirés au hasard identique en fonction du numéro de partie
randomize numerodepartie 'initialize le générateur de nombres à tirer au hasard

exemple

Sub aargh()
    For k = 1 To 10
        For j = 1 To 10
            a = Rnd(-1)
            Randomize (k Mod 5) + 1
            For i = 1 To 10
                Cells(i + (k - 1) * 11, j) = Rnd()
            Next i
        Next j
    Next k
End Sub

Salut H2so4,

Du coup toute les parties sont en full random juste avec les seeds gardé en mémoire? toutes les parties numéro 24 de tout les freecells qui existent sont le même enchainement de carte?

Si c'est juste le seed qui est en mémoire je vais rester en mode full random avec un randomize ca sera aussi simple ^^

Edit: enfin le fin de connaitre la seed permet de refaire indéfiniment la même partie jusqu'a la réussir, c'est intéressant d'avoir ça hmm à méditer

ECG

Salut tout le monde,

Au final je vais partir sur une distribution full random mais voulant quand même avoir un bouton pour "recommencer la partie" sur le jeu, avec ce que tu m'as montré et quelque recherche j'ai fais la fonction suivante pour maitriser la seed utilisé dans mes parties:

Je passe d'abord par un randomize pour avoir une partie en random et je force le rnd avec celle-ci, cela me donne l'effet voulue

'si on part en nouvelle partie ou qu'on a pas de seed (cas de la première partie sur un fichier vide)
If (TYPE_DEMANDE = "NOUVELLE_PARTIE" Or Sheets(FEUILLE_DATA).Cells(LIGNE_GRAINE_RND, COLONNE_DATA).Value = "") Then
    Randomize
    'on stock la seed
    Sheets(FEUILLE_DATA).Cells(LIGNE_GRAINE_RND, COLONNE_DATA).Value = Rnd

    'on force la seed que l'on vient de stocker
    Rnd (-Sheets(FEUILLE_DATA).Cells(LIGNE_GRAINE_RND, COLONNE_DATA).Value)
Else
    'bouton "recommencer partie", on force avec la seed en  stock
    Rnd (-Sheets(FEUILLE_DATA).Cells(LIGNE_GRAINE_RND, COLONNE_DATA).Value)
End If

Merci pour ton aide H2so4

ECG

Je viens de compiler une versions assez stable je pense pour ceux qui veulent tester.

Il y aura quelques améliorations à faire:

- Zone de message utilisateur pour lui indiquer pourquoi certaines action sont impossible

- Algo avec animation pour finir automatiquement une partie quand toute les cartes restantes se suivent pour faire gagner du temps au joueur

- Finir le panneau "comment jouer" qui décris les différentes zones de jeu et les déplacement possibles

- Les statistiques sont minimales, vu que chaque parties est en full random un timer et/ou un nombre de coup et/ou un classement n'est pas très utile/intéressant

- Une menu Option à faire pour pouvoir modifier la taille/hauteur des cartes et le décalage entre deux cartes (surement 3 set différent possible), sur mon écran si je fais une très grosse suite du roi à l'as cela va très loin (je vais figer les volets sur les prochaines versions pour toujours voir les menus et la zone du haut

- Modification des couleurs si nécessaire, le contour de sélection des cartes noir n'est pas assez visible déjà je trouve

Edit: Damn it! le fichier est trop gros (1.1mo avec les 52 cartes dedans), je vais voir comment le partager ou l'alléger

ECG

Bonsoir tout le monde, ci-joint la v2 de mon freecell en bêta qui pour une raison mystérieuse fait beaucoup moins de 1 mo ... tant mieux

Note de mise à jour:

  • Changement de la couleur du contour de sélection de carte en bleu pour contraster avec le reste
  • Le changement de taille des cartes et d'espacement entre les colonnes est maintenant opérationnel,

Mise à jour restantes/possible:

  • Zone de message utilisateur pour lui indiquer pourquoi certaines action sont impossible
  • Algo avec animation pour finir automatiquement une partie quand toute les cartes restantes se suivent pour faire gagner du temps au joueur
  • Finir le panneau "comment jouer" qui décris les différentes zones de jeu et les déplacement possibles (actuellement c'est un gros troll héhéhé)
  • Le changement de langue dans le menu option
  • Ne pas comptabiliser une défaite ou annuler l'action si on clique sur "recommencer " alors qu'aucune carte n'a été bougée
  • Suite à la modification des tailles des cartes un nouveau souci apparait, malgré l'utilisation du .height et .width, les cartes ne font pas la même taille ! je dois étudier pourquoi il y a cette différence

ECG

37freecell-v2.xlsm (778.37 Ko)

Salut,

La qualité de mes images à l'air d'avoir pas mal baissé à force de faire des changements de hauteur/largeur par dizaines, c'est normal ou cela vient d'ailleurs? ^^

ECG

Salut tout le monde,

Aujourd'hui je vous propose une nouvelle version du freecell.

Note de mise à jour:

  • Le changement de langue est fonctionnel dans les options
  • Ajout du bouton "Annuler" pour revenir en arrière 1 fois
  • Le bouton "Recommencer" ne fait rien (et donc ne comptabilise plus une défaite) si aucun mouvement n'a été fait
  • Ajout d'une animation de déplacement des cartes désactivable dans les options
  • Événements qui se déclenche pour finir en automatique le jeu quand toutes les cartes restantes se suivent et donc il reste juste à mettre en stock les cartes 1 par 1 (l'utilisateur peut refuser)
  • Abandon de message utilisateur pour l'ajout d'un son d'erreur désactivable dans les options pour notifier un mouvement interdit/impossible
  • Ajout d'un easter egg

Mise à jour restantes/possible:

  • Finir le panneau "comment jouer" qui décris les différentes zones de jeu et les déplacement possibles
  • Finir le panneau "option" en terme de mise en forme
  • Finir les lignes de séparations entre les différentes zones de jeu, leur scale et le résultat final n'est pas bon dans certaines résolutions (peut être aussi l'ajout de possibilité de les désactiver dans les options, à voir)
  • La taille du fichier a encore fortement baissée, je pense toujours que c'est lié à la qualité des images à force de faire du resize: je ferais une mise en garde sur la baisse de qualité dans les options je pense et peut être un bouton pour un reset du jeu (images de base + statistiques à zéro) mais cela va alourdir le fichier donc à voir
  • Je ne me suis pas encore penché sur le problème des images qui avait un décalage de .top / .left et de .height / .width alors que j'applique la même formule sur toute, je ferais un message sur le forum pour demander de l'aide surement car pour le moment cela me dépasse
  • Le resize des boutons du menu (nouvelle partie, recommencer etc) n'est pas fait automatiquement, je mettrais un message dans les options comme quoi l’utilisateur peut le faire manuellement si bon lui semble car je n'ai pas envie de figer cette partie

Merci d'avance pour ceux qui testeront, surtout sur les tailles et espace de carte disponible, j'ai mis arbitrairement les valeurs donc je ne sais pas ce que donne en vrai

ECG

28freecell-v3.xlsm (393.22 Ko)

Salut tout le monde,

Ci-joint la dernière version de mon Freecell.

Note de mise à jour:

  • Panneau "comment jouer" a été finalisé
  • Panneau "option" a été mis en forme
  • Lignes de séparations entre les différentes zones de jeu qui se dimensionnent correctement
  • J'ai trouver mon soucis d'image, c'était juste un mixte entre les options "proportionnelle" et "proportionnelle à la taille d'origine de l'image" dans Taille et Propriétés des images
  • Un message d'avertissement sur la perte de qualité à force de faire des redimensionnements à été ajoutés. De plus j'ai modifié mon code en conséquence pour en faire le moins possible (avant je refaisais un redimensionnement à chaque nouvelle partie pour être sur d'avoir le bon template de jeu ce qui participe peut être à la perte de qualité même si la taille est la bonne vu qu'excel fait l'opération quand même; du coup maintenant je redimensionnement seulement si on est plus dans la bonne dimension)
  • Le resize des boutons du menu (nouvelle partie, recommencer etc) n'est pas fait automatiquement, j'ai mis le message dans les options comme quoi l’utilisateur peut le faire manuellement si bon lui semble
  • Modification visuelle de la sélection d'une ou plusieurs cartes: maintenant les cartes sélectionnés apparaissent en "grisée"

Sans retour spécifique ici elle sera la version finale qui sera mise en ligne sur le site durant la semaine prochaine.

ECG

42freecell-v4.xlsm (871.35 Ko)

Bonjour ExcelCoreGame,

Je n'aurais jamais pensé que l'on pouvais développer un jeu de carte sur Excel alors j'ai suivi le développement de ton Freecel, c'est vraiment du très bon travail, le jeu est maintenant bien ficelé et bien optimisé.

Félicitations et bravo pour ton travail.

@+

Bonjour et félicitations !

une remarque, les règles du jeu sont en anglais même dans la version française.

@h2so4 : ah, chouette ! alors même la version française du jeu est compatible avec ta version d'Excel 2013 UK !

Bonjour,

je reste sur ma faim !

beau travail ! mais je pense que l'esprit forum est de partager des astuces de formules ou de codes, et là on ne peut rien voir ... je n'ai pas vu où se trouvait le mot de passe VBA

Bonjour ExcelCoreGame,

Je n'aurais jamais pensé que l'on pouvais développer un jeu de carte sur Excel alors j'ai suivi le développement de ton Freecel, c'est vraiment du très bon travail, le jeu est maintenant bien ficelé et bien optimisé.

Félicitations et bravo pour ton travail.

@+

Merci

Au final c'est surtout des images et des lignes de codes "basiques", ce n'est pas comme certains jeux dont Waard nous parles (pour rappel https://forum.excel-pratique.com/viewtopic.php?f=3&t=103177).

Je pense que pas mal de personnes avec pas mal de pratique vba sur le forum seraient capable de faire ce genre de chose en y prenant le temps, le plus dur étant de savoir ce que l'on veut faire ^^

une remarque, les règles du jeu sont en anglais même dans la version française.

Je n'arrive pas à reproduire ce bug, je viens de télécharger la version que j'ai mis en ligne et ça marche niquel. Vu que je suis en vieux excel 2007 il y a peut être un problème de compatibilité mais je ne vois pas ou

Quelqu'un d'autre à le soucis? Vous pouvez tester svp

beau travail ! mais je pense que l'esprit forum est de partager des astuces de formules ou de codes, et là on ne peut rien voir ... je n'ai pas vu où se trouvait le mot de passe VBA

En général malheureusement oui les jeux qui vont aller dans la section en téléchargement sont protéger par mot de passe.

Après si tu veux savoir quelque chose en particulier il n'y a pas de soucis mais c'est égoïste de vouloir mettre le mot de passe pour garder la paternité du jeu avec mon nom et éviter que les gens voient le bordel que cela peut être dans le fichier héhé, il faudrait que j'arrive à aller vers l'esprit du open source

Merci pour vos retours en tout cas

ECG

Bonsoir tout le monde,

Un peu plus d'information sur la façon de construire ce Freecell.

Chaque personne programme à sa façon, personnellement je fais un onglet DATA invisible pour l'utilisateur pour stocker toute les informations dont j'ai besoin pour vous montrez à quoi cela ressemble:

freecell behind the scene

On peut donc y voir par exemple:

- Sur la colonne A les informations générale du genre quelle langue est choisie(ligne 11-12), si une animation de carte est en cours (ligne 37-38, ce qui me permet de ne pas pouvoir cliquer sur une carte tant qu'une animation n'est pas fini histoire d'être sur que toute les macros se finissent bien),la graine utilisée pour généré l'ordre des cartes mais aussi des informations pour le jeu en lui même tel que la carte sélectionné

Ici vu le faible nombre de variable stockée j'ai décidé de le faire de cette façon (pour les fichiers plus gros je fais une colonne A avec le nom de la variable et la colonne B avec la valeur, histoire de pas devoir scroller 50 lignes pour trouver une valeur )

- Les colonnes b à i représente le jeu actuel et l'onglet JEU au final n'est que la représentation graphique de tout cela.

Vous l'aurez compris, les colonnes j à m représente la carte situé dans les "tampons" et n à q la dernière carte en stock.

- Enfin les colonnes r à v représente toute les cartes du jeu (52 au total pour un freecell, pour une raison de zoom on ne le voit pas sur le screen car cela n'apporte rien) et leurs informations relatives qui sont utiles pour jouer.

Par exemple la colonne V "distribution", c'est ici que quand on lance une nouvelle partie je donne un numéro random avec la valeur de ma graine située en LIGNE_GRAINE_RND et je distribue aléatoirement un numéro à chacune des cartes de 1 à 52 (sans doublons donc) puis je les mets en jeu (j'ai décidé arbitrairement que je distribue par colonne, par exemple la CARTE_4 qui a reçu le numéro 4 est bien en 4ieme position de la première colonne, la CARTE_1 qui a reçu le numéro 22 est la première de la colonne 4)

D'ailleurs en regardant cela je viens de m'apercevoir que je check pas du tout que la graine soit différente entre deux parties je croyais l'avoir mis en place pourtant suite à une discussion sur le forum j'ai du n’embrouiller avec mes fichier de sauvegarde

Les valeurs (de 1 à 13 soit As => Roi)/couleurs/familles me servent à vérifier quand on sélectionne une autre carte si le déplacement est permis soit pour le freecell une couleur différente et une valeur de carte qui vaut 1 de plus (en effet ma CARTE_18, le 5 rouge de coeur qui vaut 5 donc ne peut aller que sur une carte noir et qui a comme valeur 5+1 soit un 6)

Un autre exemple concret, ici on voit que ma SELECTION (ligne 1 qui devrait d'ailleurs s'appeler LIGNE_CARTE_SELECTIONNE j'ai pas fait la mise à jour) indique que le joueur à cliquer sur la CARTE_37 soit le 11 noir de pique qui se situe en dernière position de la deuxième colonne de carte (ma ZONE2).

Lorsque le joueur va sélectionner une autre carte je fais déjà un premier check de savoir ou si situe celle-ci dans la zone de jeu. En effet, si on n'est pas sur la dernière carte d'une colonne le mouvement est forcément interdit

ECG

Le Freecell est disponible en téléchargement sur le forum pour information

ECG

Rechercher des sujets similaires à "creation freecell"