Giter Club home page Giter Club logo

dungeon's Introduction

Dungeon

Installation

As a Script

Grab the minified js file & optional source map (or the unminified js file & optional source map).

<script src="dungeon.min.js"></script>

Or use the jsdelivr CDN:

<script src="//cdn.jsdelivr.net/npm/@mikewesthad/[email protected]"></script>

This will give you a Dungeon global variable.

As a Module

npm i @mikewesthad/dungeon
import Dungeon from "@mikewesthad/dungeon";

Usage

See the examples folder for a JavaScript example and a TypeScript example.

const dungeon = new Dungeon({
  width: 50,
  height: 50,
  doorPadding: 1, // Experimental, minimum number of tiles between a door and a room corner (>= 1)
  randomSeed: "hello", // Leave undefined if you don't want to control the seed
  rooms: {
    width: {
      min: 5,
      max: 10,
      onlyOdd: true // Or onlyEven: true
    },
    height: {
      min: 8,
      max: 20,
      onlyOdd: true // Or onlyEven: true
    },
    maxArea: 150,
    maxRooms: 50
  }
});

// Make sure you resize your console (see guide that gets printed out in the console)
dungeon.drawToConsole({
  empty: " ",
  emptyColor: "rgb(0, 0, 0)",
  wall: "#",
  wallColor: "rgb(255, 0, 0)",
  floor: "0",
  floorColor: "rgb(210, 210, 210)",
  door: "x",
  doorColor: "rgb(0, 0, 255)",
  fontSize: "8px"
});

// Helper method for debugging by dumping the map into an HTML fragment (<pre><table>)
const html = dungeon.drawToHtml({
  empty: " ",
  emptyAttributes: { class: "dungeon__empty", style: "color: rgb(0, 0, 0)" },
  wall: "#",
  wallAttributes: { class: "dungeon__wall", style: "color: rgb(255, 0, 0)" },
  floor: "0",
  floorAttributes: { class: "dungeon__floor", style: "color: rgb(210, 210, 210)" },
  door: "x",
  doorAttributes: { class: "dungeon__door", style: "color: rgb(0, 0, 255)" },
  containerAttributes: { class: "dungeon", style: "font-size: 15px" }
});
document.body.appendChild(html);

dungeon.rooms; // Array of Room instances
dungeon.tiles; // 2D array of tile IDs - see Tile.js for types

// Get a 2D array of tiles where each tile type is remapped to a custom value. Useful if you are
// using this in a tilemap, or if you want to map the tiles to something else, e.g. this is used
// internally to convert a dungeon to an HTML string.
var mappedTiles = dungeon.getMappedTiles({
  empty: 0,
  floor: 1,
  door: 2,
  wall: 3
});

Docs

See the web docs for the API here. The most useful page is the Dungeon class

Changelog

  • 2.0.0
    • Rewrite in Typescript. API changes requiring more of the DungeonConfig to be specified in the constructor.

Contributors

  • @mktcode - fix filename case.
  • @gobah - PR for getting the library working on node.
  • And, of course, @nickgravelyn who wrote the library that this fork is based on.

dungeon's People

Contributors

mikewesthad avatar mktcode avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.