Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C++ > Mazen, générateur de donjons et/ou labyrinthes > Lecture du sujet

Mazen, générateur de donjons et/ou labyrinthes

Vous devez être inscrit pour pouvoir poster des messages

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne shadosan # Posté le 05/04/2008 à 01:29:53
Avatar
Groupe : Membres
Bonjour,

J'ai créé un générateur de labyrinthes et/ou de donjons, nommé Mazen, et j'ai décidé de vous le présenter :D Il est sous licence GPL v3, donc amusez-vous à regarder / modifier le code :)

Je me suis grandement basé sur cette page-ci. Un grand merci à Jamis Buck !

Mazen est avant tout fait pour les développeurs désireux d'avoir dans leur(s) jeu(x) des donjons ou des labyrinthes aléatoire paramétrable à souhait; d'ailleur, je vais expliquer les paramètres envoyable à Mazen, en ordre :

Width : C'est la grandeur de l'instance, en cases.

Height : C'est l'hauteur de l'instance, en cases.

Randomness : C'est l'aléatoirisation, ce qui affecte qu'il y ai des tournant imprédictable ou non dans les corridors. Il est représenté en pourcentage (0 à 100).

Sparseness
: C'est le niveau de clairsemence; pour chaque niveau, les cul-de-sacs sont réduit de une case.

DeadendRemoval : C'est l'enlèvement de cul-de-sacs. Celon le pourcentage donné, chaque cul-de-sacs trouvé sera continué jusqu'à ce qu'il trouve un corridor.

RoomCount : C'est le nombre de pièces à placer.

RoomWmin : C'est la grandeur minimal qu'une pièce peux avoir.

RoomWmax : C'est la grandeur maximal qu'une pièce peux avoir.

RoomHmin : C'est la hauteur minimal qu'une pièce peux avoir.

RoomHmax : C'est la hauteur maximal qu'une pièce peux avoir.

doorEachSide : C'est le nombre de portes qu'une pièce peux avoir de chaque côté, au maximum.

Seul la grandeur et la hauteur est obligatoire; les autres sont facultatif.

L'initialisation se fait comme ceci :

Code : C++ - Afficher / masquer les numéros de ligne
  1. #include "om/Mazen.h"
  2.  
  3. om::Mazen toto(30,25);


pour une instance de 30 de grandeur et 25 de hauteur. Notez qu'il fait partie du namespace om.

Bon, c'est bien beau être capable de le créer, il faut aussi savoir l'utiliser ^^

C'est assez simple; en fait, à partir de :

Code : C++ - Afficher / masquer les numéros de ligne
  1. toto.map();


on obtient une référence vers un tableau 2D contenant des std::string de 6 caractères exactement, chacun. Pour obtenir une case on fait :
Code : C++ - Afficher / masquer les numéros de ligne
  1. toto.map()[x][y];
  2.  
  3. cout << toto.map()[0][0] << endl;


Pour savoir ce que contient chaque caractères de la case, on fait ceci :

Code : C++ - Afficher / masquer les numéros de ligne
  1. toto.map()[0][0][MAZEN_NORTH];


MAZEN_NORTH fait partie d'un enum, qui contient :

MAZEN_NORTH : Représente le mur nord. n = vide(généralement, la case au complet est vide, dans ce cas), 0 = ouvert, 1 = fermé, 2 = fermé et mur de pièce, 4 = fermé et une porte menant d'un corridor à une pièce, 5 = fermé et porte allant d'une pièce à une autre.


MAZEN_SOUTH : Représente le mur sud. Idem.


MAZEN_WEST : Représente le mur ouest. Idem.


MAZEN_EAST : Représente le mur est. Idem.


MAZEN_FLOOR : Représente le plancher. n = vide(généralement, la case au complet est vide, dans ce cas), 0 = ouvert, 1 = fermé, 2 = fermé et plancher de pièce.

MAZEN_CEILING : Représente le plafond. n = vide(généralement, la case au complet est vide, dans ce cas), 0 = ouvert, 1 = fermé, 2 = fermé et plafond de pièce.

Pour un exemple concret d'utilisation, regardez la classe MazenGUI, qui prend les informations de l'instance et les affichent.

Il y a bien sûr quelques autres méthodes utiles à voir, comme randomRoom(), qui retourne un om::Rect d'une pièce prit au hazard, etc. Je vous invite à regarder le fichier Mazen.h, qui contient en résumé toute les méthodes accessibles ^^

oh et avec le binaire est inclus un fichier config_mazen.ini, pour ne pas avoir à recompiler pour chaque paramètre modifié.

Durant l'exécution du binaire, il y a quelques touches possibles :

échap : quitter.
espace : regénérer.

Pour le télécharger, voyez la page de téléchargement ! (le binaire est windows seulement; les sources sont bien sûr compatible pour d'autre Systèmes ;) )

Images tiré de MazenGUI :

Image utilisateur

Image utilisateur

Édité le 05/04/2008 à 02:26:55 par shadosan
 
Hors ligne Gaia # Posté le 05/04/2008 à 02:14:48
Avatar
Groupe : Membres
tres interesent pour les developeur ou projet de rpg ;)

comme moi :p
je n'est jamais d'idée de se que je ferais par la suit, pourla consecption des plans de futur donjon cela me seras tres pratique :D

Image utilisateur
 

Retour au forum "Langage C++" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 150 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0722s (0.055s)