https://github.com/sensorario/dungeon
https://github.com/sensorario/dungeon
Last synced: 11 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/sensorario/dungeon
- Owner: sensorario
- License: mit
- Created: 2014-03-13T07:47:11.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2016-02-26T17:08:10.000Z (over 10 years ago)
- Last Synced: 2025-03-13T02:31:53.697Z (over 1 year ago)
- Language: PHP
- Size: 462 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
Awesome Lists containing this project
README
# sensorario/dungeon
Questa è una libreria php per la creazione di dungeon a base esagonale.
## Classes
Sensorario\Dungeon\Map - una mappa che si può estendere senza limiti
Sensorario\Dungeon\LittleMap - una piccola mappa di 19 tiles
Sensorario\Dungeon\World - gestisce la crescita di una mappa
## LittleMap
/ \ / \ / \
| | | |
/ \ / \ / \ / \
| | | | |
/ \ / \ / \ / \ / \
| | | | | |
\ / \ / \ / \ / \ /
| | | | |
\ / \ / \ / \ /
| | | |
\ / \ / \ /
## Utilizzo
Per creare una cella, basta istanziare la classe Tile indicando le coordinate di partenza.
$tile = new Tile(0, 0); // 0, 0
Ci si può spostare di tile in tile usando le sei direzioni disponibili:
Directions::DOWN_RIGHT
Directions::DOWN_LEFT
Directions::LEFT
Directions::LEFT_UP
Directions::RIGHT_UP
Directions::RIGHT
La libreria fornisce una classe che genera automaticamente un piccolo dungeon. Verranno generate tile fino ad una distanza di due tile dalla centrale.
$map = new LittleMap();
C'è anche una classe Map che istanziata funziona esattamente come LittleMap(). La differenza è che alla Map possono essere aggiunte Tile a piacimento. Inoltre, è anche possibile far crescere la mappa partendo da una delle celle di confine. Attorno a questa cella, fino a due tile di distanza, verranno generate le nuote tile.
$center = new Tile(0, 0);
$map = new Map($center, 2);
$map->addTile(new Tile(2, 1), 1);
La classe forse più importante è la classe World.
$world = new World('dungeon');
$world->growAroundTile($world->getEdgeTile());
Questa classe fornisce un metodo World::growAroundTile(Tile $tile); che fa crescere la mappa in maniera casuale. Un altro metodo importante, è World::getEdgeTile() che restituisce una Tile casuale, tra quelle presenti nei confini della mappa generata sino a questo momento.