Page 1 sur 1

Mini Solitaire (jeu de cartes)

Publié : dim. 01/janv./2006 4:12
par comtois
Je me suis amusé avec cette dll qui peut être sympa pour faire des jeux de cartes

o_Cards.dll

voici un exemple de jeu

http://perso.wanadoo.fr/comtois/sources ... itaire.zip

C'est une version allégée du solitaire.

Pour jouer il faut installer o_cards.dll

Publié : dim. 01/janv./2006 21:50
par Heis Spiter
Joli jeu ! :)
J'aurais néanmoins deux remarquer (en bon adepte du solitaire :oops:) :
- Essaie de faciliter le déplacement des cartes : Quand on a une majeure partie d'une carte sur une autre, et que le déplacement est possible, et que la carte est relaché, au lieu de la remattre à sa place, il vaudrait la mettre au nouvel emplacement.
- Essaie de mettre le clic droit du solitaire Windows, il est tellement pratique quand on a fini et qu'il faut ranger toutes les cartes :oops:

Publié : dim. 01/janv./2006 23:39
par comtois
oui c'est vrai que ça manque , peut-être que je l'ajouterai à l'occasion.

Je voulais surtout reprendre la plus simple des démos en delphi que l'auteur propose pour tester la dll avec PureBasic , et ça marche plutôt bien :)

L'auteur propose également une version complète du solitaire , si ça intéresse quelqu'un de faire l'adaptation ?

Pour ta première remarque , il faut que je regarde si c'est configurable, je n'ai rien vu à ce sujet.Moi aussi ça m'énerve de ne pas pouvoir lâcher les cartes comme on veut.

Pour le clic droit je ne connais pas, il faut que je joue à la version window .
Je pensais ajouter le double clic pour ranger directement une carte sur la pile des couleurs quand c'est possible.

C'est vraiment facile de faire un jeu de cartes avec cette dll , je suis en train de coder une crapette , il m'a fallu quelques heures seulement pour gérer l'affichage et le déplacement des cartes , maintenant il reste le plus dur, ajouter l'IA de l'ordi.En réseau , ce jeu peut être sympa.

Publié : lun. 02/janv./2006 0:03
par Droopy
Vraiment sympa

Publié : lun. 02/janv./2006 10:44
par lionel_om
Cool comme petit jeu :wink:

Publié : mar. 03/janv./2006 13:53
par comtois
J'ai contacté l'auteur de la Dll et voici sa réponse :

Ma question
J'ai un souci de positionnement des cartes , je n'ai pas encore
regardé si c'était configurable.
Ce que je veux dire , dans un drag and drop , souvent quand je
relache la carte , alors qu'elle est au bon emplacement , elle est
refusée et retourne à son emplacement d'origine , ça doit sûrement
provenir de la zone de recouvrement calculée.Est-ce que cette zone
est configurable ?
Sa réponse
Non, il n'y a pas de configuration du recouvrement :
si UN pixel de la carte en cours de drag touche UN pixel de la zone de destination, cela suffit POUR AUTANT QU'IL N'Y AIT PAS D'AMBIGUITE: si la carte en cours de drag recouvre plusieurs zones, il y a ambiguïté donc le drop est refusé.
Dans MiniSolitaire, à tester en déposant une carte sur une autre ou sur une colonne, même avec un seul pixel mais en étant sur d'être sur une zone unique.

C'est en fait la plus grande difficulté au niveau de l'implémentation graphique d'un jeu: mettre les piles de telle façon que l'on réduise au maximum les zones d'ambiguïtés.
Merci à lui d'avoir pris le temps de répondre . Je vais écarter un peu plus les piles :)

Publié : mar. 03/janv./2006 16:57
par Heis Spiter
Sinon, ce qu'il pourrait proposer dans sa DLL c'est une option lors du D&D : la possibilité de déplacement par pourcentage.

Ex : Si la carte à déplacer touche deux piles, et qu'elle est laché, il prend le pourcentage de pixel en contact avec la carte à déplacer et les piles. Et déplace vers là où le pourcentage est le plus important. En cas d'égalité, retour à la case départ.

Publié : mar. 03/janv./2006 17:31
par Dr. Dri
Avec le solitaire de MS c'est selon les coordonnées de la souris...

tres sympa l'exemple au passage ^^

Dri

Publié : mar. 03/janv./2006 17:58
par comtois
Dr. Dri a écrit :Avec le solitaire de MS c'est selon les coordonnées de la souris...

tres sympa l'exemple au passage ^^

Dri
Je viens de faire un test rapide avec le solitaire de MS , apparemment , il prend en compte le premier pixel aussi , mais en plus , quand il y a ambiguité , il lève tout seul l'ambiguité comme un grand , et choisi la pile qui convient.
Heis Spiter a écrit :Ex : Si la carte à déplacer touche deux piles, et qu'elle est laché, il prend le pourcentage de pixel en contact avec la carte à déplacer et les piles. Et déplace vers là où le pourcentage est le plus important. En cas d'égalité, retour à la case départ.
C'est ce que je pensais au départ , mais ce n'est pas suffisant , si tu testes avec la version de MS , tu verras qu'entre deux piles , il ne choisit pas celle qui a le plus gros pourcentage de recouvrement , mais celle qui permet de lacher la carte.

Pour bien faire il faudrait que la dll sorte une liste des piles en contact avec effectivement un pourcentage .
D'abord il faut consulter la liste des piles , s'il n'y a qu'une pile possible par rapport aux règles du jeu , dans ce cas , c'est simple , on sélectionne la pile correcte.
Dans le cas ou plusieurs piles sont possibles , il faut choisir celle qui a le plus grand recouvrement.

Disons que ça serait un plus , mais ce n'est pas bloquant pour créer des jeux.Avant d'aller harceler l'auteur de la dll avec ces remarques , il faut d'abord créer quelques jeux :)

Publié : mar. 03/janv./2006 18:07
par Dr. Dri
comtois a écrit :
Dr. Dri a écrit :Avec le solitaire de MS c'est selon les coordonnées de la souris...

tres sympa l'exemple au passage ^^

Dri
Je viens de faire un test rapide avec le solitaire de MS , apparemment , il prend en compte le premier pixel aussi , mais en plus , quand il y a ambiguité , il lève tout seul l'ambiguité comme un grand , et choisi la pile qui convient.
Effectivement, c'est le souvenir que j'avais de quand j'y jouai ^^
*voit son monde boulversé*

[Edit]
J'ai essayé avec un as

Si je met la carte entre deux piles, et que le curseur n'est sur aucune des deux, il prend systématiquement celle de gauche (visiblement la 1e des deux)

Si le curseur est sur une des deux zones concernées par contre, pas de calcul du nombre de pixels, c'est la zone pointée qui est choisie

Dri