[![LICENSE](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) English | [简体中文](./README.zh-CN.md)

Tower Building Game

> a tower building game based on ES6 and Canvas (Tower Bloxx Deluxe Skyscraper) ## Demo

Link to online Demo (Demo Link)

Mobile Devices can scan following QR code:

## Game Rule The following are the default game rules: - The player starts with 3 hp, indicated by the hearts in the top right corner of the screen. Every time a Tower block falls the player loses 1 hp, and the game ends when hp is depleted. - The player earns 25 points for every succesful stacked block (Success). If a block is stacked pefectly (Perfect) on top of the previous one, then the player is rewarded with 50 points instead. Consecutive Perfects awards additional 25 points. **Note: Each Success or Perfect constitutes a floor** For example, the first Perfect awards 50 points. The second consecutive Perfect awards 75 points. The third consecutive Perfect awards 100 points. etc.

## Customizing the game rules ``` git clone https://github.com/iamkun/tower_game.git cd tower_game npm install npm start ``` Open `http://localhost:8082` in a web browser. - To customize image and sound resource files directly replace the corresponding file under the `assets` directory. - To customize game rules modify the `option` object in `index.html`. ## Option Use the following table of `option` constants to complete customization of game rules. **Note: all constants are optionally included** | Option | Type | Description | |---------|--------|-------------| | width | number | Width of game interface | | height | number | Height of game interface | | canvasId | string | DOM ID in Canvas | | soundOn | boolean | If sound is on | | successScore | number | Points awarded for success | | perfectScore | number | Additional points awarded for perfect | | hookSpeed | function | Speed of hook's movement | | hookAngle | function | Angle of hook | | landBlockSpeed | function | Speed of block sway | | setGameScore | function | hook for current score | | setGameSuccess | function | hook for number of current succesful game | | setGameFailed | function | hook for number of current failed game | #### hookSpeed This function takes in two parameters, currentFloor and currentScore, and returns a speed value. ``` function(currentFloor, currentScore) { return number } ``` #### hookAngle This function takes in two parameters, currentFloor and currentScore, and returns a angle value. ``` function(currentFloor, currentScore) { return number } ``` #### landBlockSpeed This function takes in two parameters, currentFloor and currentScore, and returns a speed value. ``` function(currentFloor, currentScore) { return number } ``` #### setGameScore This function takes in one parameter, score, and sets currentScore to score. ``` function(score) { // your logic } ``` #### setGameSuccess This function takes in one parameter, score, and sets GameSuccess to successCount. ``` function(successCount) { // your logic } ``` #### setGameFailed This function takes in one parameter, score, and sets GameFailed to failedCount. ``` function(failedCount) { // your logic } ``` ## License MIT license.