Partie 2: Création de l'éditeur de niveau

Téléchargements

Code source
Exécutable (Windows 32bits)

Avant de compiler le code vous devrez changer le chemin vers "Tile.png" au début de Map.cpp

Format des maps

Un niveau du jeu est une grille de cases carrées. Evidemment, quand vous jouez au jeu vous pouvez voir que vous bougez case par case.
Mais comment allons-nous représenter un mur ?
Il y a deux façons de voir les murs.
Je ne savais pas quelle représentation était utilisée dans le jeu d'origine. Alors je me suis demandé "Qu'est-ce qu'on voit quand on joue ?"
On voit des murs. On ne sait pas quand on voit un mur si la case derrière est pleine ou vide.
Et comme je pense que l'éditeur de niveaux pourrait être utilisé pour d'autres jeux, j'ai opté pour le format le plus flexible, même s'il est plus coûteux
en quantité de mémoire.

Chaque case contiendra un octet représentant son type, qui nous dira si c'est une case vide, une case avec un trou dans le sol, un téléporteur, etc...
Chaque case contiendra aussi 4 éléments "murs" représentant la face "intérieure" de chaque mur (la face qu'on voit quand on est à l'intérieur de la case).
Evidemment la face extérieur de chaque mur est la face intérieure du mur correspondant de la case d'à coté.
Chacun de ces éléments "mur" contiendra un octet qui nous donnera son type (soit si c'est un mur normal, un mur avec un bouton , un mur avec une alcove, etc...).

La map sera basée sur les murs. Donc, si on veut aller d'une case à une autre on testera les murs entre elles. En fait on testera seulement le mur intérieur de la
case de départ.

L'éditeur


Voila la première version de l'éditeur de niveau.
Sur la gauche, il y a évidemment la map. Si vous redimensionnez la fenêtre, vous verrez que cette zone sétirera pour remplir l'espace disponible.
Comme vous le voyez sur l'image, si cette zone est trop petite pour contenir la map, une barre de défilement apparaitra pour nous permettre de nous déplacer dans la map.
De cette façon, on peut travailler sur des map de n'importe quelle taille.

Sur la droite, il y a la zone des outils. Pour le moment il y a seulement des onglets qui nous permettront de travailler à différents niveaux sur la map.
Il y aura probablement d'autres onglets à l'avenir, par ex. pour les monstres...

Utilisons-le

Cliquez sur l'onglet "Cases" et déplacez la souris sur la map. Vous verrez un carré vert qui montre la case où est la souris.
Appuyez sur le bouton gauche et la case se changera en une belle texture de pierre dessinée à la main.
Appuyez sur le bouton droit et la case redeviendra noire.

Note: Si vous avez compilé vous-même les sources et que vous ne voyez rien changer quand vous cliquez, vérifiez le chemin de "Tile.png" dans Map.cpp

Maintenant, dessinez quelques cases comme ça, et cliquez sur l'onglet "Murs".
Si vous déplacez votre souris sur la map, vous verrez que le carré vert est maintenant un rectangle qui représente les murs.
Vous ne pouvez pas encore dessiner de murs pour le moment.

Si vous cliquez qur l'onglet "Objets", vous verrez que le carré vert est plus petit. Parce que dans le jeu d'origine il y a 4 positions possibles pour placer un objet
dans une case.

Le code

Voila une description des différents fichiers: