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

VB 6 et antérieur Discussion :

[VB6] developper un programme de loterie


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 5
    Par défaut [VB6] developper un programme de loterie
    Bonjour,

    je suis nouvelle parmi vous et je souhaite qu'on passeras de bon moment.

    mon premier sujet concerne le developpement d'un programme VB 6.0 pour un jeu de gratter et gagner.

    mes problemes sont :

    1 - le client doit gratter une image pour voir un N° (comme pour les cartes telephonique ou lotto ........) donc comment je dois faire pour que quand il passe sa main l'image qui cache le N° disparait peu a peu en emettant un bruit de grattage.

    2 - le N° qui s'affiche doit etre aleatoire pour une serie de N° entre 1 et 5000 et chaque N° correspond a un cadeau .
    en VB existe t'il un generateur aleatoire de N°car les N° doivent etre aleatoire.

    si vous avez une idée pour ces deux problemes pour m'aider

    et merci d'avance.

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Ben...
    Comment te répondre avant de connaître ton niveau actuel en matière de traitement des images ?
    Quel est-il et que connais-tu de l'emploi des ApIs dans ce domaine ?

  3. #3
    Membre éprouvé Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Par défaut
    Pour la fonction aléatoire, c'est simple :

    La fonction Rnd() renvoie une valeur aléatoire entre 0 et 1. On va donc la multiplier par 5000 pour obtenir une valeur entre 0 et 4999,999999... En prenant la partie entière avec la fonction Int(), on obtient une valeur entre 0 et 4999. Il suffit de rajouter 1 pour obtenir une valeur entière entre 1 et 5000.

    Attention, il faut initialiser le générateur de nombres aléatoires sinon la suite de valeurs est toujours la même ! Cela se fait avec la fonction Randomize.

    On peut maintenant construire la fonction qui va bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Public Function ValeurAleatoireEntre1et5000()
        Randomize
        ValeurAleatoireEntre1et5000 = Int(Rnd() * 5000) + 1
    End Function
    Le reste est nettement plus compliqué et nécessite des connaissances approfondies, notamment des API Windows car VB ne gère pas la transparence des images qu'il crée (par contre il sait utiliser celle des images GIF, mais cela ne convient pas pour ce que tu veux faire car il ne sait pas CREER des images GIF de façon native).
    Il faut donc passer par les fonctions graphiques du GDI, et ce n'est pas simple.

    Il ne faut cependant pas désespérer, il y a surement quelqu'un qui l'a déjà fait. Le tout est qu'il lise ce forum. Bonne chance.

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    La transparence des Images n'aura rien à voir dans cette affaire, ami MGD, mais une parfaite maitrise du traitement des images et une parfaite connaissance de l'utilisation de certaines APIs, OUI !
    Si l'intéressé(e) a déjà cette maitrise et ces connaissances, on y parviendra, mais pas avec du code, alors... mais par certaines indications de mécanismes à mettre en oeuvre... et il/elle devrait pouvoir suivre...
    Si, par contre, la réponse est non.... il est évident qu'on devra s'arrêter là !

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 5
    Par défaut
    bonjour,

    je vous remercie mes amis pour votre aide et j'ai besoin d'un peu plus de reponses si c'est possible.

    on se qui me concerne je suis informaticienne et je connais rien au domaine de l'image

    et pour faire disparaitre l'image je crois que la solution la plus simple et de la decomposer en des centaines de morceaux puis utiliser la fonction ONMOUSEMOVE visible=false

    mais pour le son j'ai aucun idée

    j'attend avec patience vos reponses

    et merci

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Clair et très largement suffisant pour moi !
    J'arrête là, bien évidemment !

  7. #7
    Membre éprouvé Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Par défaut Grattage...
    J'ai trouvé une méthode très simple pour réaliser ce que tu veux faire. On utilise deux PictureBox, dont un masqué qui contient l'image après grattage et un uni qui contient l'image avant grattage.

    Avec l'évènement MouseMove, on recopie l'image du premier PictureBox sur le second sur quelques pixels autout de la souris (j'ai essayé avec 1 pixel, mais c'est beaucoup trop long à gratter !)

    Je fais un petit projet VB de démo et je reviens dans cette discussion quand j'ai fini.

    A bientot

  8. #8
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    l'idée est bonne et astucieuse .
    Va falloir jouer avec la taille du pinceau.. et surtout pas pixel par pixel !

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 182
    Par défaut
    Vous allez certainement avoir des problèmes de rafriachissement avec la méthode de MGD_Software bien qu'elle soit très astucieuse... En même temps sans utiliser d'Api je vois pas comment faire ..

  10. #10
    Membre éprouvé Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Par défaut Grattage
    Voilà, c'est fait, tout au moins sans le son.

    Il y a à peine 32 lignes de code...

    Par contre il est difficile de décrire la mise en page nécessaire pour une présentation correcte. En gros, il faut :

    Un PictureBox (Picture1), non visible, avec la propriété AutoRedraw à True. Pour ma démo, ce pictureBox a été rempli avec un nombre aléatoire à 4 chiffres. Pour que ce nombre soit à peu près centré, il faut que le PictureBox ait une dimension de 2745 x 915 (rappel : en VB ce sont des twips, pas des pixels), un BackColor blanc et une police Arial Gras de 28 points, noire. Picture1 peut être placé n'importe où dans la feuille

    Un second PictureBox (Picture2), visible, avec la propriété AutoRedraw à True, a un fond de couleur grise. Ses dimensions doivent être rigoureusement les mêmes que celles de Picture1.

    J'ai poussé le détail jusqu'à mettre le mode d'emploi dans un Label au-dessous de Picture2...

    Le reste se passe dans le code de la feuille, que voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    Option Explicit
     
    Private Const knPixelSize = 3            'Taille de la zone de "recopie" en pixels
     
    '-----------------------------------------------------------------------------
    Private Sub Form_Load()
        Picture1.Print "   " & Format(Int(Rnd * 9999) + 1, "0000")
    End Sub
     
    '-----------------------------------------------------------------------------
    Private Sub Picture2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Dim lColor As Long, nX As Integer, nY As Integer
        Dim nSizeX As Integer, nSizeY As Integer, nStepX As Integer, nStepY As Integer
     
        'Conversion des pixels dans l'unité des PictureBoxes
        nSizeX = Picture1.ScaleX(knPixelSize, vbPixels, Picture1.ScaleMode)
        nSizeY = Picture1.ScaleY(knPixelSize, vbPixels, Picture1.ScaleMode)
        nStepX = Picture1.ScaleX(1, vbPixels, Picture1.ScaleMode)
        nStepY = Picture1.ScaleY(1, vbPixels, Picture1.ScaleMode)
     
        'Recopie de l'image de 1 vers 2 si le bouton gauche de la souris est appuyé
        If Button And vbLeftButton Then
            For nX = -nSizeX To nSizeX Step nStepX
                For nY = -nSizeY To nSizeY Step nStepY
                    lColor = Picture1.Point(X + nX, Y + nY)
                    Picture2.PSet (X + nX, Y + nY), lColor
                Next
            Next
        End If
    End Sub
    '-----------------------------------------------------------------------------
    La valeur de la constante knPixelSize dépend bien sûr de la taille de l'image à découvrir et de la vitesse à laquelle on veut la découvrir.

    Quand au son, c'est un peu plus délicat. La principale difficulté est de le déclencher à bon escient. En effet, on peut utiliser la fonction API Playsound() qui va jouer un fichier son situé sur le disque. On enregistrera un son de grattage d'environ une seconde. Par contre, si on le déclenche à chaque mouvement de souris, on risque d'avoir des problèmes car chaque déclenchement annule précédent: les mouvements de souris étant très rapprochés, on n'entendra quelque chose qu'à l'arrêt de la souris, ce qui n'est pas le but recherché. Je pense qu'il faut jouer avec un timer, mais je n'ai pas encore trouvé comment.

    En attendant, si le projet vous intéresse, les sources actuelles sont disponibles au téléchargement dans un fichier ZIP sur mon site

    Note à jmfmarques : au lieu de sarcasmes et d'une agressivité à peine voilée, les utilisateurs des forums attendent des réponses constructives et non un "moi j'arrête là". Quand j'étais débutant en VB (il y a plus de 10 ans de cela, et Internet n'existait pas), j'aurais bien aimé trouver quelqu'un qui me tienne la main quand je butais sur un problème que je résouds maintenant en trois secondes... C'est vrai que les gens ne cherchent souvent pas assez avant de recourir au forum, mais ce n'est pas une raison pour les rembarrer (surtout en rouge et gras). Si vous trouvez la question idiote, il suffit de ne pas répondre...

  11. #11
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 5
    Par défaut
    je te remerci MGT Software pour ton aide c'est vraiment tres gentil de toi et j'espere que tu lis mon dernier message pour bien comprendre le probleme

    encore une fois merci

Discussions similaires

  1. [vb6] Vérification des programmes actifs
    Par Jivy77 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/06/2006, 16h40
  2. [VB6]Executer un programme externe et récuperer les sorties
    Par agro dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 29/03/2006, 13h08
  3. [VB6]Executer un programme en vb6 des le lancement
    Par cedre22 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 15/02/2006, 10h15
  4. [VB6] Ajout du programme dans la barre de tâche
    Par Fab18 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 11/01/2005, 09h17
  5. [VB6] Exécuter un programme en tant que...
    Par Le_Tolier dans le forum VB 6 et antérieur
    Réponses: 36
    Dernier message: 28/05/2004, 14h53

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