Partage
  • Partager sur Facebook
  • Partager sur Twitter

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

    5 avril 2008 à 1:29:53

    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 :

    1. #include "om/Mazen.h"
    2. 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 :

    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 :
    1. toto.map()[x][y];
    2. cout << toto.map()[0][0] << endl;


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

    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

    • Partager sur Facebook
    • Partager sur Twitter
    Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
      5 avril 2008 à 2:14:48

      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
      • Partager sur Facebook
      • Partager sur Twitter

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

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown