begin process at 2008 07 06 19:32:26
1 205 742 membres
305 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Distribution de carte [ Archives Visual Basic / J'AI BESOIN D'AIDE !!!! :) ] (Fripouil)

Distribution de carte le 18/02/2004 20:43:38

Fripouil
Bonjour,

Alors voila je suis en train de faire un jeu de carte (style bataille) et j' aimerais savoir comment faire pour distribuer les 52 cartes aléatoirement pour le pc et le joueur.

Merci de m' aider par avance.
Fripouil

Re : Distribution de carte le 18/02/2004 21:47:35

guifr
Bonsoir,

Utilise juste la commande int(Rnd()*52) qui te donnera un numéro au hasard entre 0 et 51 (donc 52 numéros)
Là où ça se gatte, c'est qu'il ne faut pas donner deux fois la même carte...

Donc tu créé un tableau genre Carte(51) as boolean avec la valeur False quand la carte n'a pas été distribuée...
Si le numéro donné par int(Rnd()*52) correspond à celui d'une carte déjà donnée, on cherche un nouveau numéro, jusq'à tomber sur une nouvelle carte.
En tout cas, voilà pour les grandes lignes !

+ Ne pas oublier le Randomize au début de la fonction Rnd pour qu'elle soit vraiment alléatoire
+ Mettre toutes les valeurs du tableau à False au début

Re : Distribution de carte le 18/02/2004 22:08:29

Fripouil
Merci je vais essayé de me débrouiller
Mais peux tu m' expliquer quel genre de tableau dois je utiliser ?
Merci déja pour les explications
Fripouil

Re : Distribution de carte le 18/02/2004 22:13:48

guifr
Lors de tes déclarations :

Dim Carte(51) as boolean

ce type de déclaration s'appelle un tableau.
C'est un peu comme si tu avais 52 valeurs Carte de type booléen (on part de zéro).
Pour accéder à la valeur 3 (donc la 4ième valeur) : Carte(3)
C'est très pratique pour automatiser, par exemple, je t'ai dis qu'il fallais mettre les valeurs à False :

For i = 0 to 51
carte(i) = False
next

et hop, les 52 valeurs sont à false !

Re : Distribution de carte le 19/02/2004 02:47:18

Fripouil
Excuse moi mais je n' y arrive pas

J ai un bouton Distribuer
Mes Cartes s' appellent : Carte(0) .......Carte(51)
en tableau j' ai mis :

Dim Carte(51) As Boolean

et dans le bouton distribuer j ai :
Timer1.enabled = true

et dans le timer :

Randomize Int(Rnd() * 52)
masi ici il n y a aucune relation avec mes cartes c est normal ??!!

le probléme est que déja j ai un mesage du style
Le membre existe déja dans un module d' objet duquel le module d'objet est dérivé (ca c est de la phrase)

Dans l' idée ce que je veux faire c est qu un timer donne une carte au pc ensuite au joueur etc

J' ai du pas comprendre ou loupé un truc (ou plus qu' a abandonné et refaire des tables de mixage lol)

Enfin si tu as du temps a me consacrer pour des explications merci encore et encore
A tout a l heure LOL

Fripouil

Re : Distribution de carte le 19/02/2004 15:48:55

guifr
Bein en fait tout dépend de l'endroit où t'as défini le tableau Carte. Selon l'endroit où tu l'as mis, tu vas avoir un problème de portée, la fonction Timer ne pourra pas accéder au tableau, sois parcequ'il n'est pas accessible directement depuis le Timer, sois parcequ'il n'est défini que pour une fonction et auquel cas il est détruit à la sortie de celle-ci. Il reste une solution, le déclarer dans le Général, c'est-à-dire hors-fonction, de ta form ou de ton module (c'est à dire tout en haut). Tu peux l'y déclarer en tant que Public, (ce qui le rendra accessible depuis les autres feuilles) ou Global, mais seulement dans un module pour Global.

Dans ton timer, tu met un truc du genre :

Dim NCarte as Integer

Randomize 'Pour initialiser le générateur de nombres pseudos-aléatoirs

do
NCarte = Int(Rnd() * 52)

if Carte(NCarte) = False Then
'La carte n'a pas encore été dsitribuée

'Ici la procédure pour distribuer une carte
Carte(NCarte) = True 'On actualise le tableau car la carte vient d'être distribuée
Exit Do 'C'est bon, on a réussi à distribuer une carte libre
End if
loop

Si la carte avait déjà été distribuée, la structure if est sautée, donc la boucle est répétée. Attention ! Si toutes les cartes ont déjà été distribuées la fonction tournera en boucle ! On pourrait s'en prémunir avec une strucure au début du Timer du genre :

For i = 0 to 51
if carte(i) = False then: exit for
next

if i = 52 then
'On a parcouru toutes les cartes, et toutes ont déjà été distribuées;
Exit Sub 'Donc on quite la structure, éventuellement on l'Enabled du Timer a false, et on affiche un message d'erreur, c'est selon tes goûts !
end if

Voilà voilà, dis-moi quand même ce que tu en pense, comme ça je serais sûr que tu ai reçu ce message...

Re : Distribution de carte le 19/02/2004 16:32:06

Fripouil
euh j' ai un gros probléme, l' application me plante visual basic !!!! tout se ferme

Peut on faire plus simple du genre :

le joueur et le pc on chacun des picturesBox du style :
JeuJoueur & JeuPc

et distribuer les cartes dans les pictureBox 1 coup sur 2 via le timer (sachant que le jeu du pc sera caché) m' enfin cela me semble bien compliqué car ce n est vraiment que le début...
Car je bidouille, je bidouille mais cela ne donne vraiment rien


Fripouil

Re : Distribution de carte le 19/02/2004 17:25:26

guifr
je vois pas trop comment faire plus simple, si on supprime cette structure, tu risques de distribuer plusieurs fois la même carte !

Si t'as une base assez avancée, je veux bien y jeter un ouil et voir ce qui cloche...

Re : Distribution de carte le 19/02/2004 18:34:26

crenaud76
Euh !! une shtite question !! Qu'est-ce qu'un timer vient faire dans un algorithme de distribution de carte ???
J'avoue que je ne vois pas la finalité du truc !!

Christophe R.

Re : Distribution de carte le 20/02/2004 00:46:03

Fripouil
Bonjour crenaud76, à vrai dire je ne sais pas réellement mais ce que je voudrais c' est avoir comme une vrai distribution de carte et non tient 26 carte pour toi et 26 pour moi, je voudrais vraiment une carte pour toi une carte pour moi et ceci pour les 52 cartes (donc 26 par "personnes") certes dans un bref délai mais essayer de reconstituer une partie de carte.

Si jamais tu as des idées fais en part...
Merci de nous aider avec des choses constructives alors !!!

Moi je débute et j' ai besoin d' aide et d'ailleur j' en remercies encore guifr pour sa patience.
@+
Fripouil


[Page 1 Page 2]
Classé sous : carte, distribution

Participer à cet échange

Pub



Appels d'offres

WEB DESIGN
Budget : 1 000€
Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS