Retrouve les paires d'images cachées

Soyez le premier à donner votre avis sur cette source.

Vue 2 994 fois - Téléchargée 375 fois

Description

Petit jeu pour travailler sa mémoire visuelle.
Le jeu affiche 10 paires d'images durant une dizaine de secondes avant de les masquer.
A toi de les retrouver dans un minimum de temps.
Dans sa présentation actuelle, j'utilise des fichiers ICO mais on peut très bien utiliser
d'autres images (il faut toutefois faire attention à la taille de celle-ci).
Le programme utilise un Timer, charge des fichiers parmis une liste, effectue un triage de ces fichiers, se sert de la fonction Randomize.
'======================================================
Le code ci-dessous est le code du module que j'ai modifié en fonction des remarques qui m'ont été faites par Legamer et Derkin.

Source / Exemple :


Public ListeFichiers() As String
Public MyPath As String

Sub Main()

    Dim Num As Integer
    Dim i As Integer
    Dim j As Integer
    Dim Fichier As String
    Dim Interm As String
    

    MyPath = App.Path
If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\"
MyPath = MyPath & "images\"
'========================================================================
'Si MyPath ne termine pas par "\", l'ajoute
'En effet, lorsque je place le projet au niveau de C:,
'App.Path renvoie le chemin suivant "C:\".
'Par contre, lorsque le projet se trouve dans un dossier,
'App.Path renvoie le chemin de ce dossier MAIS SANS le "\" final
'C'est déjà ici que j'avais commis une erreur dans mon 1er projet,
'puisque je définissais MyPath ainsi MyPath = App.Path &"\images\"
'Or d'après ce que je viens de dire, MyPath pouvait donc prendre
'la valeur suivante "C:\\images"
'========================================================================
    
    'Récupère le nom des fichiers images
    '-----------------------------------
    Fichier = Dir(MyPath & "*.ICO", vbArchive)
If Fichier = "" Then
MsgBox "Aucun fichier de type *.ICO n'a été trouvé dans le répertoire spécifié:" _
& vbCr & vbCr & String(10, " ") & Left(MyPath, Len(MyPath) - 1) & vbCr & vbCr _
& "Veuillez vérifier que le répertoire et les fichiers en question existent.", vbCritical
End
End If
'========================================================================
'Deuxième erreur de ma part, liée d'ailleurs au point précédent.
'Puisque le dossier contient une erreur dans son chemin,
'la fonction Dir() sera bien incapable de trouver le moindre fichier
'dans ce dossier "inexistant", dès lors la boucle suivante n'aura pas lieu
'et ListeFichiers restera vide ;
'ce qui provoquera l'erreur "Indice en dehors de la plage" lors du tri
'des fichiers
'========================================================================

    Do While Fichier <> ""
        ReDim Preserve ListeFichiers(Num)
        ListeFichiers(Num) = Fichier
        Fichier = Dir
        Num = Num + 1
    Loop
    
    'Retrie alphabétiquement la liste des fichiers
    'parce qu'au départ j'utilisais des photos de personnes
    '-------------------------------------------------------
    'Je rajoute une gestion des erreurs au cas où...
    On Error GoTo Erreur
    For j = 0 To UBound(ListeFichiers)
        For i = 0 To UBound(ListeFichiers) - 1
            If ListeFichiers(i) > ListeFichiers(i + 1) Then
                Interm = ListeFichiers(i)
                ListeFichiers(i) = ListeFichiers(i + 1)
                ListeFichiers(i + 1) = Interm
            End If
        Next
    Next
    
    Form1.Show
        
    Exit Sub

Erreur:
    If Err = 9 Then
        MsgBox "Erreur inattendue dans le tri des fichiers" & vbCr & vbCr _
            & "L'application va se terminer.", vbCritical
    Else
        MsgBox "Erreur tout à fait inattendue : " & vbCr & vbCr _
                & "Erreur n°" & Err & " : " & Err.Description _
                & vbCr & vbCr _
                & "L'application va se terminer.", vbCritical
    End If
    End
End Sub

Conclusion :


Je sais que le jeux peut (et devrait même) être amélioré :
- prévoir un compteur des coups ratés;
- prévoir la possibilité de faire une nouvelle partie (ou de "relancer la donne");
- offrir la possibilité de se créer différents répertoires regroupant des images par thème...
Mais ça fait un moment que j'ai fait ça et je trouvais dommage de le laisser dormir sur mon PC.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
j'avais pas vu la date ? 2002 woauoooooooo tu as du progresser depuis... suis un rouillé dsl
ben il y a des erreurs... si on clic plusieurs images à la fois sa bloque....;)
oups dsl ... il fonctionne, c'etait juste un dossier mal placé...merci il super!
ben moi il me demande le fichier "image" qu'il ne trouve pas?
merci de m'expliquer
Messages postés
27
Date d'inscription
vendredi 12 juillet 2002
Statut
Membre
Dernière intervention
4 juillet 2003

legamer a raison il plante sur le module ton prog

c'est au niveau des "for" c'est le UBound(ListeFichiers) qu'il n'encaisse pas mais je ne voi pas l'erreur

sinon le code est pas mal et bien commenté c'est cool
Messages postés
1133
Date d'inscription
mercredi 2 octobre 2002
Statut
Membre
Dernière intervention
24 juillet 2011
3
--------------------------------------------------------------------------------
Message pour legamer

Désolé, mais avant de mettre le tout à disposition, j'ai encore essayé le jeux et ça tournait sans problème ; je n'ai eu aucune erreur du genre "indice hors plage", mais bon, je devrais peut-être mettre une gestion d'erreur à ce niveau-là (à condition de savoir où se trouve l'erreur).
De plus, je ne vois pas ce qu'est ce fichier.log que tu réclames...
Et pour finir, étant francophone, j'avais lancé une recherche sur image, paire... pour voir si le jeu était déjà disponible...
Merci quand même pour tes remarques (ceci dit, combien tu donnes ?)
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.