OFFICE : Défi n°1 : Créer un jeu de puissance 4

Image non disponible

Description et résultat du défi Office n°1 : Créer un jeu de puissance 4

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Description du défi

Défieur Arkham46
Date de début 14/10/2008
Date de fin 30/11/2008
Sujet Créer un jeu de puissance 4 avec Office.


Conformément aux règles, le défieur (Arkham46) a relevé lui-même le défi avant de vous le soumettre.
Son programme sera dévoilé avec ceux des participants une fois le défi clos.

II. Fonctionnalités attendues

Le programme doit permettre à deux personnes de jouer au puissance 4 sur un même ordinateur.
Il serait apprécié de pouvoir jouer contre l'ordinateur. Un minimum d'intelligence artificielle est un plus.

Le programme doit gérer l'interface de jeu, à minima l'affichage de la grille de jeu et des pions.

Le jeu doit se dérouler selon les règles du puissance 4 ci-dessous.

  • Le jeu se déroule sur un tableau de 7 colonnes et 6 lignes.

  • Chaque joueur joue à tour de rôle avec des pions de sa couleur.

  • Le joueur lâche son pion dans une colonne. Ce pion se place dans la case libre la plus basse.

  • Le premier joueur à aligner 4 pions de sa couleur (horizontalement, verticalement, ou en diagonale) gagne la partie.

  • Si le tableau est rempli (chaque joueur a joué 21 pions) la partie est nulle.


A charge du programme de faire les vérifications nécessaires pour faire respecter ces règles.

III. Les règles de ce défi en questions/réponses

Les règles ci-dessous viennent en complément ou rappel aux règles communes aux défis Office.

III-A. Quel logiciel dois-je utiliser?

Les produits Office les plus courants peuvent être utilisés : Access, Excel, Powerpoint ou Word.
Vous pouvez utiliser un produit Office moins répandu, mais serez alors déclaré hors concours car l'équipe d'animation ne pourra pas évaluer votre programme.

La version d'Office à utiliser n'est pas imposée.
Cependant, pour ne pas se pénaliser, il est préférable de sauvegarder le programme dans une version accessible au plus grand nombre (version 2000 par exemple).

Le développement doit bien sûr être réalisé en VBA.

Vous n'avez pas Office?
Essayez Office gratuitement pendant 60 jours.

III-B. Puis utiliser des composants tiers ou des fichiers externes?

Non, l'interface doit être réalisée avec les composants inclus dans le produit Office standard.

III-C. Puis-je protéger mon programme?

Non, les programmes soumis en réponse au défi ne doivent pas comporter de protection :
1 - Dans un but de partage (developpez.com est un site d'entraide, ne l'oublions pas)
2 - Pour que l'équipe Office puisse évaluer le programme

Le programme ne doit donc pas comporter de mot de passe d'accès.
Pour Access, les fichiers "compilés" (mde, accde) sont exclus.

III-D. Que dois-je faire de mon programme terminé?

Une fois votre programme finalisé, ne le diffusez pas tout de suite sur le forum!

Envoyez le fichier zippé à l'adresse mail :
N'oubliez pas de préciser votre identifiant de connection au site pour qu'on vous reconnaisse.

IV. Suivre le défi sur le forum

V. La solution du défieur

Ce défi a été lancé par Arkham46.
Voici son programme.

V-A. Structure du programme

C'est un classeur Excel.
Le jeu se déroule dans la feuille Jeu qui contient également le code VBA.
ThisWorkbook contient le code pour lancer le jeu à l'ouverture du classeur.

V-A-1. Le module ThisWorkbook

Sur ouverture du classeur, l'événement Workbook_Open initialise la feuille de jeu.

V-A-2. La feuille Jeu

La feuille contient :
- une forme rectangulaire "Relancer le jeu" qui réinitialise la feuille de jeu
- un range Joueur dont la couleur et le texte change en fonction du joueur courant
- une liste déroulante ContreCPU pour choisir un jeu en solo ou contre l'ordinateur
- 7 boutons colonne1 à colonne7 pour choisir la colonne
- un range grille qui détermine la grille de jeu (7 colonnes * 6 lignes)
- 42 images au format png dont le centre est transparent pour voir la couleur de la cellule en dessous

Image non disponible

V-A-3. La feuille Jeu - le code VBA

V-A-3-a. La procédure InitJeu

Cette procédure vide la grille de jeu et initialise les variables.

V-A-3-b. La procédure ChangeJoueur

Cette procédure modifie le joueur courant.
Si on joue contre l'ordinateur, la procédure JeuCPU est exécutée.

V-A-3-c. La procédure Colonne_Click

Cette procédure est exécutée sur click sur un bouton pour lâcher un pion.
Le programme teste s'il reste une place dans la colonne, puis fait tomber le pion sur la dernière case libre.
La couleur de la cellule correspondant à la position du pion est modifiée.
L'API sleep est utilisée pour ralentir la chute du pion.
Ensuite on compte le nombre de pions alignés pour savoir si le joueur a gagné.
Sinon on change de joueur.
Si tous les pions sont joués, le match est nul.

V-A-3-d. La procédure JeuCPU

Cette procédure contient l'intelligence artificielle.
Le programme compte pour chaque colonne le nombre de pions qui seraient alignés si l'ordinateur jouait sur cette colonne.
La priorité est donnée à :
- d'abord si l'ordinateur peut gagner
- ensuite si le joueur peut gagner au tour suivant, il faut le bloquer
- et enfin l'ordinateur joue sur la colonne qui lui permet d'aligner un maximum de pions tout en minimisant les possibilités d'alignement des pions du joueur.

Si plusieurs colonnes ont la même priorité, l'ordinateur joue une de ces colonnes au hasard pour éviter de toujours jouer le plus à gauche.

V-A-3-e. La fonction ComptePionsAlignes

Cette fonction compte le nombre de pions alignés du joueur pJoueur si le joueur courant joue en colonne pCol et ligne pLine.
On compte le nombre de pions alignés horizontalement, verticalement, puis sur les deux diagonales.

On garde ensuite le maximum.

V-A-4. Téléchargement

VI. Les résultats du défi

Tout d'abord merci à tous les participants d'avoir pris le temps de relever ce défi.

L'équipe Office a évalué ces programmes selon 6 critères :
1 - Respect des règles du jeu (l'ordinateur gère-t-il correctement les règles données)
2 - Clarté / Lisibilité du code (Indentation, commentaires, nommage des variables/fonctions, ...)
3 - Qualité du code (performances, modularité, ...)
4 - Graphismes (Pour un jeu, c'est important)
5 - Bon fonctionnement du programme (Si il y des bugs, la note baisse)
6 - Jeu contre l'ordinateur (Est-il géré, l'IA est-elle de bonne qualité)
7 - Points bonus (Divers : points supplémentaires donnés pour des fonctionnalités supplémentaires par exemple)

La note finale est la moyenne des notes de l'ensemble des évaluateurs, ramenée sur 20 points.

Participant Moyenne Classement Application Téléchargement Image
l-mnu 14,1 1
Image non disponible
Access
Image non disponible
Image non disponible
philben 14,1 1
Image non disponible
Access
Image non disponible
Image non disponible
kaseb 12,9 3
Image non disponible
Powerpoint
Image non disponible
Image non disponible
tonioyo 12,6 4
Image non disponible
Access
Image non disponible
Image non disponible
stimp4ck 12,2 5
Image non disponible
Excel
Image non disponible
Image non disponible
loufab 10,9 6
Image non disponible
Powerpoint
Image non disponible
Image non disponible
ouskel'n'or 6,4 7
Image non disponible
Excel
Image non disponible
Image non disponible


l-mnu et philben sont donc les vainqueurs ex-æquo de ce défi!

Bravo à eux, et félicitations également aux autres.

Commentez ces programmes et résultats : 6 commentaires Donner une note à l'article (5) 

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2008 L'équipe OFFICE. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.