Git Product home page Git Product logo

labyrinth's Introduction

Join the chat at https://gitter.im/fossasia/labyrinth Build Status Average time to resolve an issue Percentage of issues still open license GitHub repo size in bytes Website

Play Now | Learn How to Play | Documentation

Content Outline

This is a labyrinth software which can be edited by you. This is an example in which direction we go: Vision

Our goal is to have contributors like you draw parts of the labyrinth (Inkscape or hand drawn or other techniques), embed them into a huge labyrinth. Possibly, we can have multiple levels all stuck together.

Motivation

In the past two years, we created Flappy SVG. We had problems coordinating because this is all one SVG file. This time, we can allow contributors to work independently on a level and coordination comes with embedding. This allows remixing of each other's work and thus collaboration in new ways such as:

  • Adding your tile to an existing labyrinth
  • Creating your own labyrinth from other tiles.

It is possible to extend the level in various ways: Keys, asking characters in the game, animation, moving through the game, multiple levels. Also, we can create apps, credit pages and various other things with it.

Implementation

This will be an HTML/JS only site.

Contributions, Bug Reports, Feature Requests

This is an Open Source project. We would be happy to see contributors who report bugs, file feature requests and submit pull requests as well. Please have a look at the Contributing file for ways to contribute.

Issue and Branch Policy

  • Before making a pull request, please file an issue. So, other developers have the chance to give feedback or discuss details.
  • After writing your first commit, please open a pull request.

Match every pull request with an issue please and add the issue number in description e.g. like "Fixes #123".

We have the following branch

  • master
    This contains shipped code. After significant features/bugfixes are accumulated on development, we make a version update, and make a release.

Also read CONTRIBUTING.md

If you like to join developing,

  • you can chat on gitter, mentioning the maintainers.
  • you can find/create issues and solve them.
    • When you solve an issue, you do not own it. Share your progress via a Pull-Requst as soon as possible.
    • Discuss with others who work on the issue about the best solution. It is your responsibility, not the maintainer's to choose the best solution.

How to add new tiles

Labyrinth allows you to add your tiles by customizing the required javascript and svg files. There are various types of svg files which are available such as doors, floors etc.

Currently the tiles are svg images which are embedded into a div via javascript. Floor tiles have a dimension of about 429.544 x 256.314 px (wxh) Tiles are present in the tiles folder within subdirectories corresponding to particular tiles such as door, floor etc.

To create a tile you may use an svg editor such as inkscape. However other photo editors and formats do work if they are imported into the editor and saved as a svg file with the specified dimensions.

Note: if you are copying the template of a tile(floor) from an existing tile, then do not edit it as a png but directly as a svg. This is so that errors in alignment do not exist and the tile(floor) is perfectly aligned.

After creating tiles add them to the specific sub folder inside tiles.

Now, we will move on to the javascript part. Each tile's attributes and specifications along with it's declaration is done in the js/tiles.js file. You may edit this file defining attributes such as how you could enter and exit out of the tile and so on. You can also specify the door it takes, it's closed exit paths etc. A sample implementation should go into the already defined door class like:

tile_name: Object.assign({}, OpenDoors, {
    canEnterFromTheRight() {return false;}, /* Set these to false to block movements on the right */
    canLeaveToTheRight() {return false;},
    /* Simillarly you can have canLeaveToTheTop(), canEnterFromTheTop() etc. */
    createImages: function() {
      this.wallTop = this.createImage("tiles/rooms/wall/top.svg"); /* Alter these attributes to specify a custom wall tile for the floor tile.  Do not forget to implement the movements with canEnter/LeaveFromTheRight, ... */
      this.wallRight = this.createImage("tiles/rooms/door/right.svg");
      this.ground = this.createImage("tiles/rooms/floor/svg_name.svg"); /*  svg_name is the name of your svg */
    },
  }),

If you want to display an alert box when the character reaches your tile, your implementation must be something like this :

    visit: function() {
        alertNormal("title", "text");
        this.wallTop.show();
        this.wallRight.show();
        this.ground.show();
     },

Replace alertNormal with either alertNormal, alertInfo, alertQuestion, alertSuccess, alertError or alertWarning. For more info, read this.

And replace title and text with whatever title or text you want to display. If you want to only have a title and not any text, keep text empty. Like this : "".


After doing so now let's call the tile from the level so that they are reachable. You may modify `/js/levels.js` (which is currently the only level to include your tile. Something like `door.tile_name` since we have added it (our object) to the door (which is a class). You may use css to animate the svg if you wish.

How to add a new character

Labyrinth allows you to add your characters by customizing the required javascript and svg files.

Currently the characters are svg images which are embedded into a div via javascript. Characters have a dimension of about 55 x 60 px (wxh) Characters are present in the characters folder.

To create a character you may use an svg editor such as inkscape. However other photo editors and formats do work if they are imported into the editor and saved as a svg file with the specified dimensions.

After creating characters add them to the characters folder.

Now, we will move on to the javascript part. Each character has only difference in it's appearance and hence can be injected via putting its name and location to the svg file in gui.js. Follow the format while adding to gui.js (To be precise add it to the swal box input values collection i.e, into the inputOptionsPromise variable under the resolve sub class.)

"character_src": "character_name",

How to add new theme

Adding new theme is basically adding new tiles in a constant object:

const yourThemeName = {
  your tiles go here
},

While adding new theme you have to keep in mind theme structure. You can take a look at already existing themes.

After adding your theme to tiles.js file, you have to declare it in levels.js. Exactly its function, so it's going to create new tiles:

function createXLevel() {
  return new Level("X", [
    [X.none, X.right, X.right, X.right, X.right, X.none],
    [X.none, X.top, X.both, X.both, X.both, X.both],
    [X.none, X.top, PlayerStartsAt(X.start), X.both, X.both, X.top],
    [X.none, X.top, X.both, X.both, X.both, X.top],
    [X.none, X.top, X.top, X.both, X.top, X.top],
    [X.none, X.top, X.both, X.both, X.both, X.top],
    [NullTile, X.none, X.none, X.none, X.none, X.none],
  ]);
}

That's just an example of this function. Note that all these functions in levels.js file are looking very similar. Instead of X sign insert your theme name.

To make the level available to the player, best if you also add a tile which you place in an existing level which you want the player to explore before. This tile then calls player.addReachableLevel(createXLevel()) to make the level available to the player.

visit: function(player) {
    player.addReachableLevel(createXLevel());
    // ...
  },

How to add a new translation

