Après la réussite du premier concours "
Sudoku", nous sommes heureux de lancer ce nouveau concours de programmation ayant pour thème :
la génération de labyrinthes.
Quelques différences importantes sont à noter par rapport au premier concours :
- Celui-ci est ouvert à tous les langages de programmation. Vous n'êtes pas limité au C++, vous pouvez aussi bien utiliser le C, le Java, Ruby, Python, OCaml. L'utilisation de langages web est aussi possible : Javascript, PHP avec GD, etc. Choisissez le langage dans lequel vous êtes le plus à l'aise.
- Ce concours ne sera pas noté. Il n'y aura pas de classement. Nous devons faire un certain nombre d'améliorations au module de concours avant de pouvoir activer les notes à nouveau. Vous participerez donc pour le plaisir (comme pour la première fois
) et profiterez des conseils d'autres Zéros plus expérimentés que vous. Ne soyez donc pas étonnés par l'absence de critères de notation.
- Chaque participation donne lieu automatiquement à la création d'un sujet sur les forums. Mettez à jour régulièrement la description de votre oeuvre pour tenir au courant les autres de votre avancement. Utilisez votre sujet pour échanger à propos de votre travail, poser des questions et réclamer de l'aide au besoin.
Ce concours durera 2 mois, jusqu'au 31 janvier 2009.
N'oubliez pas : l'essentiel lors de ces concours est avant tout de
s'amuser et d'
acquérir de l'expérience.
Les labyrinthes
Les labyrinthes ne sont pas une invention récente de l'Homme. On peut en retrouver remontant à la préhistoire, gravés sur des morceaux d'ivoire de mammouth.
Plus tard, c'est le célèbre labyrinthe du Minautore, construit sur l'île de Crète au sud de la Grèce, qui fait encore aujourd'hui parler de lui.
Désormais, les labyrinthes sont un passe-temps que l'on retrouve notamment dans de nombreux magazines de jeux pour enfants.
Le principe du labyrinthe est qu'il comporte une seule entrée et une seule sortie. Il faut arriver à joindre les deux :
Quel rapport avec la programmation ?
Il se trouve que générer des labyrinthes aléatoirement est un petit challenge en soi. Vous allez donc programmer un
générateur de labyrinthes qui devraient ressembler à celui ci-dessus.
Les objectifs du concours
Ce concours propose un large éventail d'objectifs. Ne cherchez pas à tous les atteindre, ce n'est pas obligatoire. Commencez par les objectifs les plus simples et, si vous avez du temps, concentrez-vous ensuite sur des objectifs plus difficiles.
Les développeurs plus expérimentés auront, eux, suffisamment d'objectifs pour avoir de quoi travailler.
Pour apprendre les techniques de génération de labyrinthes, une petite recherche sur internet devrait vous donner des réponses intéressantes rapidement. Voici déjà 2 articles sélectionnés pour vous :
Voici une liste des objectifs que vous devrez chercher à remplir. Si vous ne les remplissez pas dans l'ordre ça ne pose pas de problème. Si vous ne les remplissez pas tous, pas de souci non plus. Il devrait y avoir assez de matière pour que tout le monde ait de quoi réfléchir :

- Construisez un générateur de "labyrinthes imparfaits" (voir les articles ci-dessus). Ces labyrinthes proposent plusieurs chemins permettant d'accéder à la sortie, mais il faut qu'il existe au moins un chemin valide (sinon ne peut pas aller à la sortie !).
- Construisez un générateur de "labyrinthes parfaits". Il doit y avoir un et un seul chemin valide permettant d'accéder à la sortie.
- Réalisez un éditeur de labyrinthes permettant de charger et d'enregistrer des labyrinthes.
- Plutôt que de simplement afficher le labyrinthe généré, il serait bien ensuite que vous permettiez au joueur de se déplacer dans le labyrinthe.
- Essayez de montrer comment l'algorithme a généré pas à pas le labyrinthe.
- Vous pouvez corser le jeu et rajouter dans le labyrinthe des téléporteurs fonctionnant 2 à 2 pour compliquer un peu le tout.

- Si les labyrinthes carrés sont trop faciles pour vous, essayez de passer à la génération de labyrinthes circulaires :
- Enfin, vous pouvez générer le labyrinthe sur 3 dimensions et intégrer la notion d'étages (de hauteur). Il faudra que le joueur puisse se déplacer dedans tel Icare à la recherche de la sortie du labyrinthe du Minotaure.

La légende raconte qu'il fait partie des 3 personnes qui ont réussi à en sortir !
Vous n'êtes pas limités à ces objectifs. Si vous avez des idées originales, n'hésitez pas à les essayer ! Concentrez-vous néanmoins d'abord sur les premiers objectifs pour ne pas vous éparpiller.
Quelques instructions concernant l'organisation
Vous pouvez travailler
seul ou par groupes de 2 ou 3. Nous vous recommandons de préférence d'éviter de faire des groupes de 3 personnes, sauf si vous vous lancez dans les sujets les plus ambitieux (labyrinthes circulaires et labyrinthes 3D) et que vous êtes sûr de pouvoir gérer une telle organisation.
Parce que c'est un "concours", il est limité dans le temps. Essayez d'envoyer avant la fin du concours le
code source zippé (.zip pour que tout le monde puisse ouvrir).
A la racine, créez un fichier
README.txt qui contiendra des instructions (en français et / ou anglais) pour expliquer dans le détail comment compiler. C'est important car chaque langage a sa méthode de compilation ou d'exécution, essayez donc de rediriger les gens vers les bons outils pour qu'ils puissent tester votre programme.
Dans la description de votre oeuvre, vous pouvez faire un
lien vers des fichiers binaires compilés sous différentes plateformes pour que les visiteurs néophytes en programmation puissent tester votre travail. Avertissez-les néanmoins des risques relatifs aux fichiers binaires (virus, etc).
Dans tous les cas, n'incluez pas de binaires dans les .zip que vous enverrez sur le site.
Le Site du Zéro n'hébergera aucun binaire.
Bon courage à tous !