begin process at 2010 02 10 12:42:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

rnd speciale


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

rnd speciale

mercredi 21 septembre 2005 à 18:51:29 | rnd speciale

diablamanshadow

bonjour,
voila je me demandais un petit truc sur lequelle je bloque j'aimerais faire un jeu basic de bataille (le jeu de carte) j'ai les carte une idee du code a mettre mais j'ai jamais fait de rnd enfin si un mais vraiment naze en gros j'aimerais que quand l'utilisateur comme l'ordi pioche ce soit une carte aleatior genre sa tire un nombre aleatoire entre 1 et 52 si ses la 1 bah sa sort exemple l'as de pique mais une fois que cette carte est tiree je ne veut plus qu'elle puisse etre prise donc comment faire exemple un rnd qui ferais un random entre 1 et 52 puis si exemple il tire la 47 bah au random futur (dans ce programme par pour toujour ^^) il ne puisse plus tirer la 47 donc il ferais un random sur tt les nombre entre 1 et 52 sauf la 47 etc par apres donc apres y tire la 42 bah au trage d'apres y pourra pas prendre ni la 47 ni la 42 etc etc vous voyez ce que je veux dire ? enfin voila et je trouve pas comment faire :s ses le seul truc qui me bloque ses ce **** de random (rnd) donc si pouviez me pondre un chtit code ou me conseiller ou autre enfin pour que j'arrive a avoir cette routine se serais bien sympa (pour ceux comme dans mes anciens post qui vienne dire ohhhh le noob , ohhh le chiant etc passer votre chemin je suis ici pour apprendre et non pour embeter mon monde ...)
donc voila je suis ouvert a tous (sauf insultes etc ^^)
merci d'avance
Diablaman

ps: pour ceux qui voudrais m'aider personnellement pour que je comprenne mieux voila mon MSN diablaman@hotmail.com
encore merci d'avance ^^
mercredi 21 septembre 2005 à 19:42:37 | Re : rnd speciale

nhervagault

Administrateur CodeS-SourceS
Salut

Les cartes sont un type ou une string, tu fais comme tu veux.

Utilises une collection avec toutes les cartes dedans.

Au depart tu as 52 cartes.

Ton random tu ne fais sur l'index de ta carte et le max c'est le nombre de cartes dans la collection.

Exemple :
il y a 32 cartes dans la collection

Le random te donne 1
Alors tu prends la carte dont l'index est 1
Et par exemple ta carte est 10 trefle

Tu supprimes la carte de la collection

(la collection bouche le trou toute seule)

Tu veux remettre la carte le 10 trefle change d'index il prendra l'index 31 (base0)



(quand tu la rajoutes du la mets a la fin)

Normalement ca fonctionne.


Voila
mercredi 21 septembre 2005 à 20:02:47 | Re : rnd speciale

violent_ken

Membre Club
Réponse acceptée !


Violent Ken

Salut.
Voilà un exemple possible.

Le but est de tirer un nombre aléatoire, de donner sa valeur (entre 1 et 52) et de stocker cette valeur dans un tableau (redimensionnable). Ainsi, chaque nouvelle valeur du random est comparée à tous les éléments du tableau. Si elle est égale à une valeur du tableau, elle sera retirée aléatoirement, jusqu'à trouver une valeur non chosie. Trève de blabla, voilà le source :

'définitions des variables
Dim Nbre As Long, Tableau() As Long, T As Long, Res As Long
ReDim Tableau(1)
'pour un "vrai" hasard
Randomize
'début de la boucle
While UBound(Tableau) < 53  'tant que le tableau n'a pas 52 valeurs
    Res = 0 'ok pour l'instant
    'tirage aléatoire
    Nbre = Int(Rnd * 52) + 1 'entre 1 et 52
    'on teste avec le tableau
    For T = 1 To UBound(Tableau)    'pour chaque élément du tableau
        If Tableau(T) = Nbre Then
            Res = Res + 1     'déjà existant
            Exit For
        End If
    Next T
    If Res > 0 Then
        'alors c'est pas bon
        a = a
    Else
        'là c'est bon
        MsgBox Nbre  'display le resultat
        'on augmente le tableau
        ReDim Preserve Tableau(UBound(Tableau) + 1)
        Tableau(UBound(Tableau)) = Nbre  'inscription de la valeur
    End If
    DoEvents    'si t'as pas de chance, pour rendre la main
Wend




çà marche parfaitement, j'ai testé.
Si la réponse te convient, clique sur "réponse acceptée"
@+

NB: la prochaine fois, écrit mieux ton message : aucun retour à la ligne, pas de ponctuation.... c'est la cata...

mercredi 21 septembre 2005 à 22:04:17 | Re : rnd speciale

us_30

Membre Club
Réponse acceptée !
Bonsoir,

La réponse de Violent Ken me semble juste. Mais, on peut aussi imaginer d'autres alternatives pour tirer aléatoirement une série de numéros.

Par exemple, voici la trame :

=

Sub TireUneCarte()

Dim Carte(52)

Randomize

'Boucle de tirage
Do

nb = Int(Rnd * 52) + 1 'nb alea

If Carte(nb) = 0 Then
    'N° de carte jamais tiré donc on l'affiche
    MsgBox "Votre n° de carte : " & nb
    Carte(nb) = 1 'marque cette carte
    'Compte le nb de carte tiré
    compt = compt + 1
End If

Loop Until compt = 52

End Sub

=

Le fonctionnement est trés simple. On dimensionne un tableau avec un nb d'éléments (52 ici). Par défaut, chaque élément du tableau vaut zéro. Puis on choisit un nb aléatoirement entre 1 et 52. On fait corresponde l'indice du tableau au numéro de la carte (nb). Si la valeur du tableau est nulle (donc jamais choisi) on le met à 1. Et on recommence, jusqu'à épuissement... On compte le nb de numéro différent sortie afin de pouvoir sortir de la boucle DO...

Voilà !

Amucalement,
Us.
mercredi 21 septembre 2005 à 22:33:27 | Re : rnd speciale

violent_ken

Membre Club


Violent Ken

Oui, la suggestion de us_30 n'est pas mauvaise non plus.

Par contre, dans ma source (plus haut),

    If Res > 0 Then
        'alors c'est pas bon
        a = a
    Else

peut être remplacé par

    If Res > 0 Then
        'alors c'est pas bon
    Else

La ligne a=a est évidement inutile, c'était juste pour les tests...
@+

jeudi 22 septembre 2005 à 12:24:37 | Re : rnd speciale

galopin01

Bonjour,
Comment détruire définitivement en bloc la collection ?
Pas d'autre solution que de "Remove" chaque élément dans une boucle ?
Merci.
jeudi 22 septembre 2005 à 13:38:37 | Re : rnd speciale

nhervagault

Administrateur CodeS-SourceS
Salut

Regardes si

set macol = nothing fonctionne.

Sinon

Set macol =new collection

Efface les données ;-)
jeudi 22 septembre 2005 à 13:59:34 | Re : rnd speciale

diablamanshadow

merci merci j'adore vos reponse elle sont bien etc ^^ la je suis super malade donc je ne sais pas tester dans l'imediat (tt le temp clouer au lit :s) mais sinon je v tous les essayer et voir lequelles me convient le mieux ensuite je valide les reponse ^^ sa devrais pas tarder je pense tester sa demain ou se soit (samedi soir grand max ^^) sinon en faite j'aurais voulu un truc hyper simple mais vraiment simple de simple que meme un demeurer avec des moufles puisse comprendre genre :
private sub command1_click()
dim carte(52) as integer
randomize
nb = Int(Rnd * 52) + 1
if carte(1) then
sa tire la carte
sa l'efface et donc ne permet plus de la tirer donc la vire du rnd
end if
if carte(2) then
sa tire la carte
sa l'efface et donc ne permet plus de la tirer donc la vire du rnd
end if
end sub

voyez un truc super simple quoi ^^ que je peux parametrer et changer comme je veux du genre si du jour au lendemain je met plus 52 mais 67 bah je peux le faire et peux reparametrer le tt enfin vous voyez ce que je veux dire ^^ enfin je v tester vos reponse puis je valide celle qui me convient le mieux sinon si vous trouvez plus simple (car moi je suis vachement noob en random etc :s) bah poster allez y meme si y a 20 code je les essayerais en plus sa peut tjrs servir aux autres ^^ (a moi aussi en meme temp evidement ^^)

merci d'avance ;-)
jeudi 22 septembre 2005 à 14:35:00 | Re : rnd speciale

diablamanshadow

a oui petite precision car je vient de tester les code ^^ j'arrive pas a les comment dire "modifier" je veux dire tant que le numero de la carte apparait en msgbox donc le nb ou le nbre sa depend des deux code bah le rnd est parfait (j'ai passer mon temp a faire des grille sur papier a compter le tirage barrer le chiffre etc) mais si je modifie exemple pour ken :
MsgBox Nbre  'display le resultat
par
label1.caption = Nbre  'display le resultat
ou pour us_30 :
MsgBox "Votre n° de carte : " & nb
par
label1.caption = "Votre n° de carte : " & nb
bah alors la au bout de +- en general 16 tirage bah la y redonne des chiffre qu'il a deja donner pour ken il me redonnais en general 3/4 fois 49 et pour us il me donnais en general 3/4 fois 11 et 16
enfin voila comment adapter sa a un label et non a un msgbox (car je vois mal tt les tour dire au joueur vous avez tirer sa avec un msgbox puis dire l'adversaire a tirer sa encor epar msgbox ...mais plutot p
jeudi 22 septembre 2005 à 14:35:50 | Re : rnd speciale

diablamanshadow

mais plutot par label exuser moi j'ai mal clicker ^^ (raccourci clavier enfoncer sans faire expres ^^)

1 2 3

Cette discussion est classée dans : carte, rnd, random, tire, enfin


Répondre à ce message

Sujets en rapport avec ce message

RANDOM [ par tekila_bandita ] Bonjour, j'aimerais savoir comment faire pour une randomisation qui ne soit pas comprise entr 0.5 et 2... sans effectuer de calcul de style : rnd*200/ Random [ par sebleboss2002 ] Voilà, j'ai bien l'impression d'avoir un problème... Je suis en train de coder un Yams, avec cinq dés donc, et je trouve que les chiffres qui sortent aide rnd [ par diablamanshadow ] bonsoir,je ne savais pas trop ou mettre ca mais bon :-)en gros admettons j'ai une liste de 1 a 50 (dans un listbox)je fais un rnd cela me remplira don Fonction Random ! Rnd ? [ par robapt ] Bonjour à tous !Voila, je fais un petit prog qui utilise la fonction Rnd et je voudrais savoir un truc.Voici mon code : RandomizeList1.AddItem Int((50 carte sim [ par aitaissi ] Je  cherche  un  code en  </span Tuto VBexpress DB [ par Solenoyde ] voila je suis débutant mais j'ai quand meme réalisé un application pilotant pour mon travai qui fonctionne enfin bref tout ca pour dire... cela fait Projet etudiant iut [ par euck30 ] Bonjour nous sommes étudiants a l'iut de nimes nous travaillons sur un proget de comunication entre interface grafique ( visual basic) et une carte XB Attribuer une adresse ip a une carte réseau [ par fred2567 ] Bonjour,voila j'ai un soucis avec mon code VB qui ne comprend pas le code suivant :ip.SetValue("192.168.1.10", 0)mask.SetValue(<font co pilote CArte son introuvable [ par BoutEllis ] Bonjour ,Ca fait trois jours que j essayee de trouver les pilotes de la carte son en vain , en fait j ai obtenu son refernecec 82801G (ICH7 Family) Hi gestion plusieurs ports série [ par coolidge ] Je recherche une librairie Windows pour gérer d'un seul bloc 4 à 8 ports série, c'est à dire COM1,COM2,COM3,COM4,COM5,COM6 : les 2 ports sur la


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales