Yi Zhang yz2414 (Project manager) Shuaishuai Nie sn2479 (Language Guru) Xuanchen Tang xt2128 (System Architect) Lewis Flanagan lrf2123 (System Integrator) Xiaohu Li xl2302 (Test &
Jan 12, 2016
Yi Zhang yz2414 (Project manager)Shuaishuai Nie sn2479 (Language Guru)Xuanchen Tang xt2128 (System Architect)Lewis Flanagan lrf2123 (System Integrator)Xiaohu Li xl2302 (Test & Validation)
Played with dice, notes detailing various characters, monsters, and villains, and maps.
One player, usually called the Dungeon Master or Game Master, controls all the monsters, non-player characters, the environment, etc. The other players each control a single “hero” character.
Usually the Dungeon Master is responsible for coming up with the storyline, challenges and maps the group uses.
Producing these materials can be commitment of several hours a week.
DMGL is intended to reduce the time required to create maps for these games.
Date Event
Jan 25th First meeting, discussing ideas
Feb 23rd Language design and basic elements
Mar 8th Grammar decided, skeleton of scanner implemented
Mar 29th Skeleton of parser working
Apr 4th Initial tests written in advance
Apr 12nd Skeleton of translator working
Apr 26th Backend function working, integration into front end
May 5th Write last examples, finished final report edits, final testing
New Types Introduced in DMGL
•Room
•Door
•Path
•Feature
Introduce loop to facilitate the constructionSample Code:
call init_map (30, 7);call start (1, 3);for (int i = 0; i < 4; i++){
create room anonymous (3,3) to south;
if (i == 3) quit;create path anonymous (2) to south;
}call show_map ();
Include random method and user defined functionSample Code:
call init_map (20,20);create room myroom (3, 3) to west;int firstDirection = call randir ();create path mypath1 (2) to firstDirection;create path mypath2 (1) to firstDirection;direction newDirection = call randir ();while (newDirection == call oppositeDir(firstDirection) ) newDirection = call randir ();
create door d1 () to newDirection;create room r2 (3,3) to newDirection;call show_map ();
function oppositeDir (direction one):direction{return ((one + 2) % 4);}
Functions.java
Room.java
Door.java
Path.java
Test methods: black box Test levels:
• Unit testing• Integrated testing• System testing 111 test cases, over 1000 lines Automated test script
This Slide Left Intentionally Blank [ ]
Include ability to check area to see if it is empty (call scan (x, y))
Add the ability to organize map objects into collections that can be acted on as a whole
Convert DMGL into an interpreted language Add local variables Add ability to include other DMGL source
files in a program, thus allowing user to import libraries of functions
Give DMGL an applet as a GUI and make it available online
Lesson learnt
• Start early
• Regular meeting is essential