Site officiel du PHP Mes programmes PHP : PHPMine

Présentation

J'ai trouvé ce script de jeu dans sa version 2.0 sur le CD-Rom de Code(r), il vient de PHPScripts. J'ai été assez déçu de m'apercevoir qu'il était en PHP3, et que je ne pouvais pas l'exécuter avec mon EasyPHP. Ou alors il faudrait des réglages que je ne connais pas et que je n'ai pas envie de faire de toute façon.
J'ai donc pensé que ce serait une bonne introduction au langage que de le convertir au PHP4.
Tant que j'y était, j'ai converti le HTML au XHTML (non validé...), j'ai nettoyé un peu le source, fini certaines choses (comme afficher le score...), ajouté un mode triche (pour les tests !) et traduit les messages pour supporter à la fois le français et l'anglais.
C'est la version 2.1, je prévois de continuer à améliorer ce script dans des versions ultérieures.

Points forts de l'original

Le script originel bénéficie d'un code HTML sain avec des graphiques sympas (fidèles à l'original : Démineur, de Microsoft).
L'algorithme de base est bon aussi, j'en ai gardé la plus grande partie.

Points faibles de l'original

Il est écrit en PHP3...

Le script originel (2.0) fait un peu inachevé : le message du score est généré mais pas affiché. Il manque deux images de voisinage (7 et 8, rares mais pas impossibles). Il y a une vérification des paramètres mais pas de saisie de ces valeurs. Etc.
Au rayon cosmétique, les noms de variables sont tantôt en anglais (time_stop, RowSize) tantôt en français (perdu, Decouv), avec peu de cohérence dans la casse...
Il y a des champs cachés (hidden) inutiles (persistance de valeurs fixes, pseudo-formulaire de redémarrage).

Une faiblesse du script actuel est qu'il n'exploite pas vraiment les possibilités de PHP. J'aurai pu écrire ce jeu en pur JavaScript, résultant en une interface plus réactive (pas d'échanges avec le serveur, tout en local sur le butineur).
D'autant plus que la configuration du terrain est stockée dans la page HTML, ce qui fait qu'un petit malin peut tricher en regardant le source (au détriment de la vitesse de jeu).

Enfin il n'est pas allé assez loin dans sa copie de l'original. Quand on clique sur une case vide sans voisin (niveau 0), le jeu révèle toutes les cases vides de même niveau aux alentours, ainsi que les cases vides de niveau supérieur immédiatement voisines de cette zone.
Et avec un clic droit sur une case, on la marque comme étant suspecte, facilitant la mémorisation des cases supposées minées et décrémentant le compteur de mines.

Futures versions

Je prévois, dans les prochaines versions :

Historique

2.1 (2004/05/18) J'ai compensé les faiblesses mentionnées ci-dessus, du moins celles n'affectant pas l'aspect du jeu et son fonctionnement originel : affichage du score, ajout des images manquantes, gestion centralisée du titre (version), etc.
J'ai renommé des variables : casse plus cohérente, et tout en anglais, histoire d'avoir un public international...
Plutôt que de multiplier les echo de code HTML, j'ai intégré le code dans la page, utilisant les particularités PHP4 (nom du script, supprimant le besoin d'un fichier de configuration).
J'ai factorisé du code, pris soin des limites des tableaux (PHP4 râlait...), supprimé les champs hidden inutiles, ajouté des commentaires (en anglais, toujours le public international...), etc.
Vous pouvez comparer l'original à ma version, c'est sans doute assez instructif pour les débutants comme moi. J'ai pris soin de conserver au maximum les mêmes fonctionnalités dans ma version 2.1, histoire de faciliter la comparaison PHP3/PHP4.
Les ajouts les plus marquants sont le mode cheat, pour debug, et le choix de la langue (français/anglais).

3.0 (2004/05/24)

Téléchargement

Vous pouvez télécharger la version 2.1 ou tester le programme...


Aller à la page d'accueil. Aller à la page sur PHP. See the English version of this page.

Contactez-moi, commentez cette page

Créée le : 2004/05/17
Mise à jour le : 2004/09/16 (séparation de PHPMine de la page principale sur PHP)