~ Edito ~
12/03/2006 @ 13:39
Depuis la dernière mise à jour (qui remonte à... oulala plusieurs mois), un petit ménage de printemps s'impose. Ca tombe bien, c'est presque la période. Au menu, et progressivement sur les jours à venir, rafraîchissement de plusieurs fonctions et procédures, nouvelles APIs et nouveaux programmes.
~ Rechercher ~
~ Annuaire VB ~
~ Partenaires ~
|
Colonnes
colonnes.exe (le programme en VB6 natif) ~
colonnes.zip (les sources du programme)
Si VB 6.0 n'est pas installé sur votre ordinateur, vous aurez peut-être besoin d'installer les
Runtimes VB : DLL VB 6.0
Les deux DLL suivantes sont, en général, également nécessaires :
VB6FR.DLL ~
MSCOMCTL.OCX
(pour NT/2000, à copier dans WINNT\SYSTEM32 - pour 95/98/XP, à copier dans WINDOWS\SYSTEM)
Le programme est constitué d'une seule feuille.
La feuille a cet aspect là :
- 1 menu 'Jeu', pour lancer une nouvelle partie ou quitter l'application.
- 1 menu 'Vitesse', pour régler la vitesse à laquelle tombe les blocs pendant le jeu.
- 6 rectangles de couleur représentant les 6 couleurs utilisées par le jeu dans les blocs.
- 6 labels associés aux rectangles ci-dessus donnant les statistiques d'apparation des couleurs.
- 5 labels donnant des informations sur la partie en cours, de haut en bas ; la vitesse de défilement,
le nombre de carrés effacés depuis le début de la partie, le nombre de blocs tombés depuis le début de
la partie, le score de la partie en cours, le meilleur score depuis l'installation du jeu.
- 3 rectangles délimitent les informations de jeu, 1 avec les bords arrondis, et 2 petits donnant
l'impression d'un double soulignement.
- 1 zone picture qui est en fait l'aire de jeu dans laquelle tombent les blocs de couleur.
|
|
Le but du jeu est simple, aligner au moins trois cases de même couleur dans n'importe quel sens.
Le principe de fonctionnement est similaire à Tetris. Il faut donc faire tomber des blocs de trois cases,
avec des couleurs choisies aléatoirement. Et à intervalle régulier les faire descendre d'une case jusqu'à ce
qu'ils arrivent en bas ou sur une case déjà remplie.
On gère ainsi un tableau qui représente la grille de jeu, et tout le travail consiste à mettre à jour ce
tableau en fonction des mouvements et puis faire apparaître les changements à l'écran. Rien de bien compliqué
dans ce programme, juste un peu de logique, de rigueur et de bon sens. Les commentaires devraient suffire à
vous montrer le principe général de fonctionnement.
La réelle seule difficulté qui pourrait poser problème est le raffraîchissement de la fenêtre.
En effet, j'ai utilisé ici une picture pour l'aire de jeu, car elle permet de travailler avec la méthode
Line (ce que ne fait pas le contrôle Image par exemple). Et il faut bien placer la propriété AutoRedraw pour
ne pas voir les cases disparaître après avoir déplacé une autre fenêtre par dessus.
De la même manière que pour intercepter la frappe des touches au clavier il faut bien positionner la
propriété KeyPreview de la Form.
Après avoir retravaillé sur ce programme pour le diffuser ici, je me suis aperçu que certaines parties du
code (essentiellement la recherche de combinaison) n'étaient pas spécialement optimisées. Si l'envie me prend
je vous fournirai alors une nouvelle version. Sinon, vous pouvez toujours m'envoyer vos améliorations.
Ce programme déjà intérressant sous cette forme là pourrait l'être encore plus avec très peu d'amélioration.
Quelques suggestions pour ceux qui voudrait en faire un peu plus; une gestion des scores amélioré (genre
top 10, avec toutes les statistiques sur la partie), une option pour voir le prochain bloc qui va apparaître,
gestion des points attribué plus poussée (c'est-à-dire, si la combinaison est complexe, on attribue plus d'un
point par carré effacé), jeu à deux joueurs (ou mieux pour ceux qui n'en veulent, jeu en réseau...), choix
de la dimension de la grille, choix du nombre de couleurs, un fichier d'aide, augmentation de la vitesse en
fonction du score, etc, ...
Les idées ne manquent pas. N'oubliez de me faire parvenir une version du programme si vous avez appliqué ces
quelques suggestions.
Sur ce, bonne réflexion avec le code suivant...
frmColonne.frm (
Afficher le code)
|