Projet de tirage de cartes non traditionnelles

Signaler
Messages postés
3
Date d'inscription
samedi 16 septembre 2006
Statut
Membre
Dernière intervention
17 septembre 2006
-
Messages postés
3
Date d'inscription
samedi 16 septembre 2006
Statut
Membre
Dernière intervention
17 septembre 2006
-
Bonjour à tous, je souhaite créer un projet de carte mais je suis encore débutant.


J'ai bien regardé sur le site mais le problème est que je n'ai aucunement besoin du card32.dll étant donée que mes cartes ne sont pas traditionnelles. De plus je compte en créer plus de 100. Alors voilà:


Je voudrais que le programme tire 80 cartes parmis toutes celles existantes. 40 pour le joueur humain, 40 pour l'ordinateur car je ne veux pas que le tirage soit aléatoire pour chaque tour.En clair je veux que les 2 pioches soient créees aléatoirement mais de façon définitive comme le serait un vrai jeu de cartes. De plus dans mon jeu il n'est pas interdit d'avoir une carte en plusieurs exemplaires.


La seconde chose chose est que je ne voudrais pas modifer mon programme chaque fois que je crée et ajoute une nouvelle carte parmi celles existantes. Il faudrait donc ne pas spécifier un truc du genre :dim 1 to 100 ,je suppose, il faudrait que le programme puisse choisir aléatoirement sans avoir à lui indiquer que j'ai ajouter de nouvelles cartes.Il serait bien également que les pioches soient épuisées une fois les 40 cartes jouées par pioche.


 


Je vous remercie d'avance même si je sais que j'en demande beaucoup.


SHREDDER8

5 réponses

Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
HOULA !! c'est un jeu de carte des plus traditionnel !!

Je pense que tu devrais mieux étudier les programmations existantes qui font déjà cela en long et en large... Sans compter, que tu ne pose pas vraiment une question précise. Difficile de t'aider donc. Question vague = Réponse générale !

Néanmoins, pour essayer de te guider dans ton raisonnement. Déjà tes cartes (on ne sait pas si c'est un jeu de 52 cartes+ autres, ou du tarot, ou un truc perso) il faut qu'elles soient toutes uniques. Donc les numéroter, cela sera bien le plus facile pour programmer. Disons de 1 à 80. SI elles ont pour certaines des valeurs identiques, il suffit de créer un second tableau "Valeur(carte)".
Pour faire une distribution aléatoire d'une main, il suffit de tirer 40 valeurs successives distinctes. Le reste restera pour l'ordinateur. Là pas de difficulté particulière. Un simple Randomize Timer, avec RND suffit, tout cela dans une boucle DO...LOOP UNTIL nbtirage=40.

Bon, c'est très théorique, mais difficile d'être précis.

LE forum est surtout fait plus aider un problème particulier dans un code, et pas trop pour discuter d'un projet dans le vague...

Amicalement,
Us.
Messages postés
3
Date d'inscription
samedi 16 septembre 2006
Statut
Membre
Dernière intervention
17 septembre 2006

Merci de me répondre mais je pensais avoir été clair, bon, quand je dis non traditionnelles ca veut dire cartes qui ne sont pas normales donc cartes perso. La question était comment tirer aléatoirement 80 cartes que l'on partage en 2 en raison du nombre de joueurs parmis 100 cartes. Tu dis que je dois allez voir le site pour me renseigner alors que je n'ai rien trouvé en la matière puisque dans tous les codes le nombre total de carte tirées est égal au nombre total de cartes disponibles.Ce qui n'est pas le cas ds mon projet puisque l'on distribue moins de cartes exemple 80 cartes tirées pour 100 disponibles.
je suis dsl si je suis débutant, mais je ne demande pas un code entier, c à moi de faire le projet. Mais j'ai quelques difficultés.


La deuxième question était comment créer un tableau sans que l'on indique le nombre total de carte(je ne sais pas cb de cartes il y aura à la fin du projet) je ne sais pas si c possible de lui dire par ex un truc du genre dim 1 to infini. Voilà c tout
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Bon, pour un bout de code pour le tirage de 40 cartes entre 2 joueurs sur 100 cartes, on peut (entre beaucoup d'autres possibilités) faire ainsi :


 


Option Explicit


Sub TirageCarte()


'Paramètres
Dim NbCarte As Long 'Nb de Carte dans le jeu
NbCarte = 100
Dim NbJoueur As Long 'Nb de Joueur
NbJoueur = 2
Dim NbCarteMain As Long 'Nb de carte à distribuer
NbCarteMain = 40


'Numérotation des cartes de 1 à nbcarte
ReDim Carte(NbCarte) As Long


'Tirage des Mains
Randomize Timer
Dim NumCarte As Long
Dim t As Long, j As Long


For j = 1 To NbJoueur
For t = 1 To NbCarteMain
    Do
        NumCarte = Int(Rnd * NbCarte) + 1 'Numéro aléatoire        If Carte(NumCarte) 0 Then Carte(NumCarte) j: Exit Do
    Loop
Next t, j
  
'Affichage des mains
For t = 1 To NbCarte
    Select Case Carte(t)
    Case 0
        Debug.Print "La carte " & t & " est dans la pioche"
    Case Else
        Debug.Print "La carte " & t & " est dans au joueur " & Carte(t)
    End Select
Next t


End Sub

Maintenant, ici je n'ai fait qu'un tirage, et resterai à définir les valeurs des cartes...

La deuxième question est plus technique que le bout de code ci-dessus. En effet, on peut définir un tableau sans donner le nombre d'indice. On peut le remplir au fur et à mesure, en le redimmensionnant progressivement. Ceci ce fait grâce à REDIM PRESERVE Carte(nouveau_nb) .
MAIS, je déconseille de faire une structure comme celle-là dans un jeu de cartes, puisque le nb de carte est fixe, non ?

Je crois que tu devrais mieux clarifier tes idées sur ce point.

En espérant avoir apporté un petit quelque chose...

Amicalement,
Us.
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Complément,

Tu feras attention que le nb carte par main, ne dépasse pas le nb de carte du jeu... bien sur...

Tu peux intercaler à la fin de 'paramètres

IF NbJoueur * NbCarteMain > NbCarte Then msgbox "Plus de carte à distribuer que de cartes dans le jeu. Impossible !" : Exit sub

Us.
Messages postés
3
Date d'inscription
samedi 16 septembre 2006
Statut
Membre
Dernière intervention
17 septembre 2006

Je te remercie us, c vraiment sympa d'avoir donner un peu de ton temps. Je pense avoir compris ton bout de code c sympa. Je l'essaierais. Au sujet du nombre de carte ce n'est pas très important car après tout, ce n'est pas bien compliquer de modifier le programme pour passer de 100 cartes à 150 cartes par exemple lorsque j'en crée de nouvelles. En ce qui concerne les valeurs des cartes, ne t'en fais pas,  j'ai mes idées et je pense faire si possible un fichier .txt aved Data$ et un code de découpe comme par exemple:




'Charge en variables global les effets des cards
            Carte_Name(i) = Decoupe(Data$, ",", 1)


il y a surement d'autre possibilité de faire mais je pense que cela suffira.
Tu m'as apporter des réponses et je t'en remercie.

SHREDDER8