IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Conseil : Réalisation d'un jeu de cartes


Sujet :

Langage Delphi

  1. #1
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut Conseil : Réalisation d'un jeu de cartes
    Bonsoir,

    Comme vous avez pu le voir dans le titre, j'aimerai bien réaliser un jeu de cartes (le rami en particulier). J'essaie de voir à droite et à gauche ce qu'il est possible de faire, et je n'arrive pas trop à me décider sur la meilleure façon de réaliser ce jeu (aussi, je ne sais pas trop comment gérer les cartes).
    J'aurai une petite idée, mais j'ai besoin de vos conseils pour savoir si c'est correct.
    J'avais pensé déclarer un tableau contenant toute les cartes possibles... puis, chacun des joueurs comportera un tableau de 14 cartes (seul le joueur devant jouer le premier coup contient 15 cartes).
    La distribution des cartes se faisant à partir du tableau complet,une fois effectué le reste sera considéré comme étant la pioche... j'avais donc pensé pour chacun des joueurs ainsi que la pioche, faire un tableau dynamique ...
    Petite question :
    - Pour dessiner une carte, vous me conseillez l'utilisation de TImage ou de TPaintBox et gérer les coordonnées, le déplacement etc etc à la main ?

    Voila, en fait, j'aimerai savoir comment vous vous y prendrez ...
    Merci à tous par avance

    PS: Petit clin d'oeil à Sjrd puisqu'il a effectué un jeu de cartes également ... mais en java ... donc si tu passes par là ... Merci

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 775
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 775
    Points : 5 519
    Points
    5 519
    Par défaut
    tu fais un jeu de rami, ce qui signifie qu'un joueur ne voient pas le jeu des autres joueurs et ceci implique qu'ils doivent jouer sur des postes différents et donc que le jeu doit se jouer en réseau.

    C'est la raison pour laquelle je te conseille d'utiliser des collections d'objet TCarte à la place de tableau dynamique (moins de risque de violation d'accès).

    Pour ce qui est des images, le plus simple pour moi serait d'utiliser TImage (une image affectée à un objet TCarte) et de définir dans les methode la manière dont tu les déplace en jouant sur les propriété Top et Left de TImage.

  3. #3
    Membre éclairé
    Avatar de nostroyo
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 168
    Points : 680
    Points
    680
    Billets dans le blog
    16
    Par défaut
    Je suis actuellement en train de faire un soft pour créer des règles pour les jeu de carte a collectionner. Moi je suis passer par des TObjectList car bien plus souple a utiliser pour stocker la liste des cartes, tu peux même passer par un TObjectStack qui est une pile d'object (je ne pourrais pas t'aider car je ne l'ai jamais utilisé!).

    Pour la partie graphique je ne m'y suis pas encore bien penché mais j'ai vu sur le net 1 source en C++Builder qui permettais de déplacer une image sous le curseur de la souris, ça peut être une base de départ!

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par popo Voir le message
    Pour ce qui est des images, le plus simple pour moi serait d'utiliser TImage (une image affectée à un objet TCarte) et de définir dans les methode la manière dont tu les déplace en jouant sur les propriété Top et Left de TImage.
    Surtout pas Le TImage est bien trop lourd pour cette utilisation
    Ce que tu pourrais faire, par exemple, c'est de mettre toutes tes images des cartes dans un TImageList. Il te suffit dès lors d'appeler la méthode Draw de TImageList pour afficher la bonne carte sur n'importe quel Canvas. Tu peux dessiner directement sur le canvas de ta Form.
    Sinon, solution extrême, utilise DirectX

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 775
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 775
    Points : 5 519
    Points
    5 519
    Par défaut
    Ce que tu pourrais faire, par exemple, c'est de mettre toutes tes images des cartes dans un TImageList.
    +1

    Je n'y avais pas pensé

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par popo Voir le message
    +1

    Je n'y avais pas pensé
    J'ai fait aussi avec des TImage et j'ai vite déchanté
    Le problème, c'est que ce composant inclue des tonnes d'infos inutiles alors que tu veux simplement afficher des images. Ce composant est finalement adapté seulement si tu veux afficher une image (un logo par exemple) ou deux mais pas pour afficher une liste d'images.

  7. #7
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Tout d'abord, merci pour vos réponses!
    Citation Envoyé par Pedro Voir le message
    Ce que tu pourrais faire, par exemple, c'est de mettre toutes tes images des cartes dans un TImageList. Il te suffit dès lors d'appeler la méthode Draw de TImageList pour afficher la bonne carte sur n'importe quel Canvas. Tu peux dessiner directement sur le canvas de ta Form.
    Ok pour une meilleure gestion des ressources mais dans ce cas, pour récupérer la valeur d'une carte, je vais tester la position de cette dernière dans le TImageList (si j'ai tout suivi).
    Exemple:
    La carte 8 de coeur à la position 17. Donc lorsque je tirerai la position 17 lors d'un tirage aléatoire, je fais la correspondance pour dire que ca vaut 8 points! Seul hic, ça va être lourd à gérer tout ça non ? Faudrait que je surcharge le TImageList pour qu'à chaque carte ajouté je lui affecte une valeur ...

    Citation Envoyé par Pedro Voir le message
    Sinon, solution extrême, utilise DirectX
    Oui mais bon, on va y allait doucement hein Je reprends doucement la prog la! Hihi

  8. #8
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par ero-sennin Voir le message
    Ok pour une meilleure gestion des ressources mais dans ce cas, pour récupérer la valeur d'une carte, je vais tester la position de cette dernière dans le TImageList (si j'ai tout suivi).
    Pas vraiment, je voyais plutôt l'identification de la carte par son ID dans la liste. Chaque carte serait initialisée dès le début avec son index d'image de la TImageList
    Une autre solution encore plus efficace niveau ressource serait de "construire" l'image de la carte à partir des éléments de base (la couleur, la valeur, et éventuellement, une figure) De cette façon, les ressources seront encore plus faibles. En revanche, la procédure de dessin sera plus longue... A toi de voir quelle est ta priorité
    Citation Envoyé par ero-sennin Voir le message
    Oui mais bon, on va y allait doucement hein Je reprends doucement la prog la! Hihi
    Bah quoi?

  9. #9
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Citation Envoyé par Pedro Voir le message
    Pas vraiment, je voyais plutôt l'identification de la carte par son ID dans la liste. Chaque carte serait initialisée dès le début avec son index d'image de la TImageList :
    Heu Je ne suis pas tout la!
    Ce que tu veux dire, c'est 8 de coeur = index 8 dans le TImageList c'est ça ?
    Mais alors, le 8 de carreaux, de Pic et de Trèfle seront à l'index 9,10,11 ?
    J'ai un peu de mal à cerner ton raisonnement
    Je ne vois pas comment tu veux gérer l'affectation des points selon la méthode d'index ... Tu vas gérer des tranches d'index sinon alors ... de 8 à 11, 8 points, de 12 à 15 9 points, etc etc ?

    Merci

  10. #10
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    C'est bien plus simple que ça:
    Tu classes tes cartes comme tu veux.
    Chaque classe de carte (TCarte) contient au moins:
    • Sa valeur
    • Son index d'image
    Pour chaque joueur, leur main sera matérialisée par un tableau d'entier (les index des cartes dans le TObjectList). Lorsque tu veux dessiner la carte, tu utilises l'index d'image de la classe TCarte concernée. Mieux: la méthode de dessin se trouve dans la classe TCarte
    Ces valeurs sont simplement initialisées au lancement du jeu.

  11. #11
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Citation Envoyé par Pedro Voir le message
    C'est bien plus simple que ça:
    Tu classes tes cartes comme tu veux.
    Chaque classe de carte (TCarte) contient au moins:
    • Sa valeur
    • Son index d'image
    Pour chaque joueur, leur main sera matérialisée par un tableau d'entier (les index des cartes dans le TObjectList). Lorsque tu veux dessiner la carte, tu utilises l'index d'image de la classe TCarte concernée. Mieux: la méthode de dessin se trouve dans la classe TCarte
    Ces valeurs sont simplement initialisées au lancement du jeu.
    C'est compris!
    J'avais zappé une infos en fait! Je croyais qu'avec uniquement le TImageList ont pouvé s'en sortir...
    Bon, ba voilà que tout ça répond à mes questions.
    Merci pour ces infos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Architecture et conseils sur la réalisation d'un jeu voxel
    Par MrTheoker dans le forum XNA/Monogame
    Réponses: 2
    Dernier message: 28/04/2014, 11h08
  2. [Débutant] Conseil réalisation d'un jeu avec xna.
    Par shirohige dans le forum Windows Phone
    Réponses: 8
    Dernier message: 29/08/2013, 17h58
  3. Jeu de cartes : besoin de conseils
    Par Xenthys dans le forum Langage
    Réponses: 2
    Dernier message: 23/02/2013, 16h53
  4. Réponses: 6
    Dernier message: 26/06/2006, 12h51
  5. Réalisation d'un jeu de voiture 2D
    Par gege2mars dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/01/2004, 22h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo