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.
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.