Labyrinth needs your translations for make the game famous world-wide.

  • Go to the js\translate.js and find English text(like following) that you have to translate.
  • Check your language where there is or isn't. If not you can go to your language translation and find new strings not tranlated but in English translation
  'language': 'Select your language',
  'how': 'How to play',
  'credit': 'Credits',
  'game': 'Game',
  'contribute': 'Contributors',
  'statistics': 'Statistics',
  'moved': 'Player Moved :',
  'times': ' Times',
  'audio': 'Audio',
  'now': 'Now Playing : ',
  'by': ' by ',
  'share': ' Share Game ',
  'follow': 'Follow us on',
  'invent': 'Inventory',
  \\like these
  • Copy all the strings in English translate. And paste it after to last translation.
  • Change en to two or three letters related for your language. Those two or three letters must be not used earlier for any translate. Ex:- For Sinhala use si, for Polski use pl
  • Translate all the strings to your language and save it.
  • Add flag that realated to the language in icons(You can find flag from this place https://en.wikipedia.org/wiki/Gallery_of_sovereign_state_flags). The flag must be 255 X 128 pixels and it must be png file.
  • Go to HTML files(index.html, howtoplay.html, credits.html, contributors.html) from your code editor.
  • Then find following code from all the HTML files given and copy and past it after last language.
<div class="hover-black">
  <a class="translate translate-language-choice waves-effect waves-light btn blue-grey darken-2" id="en">
    <img src="icons/UnitedKingdom.png" alt="" class="translation-flag" />
     English
  </a>
</div>
  • Change img src="icons/UnitedKingdom.png" to your flag and change " English" to your language name. (There must be a space before language name.)
  • Now check all the pages from your internet browser and see it works.
  • Done, Push your changes and create a pull-request and have it merged.

How to Animate a Tile

  1. Open the SVG file in Inkscape.
  2. Click on the element you like to animate.
  3. Go to Object > Object Properties or press Control+Shift+o.
  4. Choose an Id for the object e.g. asdf. Please be aware that if you choose to animate a group, you may need to set the id again after you ungroup it.

Now, you described what to animate. Here is what you can do to add an animation:

  1. Close Inkscape
  2. Edit the SVG-File with a Text-Editor
  3. Add the tag <style> to it and close it with </style>.
  4. In between, you can add animations, see this tutorial using your Id, e.g. #asdf {}
  5. When you animated something, you can view it in your browser.

UI identity guideline

Click here to read the full UI guideline

Videos by students

Maintainers

 Nicco Kunzmann

 Mario Behling

 Harsh Lathwal

 Tarun Kumar

 Yash Kumar Verma

 Abishek V Ashok

 Saarthak Chaturvedi

Responsibilities:

  • merge pull requests
  • follow CCCC
  • tag issues and pull requests to close after 3 days and close them after three to 7 days
    • if no updates are there
    • if there are no clear closig criteria
  • merge patches

labyrinth's People

Contributors

0x48piraj avatar abishekvashok avatar amryarios avatar applec4t avatar arjunpandey2003 avatar harsh-jindal avatar himanshuc3 avatar kubami9 avatar maddymmt avatar mikolajhojda avatar mishaalkandapath avatar myfrom avatar navirocker avatar niccokunzmann avatar nishithp2004 avatar nzec avatar ploypiti avatar prp-11 avatar pythongiant avatar rukobe avatar saarthakchats avatar sahilsaha7773 avatar samyakbvs avatar shizerq avatar sirquackyy avatar supunte avatar thatdns avatar xeon-zolt avatar yashk0thari avatar yashkumarverma avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

labyrinth's Issues

Make added tiles appear in the game

Expected results

All of the added tiles appear in the actual game interface.

image

Actual results

Not all added tiles appear when moving to a new level.

image

Would you like to work on this

Yep

Make tile door.drawn a ground tile

Expected results

When I walk throughthe labyrinth: 3xdown 2xright,
I would like to walk on the drawn floor.

Actual results

There is a rectangle which is not a floor.

How to solve

Please make this floor tile a tile which is like the other floor tiles.

Idea: In Inkscape you can do the following to the https://github.com/fossasia/labyrinth/blob/master/tiles/rooms/floor/drawn.svg tile

  1. rotate the tile by 45 degrees
  2. make the height of the tile smaller so it fits like the other floor tiles.

Created as a result from #75

Inventory for Player

Expected results

  • Ability to collect items in the game and use them

Actual results

  • Completely isolated player

Steps to reproduce the issue

  • Adding inventory mechanism to game

Would you like to work on this

  • YES

after approval

Automatically Test Game

Sometimes, the game does not load e.g. in #42.
It would be good to have a server e.g. travis-ci.org to test the game for

  • correctness of syntax
  • loading without errors
  • code styling
  • enable travis ci

This way, every new commit will be tested and we can find the error before we deploy the game.

Add new floor

Expected results

New floor added

Actual results

Only 4 right now

Steps to reproduce the issue

Make use of inkscape

Would you like to work on this

More people can contribute

Create icon for labyrinth

As of now, the labyrinth has the default icon for rawgit.com as its logo.
We have to design a logo for the labyrinth which represents it as a whole

We'd like some ideas and recommendations on how you'd like the logo to look, and how you will represent this project.

Fix code lint erros to increase code quality

Increase code quality by fixing the following lint errors:

  • >index.html
    | 1| <!doctype·html>
    | | [MAJOR] HTMLLintBear:
    | | Document Type: Use HTML5: Change "<!doctype html>" to "<!DOCTYPE html>".

  • >i| 2| ····<script··src="js/tiles.js"·type="text/javascript"></script>
    | | [MAJOR] HTMLLintBear:
    | | Extra whitespace: Use whitespaces only where expected and be consistent: Remove the extra whitespaces.

  • >i| 3| ····<script··src="js/levels.js"·type="text/javascript"></script>
    | | [MAJOR] HTMLLintBear:
    | | type Attributes: The default type for script tags is "text/javascript" so it can be safely omitted: Remove the type attribute from the script tag.

  • >iindex.html
    | 4| ····<script··src="js/player.js"·type="text/javascript"></script>
    | | [MAJOR] HTMLLintBear:
    | | Extra whitespace: Use whitespaces only where expected and be consistent: Remove the extra whitespaces.

  • >iindex.html
    | 7| ····<script··src="js/player.js"·type="text/javascript"></script>
    | | [MAJOR] HTMLLintBear:
    | | type Attributes: The default type for script tags is "text/javascript" so it can be safely omitted: Remove the type attribute from the script tag.

  • >iindex.html
    | 8| ····<script··src="js/gui.js"·type="text/javascript"></script>
    | | [MAJOR] HTMLLintBear:
    | | Extra whitespace: Use whitespaces only where expected and be consistent: Remove the extra whitespaces.

  • >iindex.html
    | 8| ····<script··src="js/gui.js"·type="text/javascript"></script>
    | | [MAJOR] HTMLLintBear:
    | | type Attributes: The default type for script tags is "text/javascript" so it can be safely omitted: Remove the type attribute from the script tag.

  • >iindex.html
    | 9| ····<script··src="js/level.js"·type="text/javascript"></script>
    | | [MAJOR] HTMLLintBear:
    | | type Attributes: The default type for script tags is "text/javascript" so it can be safely omitted: Remove the type attribute from the script tag.

  • >ijs/gui.js
    | 18| ······player.moveLeft()
    | | [NORMAL] JSHintBear:
    | | Missing semicolon.

  • >ijs/gui.js
    | 19| ····};
    | | [NORMAL] JSHintBear:
    | | Unnecessary semicolon.

  • >ijs/gui.js
    | 24| ······player.moveRight()
    | | [NORMAL] JSHintBear:
    | | Missing semicolon.

  • >ijs/gui.js
    | 25| ····};
    | | [NORMAL] JSHintBear:
    | | Unnecessary semicolon.

  • >ijs/gui.js
    | 30| ······player.moveUp()
    | | [NORMAL] JSHintBear:
    | | Missing semicolon.

  • >ijs/gui.js
    | 31| ····};
    | | [NORMAL] JSHintBear:
    | | Unnecessary semicolon.

  • >ijs/gui.js
    | 36| ······player.moveDown()
    | | [NORMAL] JSHintBear:
    | | Missing semicolon.

  • >ijs/gui.js
    | 37| ····};
    | | [NORMAL] JSHintBear:
    | | Unnecessary semicolon.

  • >ijs/gui.js
    | 43| }
    | | [NORMAL] JSHintBear:
    | | Missing semicolon.

  • >ijs/gui.js
    | 9| ··level·=·createTestLevel();
    | | [NORMAL] JSHintBear:
    | | 'createTestLevel' is not defined.

  • >ijs/gui.js
    | 11| ··player·=·newPlayer();
    | | [NORMAL] JSHintBear:
    | | 'newPlayer' is not defined.

  • >ijs/level.js
    | 2| const·tileWidth·=·429.544;·//·px,·real·width
    | | [NORMAL] JSHintBear:
    | | 'const' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).

  • >ijs/level.js
    | 3| const·tileHeight·=·256.314;·//·px
    | | [NORMAL] JSHintBear:
    | | 'const' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).

  • >ijs/level.js
    | 16| ····}
    | | [NORMAL] JSHintBear:
    | | Missing semicolon.

  • >js/level.js
    | 23| ········const·position·=·{"x":·x,·"y":·y};
    | | [NORMAL] JSHintBear:
    | | 'const' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).

  • >js/level.js
    | 24| ········const·pixelPosition·=·me.indexToPosition(position);
    | | [NORMAL] JSHintBear:
    | | 'const' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).

  • >js/level.js
    | 39| ··}
    | | [NORMAL] JSHintBear:
    | | Missing semicolon.

  • >js/level.js
    | 42| ··}
    | | [NORMAL] JSHintBear:
    | | Missing semicolon.

  • >js/level.js
    | 45| ··}
    | | [NORMAL] JSHintBear:
    | | Missing semicolon.

  • >js/level.js
    | 57| ······const·position·=·{"x":·x,·"y":·y};
    | | [NORMAL] JSHintBear:
    | | 'const' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).

  • >js/level.js
    | 61| ··if·(this.startTile·==·null)·{
    | | [NORMAL] JSHintBear:
    | | Expected '===' and instead saw '=='.

  • >js/level.js
    | 36| ······return·NullTile;
    | | [NORMAL] JSHintBear:
    | | 'NullTile' is not defined.

  • >js/level.js
    | 5| function·Level(specification)
    | | [NORMAL] JSHintBear:
    | | 'Level' is defined but never used.

  • >js/player.js
    | 43| ··}
    | | [NORMAL] JSHintBear:
    | | Missing semicolon.

  • >js/player.js
    | 46| ··}
    | | [NORMAL] JSHintBear:
    | | Missing semicolon.

  • >js/player.js
    | 7| ··this.currentTile·=·NullTile;
    | | [NORMAL] JSHintBear:
    | | 'NullTile' is not defined.

  • >js/player.js
    | 2| function·newPlayer()·{
    | | [NORMAL] JSHintBear:
    | | 'newPlayer' is defined but never used.

  • >js/loading.js
    | 6| ····if·(xmlHttp.readyState·==·4)·{
    | | [NORMAL] JSHintBear:
    | | Expected '===' and instead saw '=='.

  • >js/loading.js
    | 7| ······if·(xmlHttp.status·==·200)·{
    | | [NORMAL] JSHintBear:
    | | Expected '===' and instead saw '=='.

  • >js/loading.js
    | 13| ··}
    | | [NORMAL] JSHintBear:
    | | Missing semicolon.

  • >js/loading.js
    | 1| function·httpGetAsync(theUrl,·callback)
    | | [NORMAL] JSHintBear:
    | | 'httpGetAsync' is defined but never used.

  • >js/tiles.js
    | 2| const·NullTile·=·{
    | | [NORMAL] JSHintBear:
    | | 'const' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).

  • >js/tiles.js
    | 3| ··canEnterFromTheTop:·function(player)·{return·false;},
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 4| ··canEnterFromTheBottom:·function(player)·{return·false;},
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 5| ··canEnterFromTheRight:·function(player)·{return·false;},
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 6| ··canEnterFromTheLeft:·function(player)·{return·false;},
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 7| ··playerLeaves:·function(player){},
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 8| ··placeAtIn:·function(){return·this},
    | | [NORMAL] JSHintBear:
    | | Missing semicolon.

  • >js/tiles.js
    | 15| }
    | | [NORMAL] JSHintBear:
    | | Missing semicolon.

  • >js/tiles.js
    | 24| ··}
    | | [NORMAL] JSHintBear:
    | | Missing semicolon.

  • >js/tiles.js
    | 35| };
    | | [NORMAL] JSHintBear:
    | | Unnecessary semicolon.

  • >js/tiles.js
    | 56| ImageCollection.prototype.playerEnters·=·function(player)·{
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 59| ImageCollection.prototype.playerLeaves·=·function(player)·{
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 72| };
    | | [NORMAL] JSHintBear:
    | | Unnecessary semicolon.

  • >js/tiles.js
    | 102| const·OpenDoors·=·{
    | | [NORMAL] JSHintBear:
    | | 'const' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).

  • >js/tiles.js
    | 104| ··canEnterFromTheTop:·function(player)·{return·true;},
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 105| ··canEnterFromTheBottom:·function(player)·{return·true;},
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 106| ··canEnterFromTheRight:·function(player)·{return·true;},
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 107| ··canEnterFromTheLeft:·function(player)·{return·true;},
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 108| ··canLeaveToTheTop:·function(player)·{return·true;},
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 109| ··canLeaveToTheBottom:·function(player)·{return·true;},
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 110| ··canLeaveToTheRight:·function(player)·{return·true;},
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js

| 111| ··canLeaveToTheLeft:·function(player)·{return·true;},
| | [NORMAL] JSHintBear:
| | 'player' is defined but never used.

  • >js/tiles.js

| 112| ··viewFromTheTop:·function(player)·{
| | [NORMAL] JSHintBear:
| | 'player' is defined but never used.

  • >js/tiles.js
    | 115| ··viewFromTheLeft:·function(player)·{
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 117| ··viewFromTheRight:·function(player)·{
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 120| ··viewFromTheBottom:·function(player)·{
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 122| ··whenPlayerLeaves:·function(player){
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 124| ··whenPlayerEnters:·function(player){
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 147| const·door·=·{
    | | [NORMAL] JSHintBear:
    | | 'const' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).

  • >js/tiles.js
    | 150| ····canEnterFromTheTop:·function(player)·{return·false;},
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 151| ····canLeaveToTheTop:·function(player)·{return·false;},
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 159| ····canEnterFromTheRight()·{return·false;},
    | | [NORMAL] JSHintBear:
    | | 'concise methods' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).

  • >js/tiles.js
    | 160| ····canLeaveToTheRight()·{return·false;},
    | | [NORMAL] JSHintBear:
    | | 'concise methods' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).

  • >js/tiles.js
    | 168| ····canEnterFromTheRight()·{return·false;},
    | | [NORMAL] JSHintBear:
    | | 'concise methods' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).

  • >js/tiles.js
    | 169| ····canLeaveToTheRight()·{return·false;},
    | | [NORMAL] JSHintBear:
    | | 'concise methods' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz).

  • >js/tiles.js
    | 170| ····canEnterFromTheTop:·function(player)·{return·false;},
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 171| ····canLeaveToTheTop:·function(player)·{return·false;},
    | | [NORMAL] JSHintBear:
    | | 'player' is defined but never used.

  • >js/tiles.js
    | 178| }
    | | [NORMAL] JSHintBear:
    | | Missing semicolon.

  • >js/tiles.js
    | 2| const·NullTile·=·{
    | | [NORMAL] JSHintBear:
    | | 'NullTile' is defined but never used.

  • >js/tiles.js
    | 17| function·PlayerStartsAt(tileSpecification)·{
    | | [NORMAL] JSHintBear:
    | | 'PlayerStartsAt' is defined but never used.

  • >js/tiles.js
    | 147| const·door·=·{
    | | [NORMAL] JSHintBear:
    | | 'door' is defined but never used.

  • >js/levels.js
    | 3| ··return·new·Level([
    | | [NORMAL] JSHintBear:
    | | 'Level' is not defined.

  • >js/levels.js
    | 4| ····[door.none,·door.right,·door.right,·door.right,·door.right,·door.none],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 4| ····[door.none,·door.right,·door.right,·door.right,·door.right,·door.none],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 4| ····[door.none,·door.right,·door.right,·door.right,·door.right,·door.none],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 4| ····[door.none,·door.right,·door.right,·door.right,·door.right,·door.none],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 4| ····[door.none,·door.right,·door.right,·door.right,·door.right,·door.none],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 5| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 5| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 5| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 5| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 5| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 5| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 6| ····[door.none,·door.top,·PlayerStartsAt(door.both),·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 6| ····[door.none,·door.top,·PlayerStartsAt(door.both),·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 6| ····[door.none,·door.top,·PlayerStartsAt(door.both),·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 6| ····[door.none,·door.top,·PlayerStartsAt(door.both),·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 6| ····[door.none,·door.top,·PlayerStartsAt(door.both),·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 6| ····[door.none,·door.top,·PlayerStartsAt(door.both),·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 7| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 7| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 7| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 7| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 7| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 7| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 8| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 8| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 8| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 8| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 8| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 8| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 9| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 9| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 9| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 9| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 9| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 9| ····[door.none,·door.top,·door.both,·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 10| ····[NullTile,·door.none,·door.none,·door.none,·door.none,·door.none],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 10| ····[NullTile,·door.none,·door.none,·door.none,·door.none,·door.none],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 10| ····[NullTile,·door.none,·door.none,·door.none,·door.none,·door.none],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 10| ····[NullTile,·door.none,·door.none,·door.none,·door.none,·door.none],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 10| ····[NullTile,·door.none,·door.none,·door.none,·door.none,·door.none],
    | | [NORMAL] JSHintBear:
    | | 'door' is not defined.

  • >js/levels.js
    | 6| ····[door.none,·door.top,·PlayerStartsAt(door.both),·door.both,·door.both,·door.top],
    | | [NORMAL] JSHintBear:
    | | 'PlayerStartsAt' is not defined.

  • >js/levels.js
    | 10| ····[NullTile,·door.none,·door.none,·door.none,·door.none,·door.none],
    | | [NORMAL] JSHintBear:
    | | 'NullTile' is not defined.

  • >js/levels.js
    | 1| function·createTestLevel()
    | | [NORMAL] JSHintBear:
    | | 'createTestLevel' is defined but never used.

(Note: A contributor is asked to fix only a about 7-10 lint errors and leave the rest for the other contributors as outlined in the GCI task)

Correct the wall

Expected results

When you look at the walls of the labyrinth, you see that the right wall overlaps over the left wall.
This is not intended. Please move the left border of the right wall to be at the same location as the left wall.

Actual results

Here you can see the overlapping of the walls as it is not possible in real life.
http://rawgit.com/fossasia/labyrinth/master/index.html

Would you like to work on this

This is an issue for people contributing for the first time.
You can use Inkscape to edit the wall. The black pointer (F2) can be used to move points of edges.
We are here to help. If you like to work on this, please comment. We like to help you, so talk to us in the chat.

Hint: It seems like this is fixed for the walls without doors but not for the walls with doors

Add tile

Expected results

A tile was added

Would you like to work on this

Everyone can add tiles

Text

caro.svg is a blank tile and doesn't have any text
Working on it

Player Moves Counter

Expected results

-Counter for player moves

Actual results

  • Moves are not counted

Steps to reproduce the issue

  • A count feature

Would you like to work on this

Yes

Title

No title is added in the read me

Add Automatic Code Quality check

Some code metrics require code to be added, some code metrics want to remove the same code. Source.
Please add a code metric which runs automatically to this repository.

You can help by describing which one to use and how to add it.

Readme.md

How to add files is written two times

Show inventory content

Expected results

I would like to know what the player has in the inventory #108 .

Actual results

I can not see this on the GUI.

Implementation ideas:

  • add a new item class which takes a name: a class will allow us to extend it in the future to add item abilities like combinations etc.
  • There is a inventory folder with pictures to use for the items. the item loads the picture from that folder.
  • when the item is added to the inventory, it is shown, when the item is removed from the inventory, it is removed from the display
  • a player can not put the identical item twice into the inventory
  • please use the treasure box and key tile to test this functionality

Build UI

Expected results

An interface with systematic buttons and content

Actual results

image

Steps to reproduce the issue

  • Add buttons and other required items to make the game look systematic

Would you like to work on this

Yes

Document how to play the game

You need the arrow keys, up down right left to move in the labyrinth.
But no-one knows!
Please add it somewhere

  • When the game starts (most important)
  • In the README

Where to reduce technical debt

Goal tile does not show walls

When I press up up right right, I get to the goal.
The goal tile creates a message that I reached the goal

What I would like to see, too is:

  1. The walls of the tile activated when I see them
  2. The ground which I stand on

Create an HTML page for the how-to-play tutorial (HTML/CSS)

Expected results

On the web page, I would like to see some help button or link which leads to a page which shows me how to play the game.

Actual results

Currently, we have this page: https://github.com/fossasia/labyrinth/blob/master/HOW-TO-PLAY.md
This is written in markdown.

Would you like to work on this

You can convert the page to an HTML page and link to it from the index.html file.

This is an issue for people contributing for the first time.
We are here to help. If you like to work on this, please comment. We like to help you, so talk to us in the chat.

Tasks not listed on GCI Site

Expected results

The tasks listed here on Repo should be on GCI site as well.

Actual results

The tasks are not listed on GCI site

Steps to reproduce the issue

Mentors must add them 😋

Would you like to work on this

Can't. 😂

No Documentation regarding Contributing

It would be great if you could find Documentation regarding Contributing to the Repository. So that a Contributor who is willing to contribute, can get a clear idea of Contributing to the Project.

Allow choosing game characters

Expected results

Before the game starts, we want to choose different characters to play with.
This is useful for the GCI task.

Actual results

Currently, we do not have any characters we can choose.

Hints to solve

  • create a character
  • add the character to a folder
  • link that folder in the task
  • add a javascript file which loads characters from a list of characters
  • show the character on the tile it walks on

There is no need to do all of this at once.
Once we completed that, we can open up the GCI task for new contributors to the labyrinth.

Add tiles.

I try to add more floors. And also walls and doors.

Add style checker

Adding a style checker to check code To keep the game easy to contribute in the future improving the code quality will be great, enabling a PR style checker like coala in Travis CI would be great.
Can we have something like that?

Add a goal tile

Please add a tile which is different from the other tiles.
This tile is the goal tile.

  1. Add a tile to the rooms as tiles/rooms/floor/goal.svg derived from tiles/rooms/floor/caro.svg which is recognizable as a goal
  2. In the tiles.js file, the implementation should look something like this, if you can enter the room from all sides:
    goal: Object.assign({}, OpenDoors, {
     createImages: function() {
       this.wallTop = this.createImage("tiles/rooms/wall/top.svg");
       this.wallRight = this.createImage("tiles/rooms/door/right.svg");
       this.ground = this.createImage("tiles/rooms/floor/goal.svg");
     },
     visit: function() {
       // add a alert here that the person reached the goal
     }
    }
    
  3. In the levels folder, please add the goal tile.

If you have questions, please ask below. #19 Could be a second issue that would be solvable by describing the things you do here.

Fix Indentation and clean up code.

Expected results

Indented files

Actual results

Some files not indented properly

Steps to reproduce the issue

Update files

Would you like to work on this

I am working to indent the HTMl files someone can go ahead and indent other thanks!

Dimensions

batcave.svg is not in the correct dimensions
I am working on it

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.