diff --git a/1stdraft.html b/1stdraft.html new file mode 100644 index 00000000..95e8717d --- /dev/null +++ b/1stdraft.html @@ -0,0 +1,38 @@ + + + + + + + + + + +
+

Snakes and Ladders

+
+
1 +
+
+
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
+ + + + + diff --git a/README.md b/README.md index 317a3e58..dec9ee97 100644 --- a/README.md +++ b/README.md @@ -1,96 +1,142 @@ -# Project Name (Start editing here) - +# Snake & Ladder -# ![](https://ga-dash.s3.amazonaws.com/production/assets/logo-9f88ae6c9c3871690e33280fcf557f33.png) Project #1: The Game + -### Overview +Game Link: https://matthewfrancisong.github.io/project-1/ -Let's start out with something fun - **a game!** +## Table of Contents -Everyone will get a chance to **be creative**, and work through some really **tough programming challenges** – since you've already gotten your feet wet with Tic Tac Toe, it's up to you to come up with a fun and interesting game to build. +1. How to play +2. Why Snakes & Ladders +3. My 7 days plan +4. Game Documentation +5. References -**You will be working individually for this project**, but we'll be guiding you along the process and helping as you go. Show us what you've got! ---- +## How to Play -### Technical Requirements +Goal: Reach above and beyond square numbered 100 at the top-left hand corner of the board. -Your app must: +Players begin at square number 1. Each player takes a turn to roll a dice and move them along the numbered squares. If a player lands on a square which has the base of a ladder, they will advance to the square that sits on the top of the ladder. -* **Render a game in the browser** -* **Any number of players** will be okay, switch turns will be great -* **Design logic for winning** & **visually display which player won** -* **Include separate HTML / CSS / JavaScript files** -* Stick with **KISS (Keep It Simple Stupid)** and **DRY (Don't Repeat Yourself)** principles -* Use **Javascript** for **DOM manipulation**, jQuery is not compulsory -* **Deploy your game online**, where the rest of the world can access it -* Use **semantic markup** for HTML and CSS (adhere to best practices) -* **No canvas** project will be accepted, only HTML5 + CSS3 + JS please +Similarly, if a player lands on a square which has the head of a snake, it would drop to the tail of the snake. ---- +## Why Snakes & Ladders -### Necessary Deliverables +When I was young, I played a lot. Everything from board games, donkey cards to remote-controlled cars. I thought how wonderful would it be to design the game that I actually played then. It was meaningful. -* A **working game, built by you**, hosted somewhere on the internet -* A **link to your hosted working game** in the URL section of your GitHub repo -* A **git repository hosted on GitHub**, with a link to your hosted game, and frequent commits dating back to the very beginning of the project -* **A ``readme.md`` file** with explanations of the technologies used, the approach taken, installation instructions, unsolved problems, etc. +Some of the animated characters in this game brought me back to happy memories where I remembered slogging thousands of hours. It was all fun. Wonderful memories to recollect and one day share with my family. + + +## 7 days Plan + + +#### 29th Sept +##### Day 1: (Friday) + +1. Flow-chart +2. Pseudo Codes + + + +#### 30th Sept +##### Day 2 & 3 (Weekend) + +1. Create 16 grid MVP (Minimal Viable Game) + + * Logic to switch players + * Win-Game condition. Create 2 markers. if >16, win game + * Reset Function + * Snakes & Ladders Logic + +2. Make game functional + + + +#### 2nd Oct +##### Day 4 (Monday) + +1. Create actual game. (100 Grid) + +Deliverables: +1. Jquery 100 Grid + * Use JQuery to create 100 grids instead of using html. + * Use for-loop to give each individual grid an ID. + * Use modular function to alternate grid background color. + * Reverse rows so that board number flows bottoms-up in a zig-zag fashion. +2. WhoWon() , Reset() , rollDice() Functions. + + +Challenges: + * Refactoring html 16grid into Jquery nested loop function. + * Create a div instead of ' [div.cell, prevObject: r.fn.init(1)] + // console.log($('.cell[data-value = 0]')) + // define current Position + var cellValueP1 = $startPointDiv.data('value') + var cellValueP2 = $startPointDiv.data('value') + + var currentPosition; + // var currentPositionP2; + + // define dice button + var $dice = $('.dice') + + $dice.on('click', rollDice) + + function rollDice () { + var diceResult = 1 + Math.floor(Math.random() * 6) + + if (currentPlayer === player1) { + // cellValueP1 += diceResult + cellValueP1 = 8; + console.log(cellValueP1) + currentPosition = $(`[data-value = ${cellValueP1}]`) + player1.detach().appendTo(currentPosition) + + console.log(currentPosition) + console.log($('[data-value = 8]').data().value) + console.log(cellValueP1 === $('[data-value = 8]').data().value) + // Let's put some snakesssssss + if (currentPosition === ('[data-value = 8]') || currentPosition === ('[data-value = 14]') || currentPosition === ('[data-value = 15]')) { + currentPosition = (`[data-value = 4]`) + console.log(currentPosition) + player1.detach().appendTo(currentPosition) + cellValueP1 = 4 + // Let's put some ladders + } else if ((currentPosition === ('[data-value = 1]') || currentPosition === ('[data-value = 9]'))) { + currentPosition = (`[data-value = 8]`) + player1.detach().appendTo(currentPosition) + console.log(currentPosition) + cellValueP1 = 8 + } + + currentPlayer = player2 + } else if (currentPlayer === player2) { + cellValueP2 += diceResult + console.log(cellValueP2) + currentPosition = $(`[data-value = ${cellValueP2}]`) + player2.detach().appendTo(currentPosition) + + // Let's put some snakesssssss + if (currentPosition === ('[data-value = 8]') || currentPosition === ('[data-value = 14]') || currentPosition === ('[data-value = 15]')) { + currentPosition = (`[data-value = 4]`) + console.log(currentPosition) + player2.detach().appendTo(currentPosition) + cellValueP2 = 4 + // Let's put some ladders + } else if ((currentPosition === ('[data-value = 1]') || currentPosition === ('[data-value = 9]'))) { + currentPosition = (`[data-value = 8]`) + player2.detach().appendTo(currentPosition) + console.log(currentPosition) + cellValueP2 = 8 + } + currentPlayer = player1 + } + gameOver() + } + + function gameOver () { + if (cellValueP1 >= 16 || cellValueP2 >= 16) { + whoWon() + } + } + + function whoWon () { + if ((cellValueP1 >= 16)) { + alert('Player 1 has won!') + reset() + } else if ((cellValueP2 >= 16)) { + alert('Player 2 has won!') + reset() + } + } + + function reset () { + cellValueP1 = $startPointDiv.data('value') + cellValueP2 = $startPointDiv.data('value') + player1.detach().appendTo($startPointDiv) + player2.detach().appendTo($startPointDiv) + + } +}) diff --git a/assets/js/script.js b/assets/js/script.js index e69de29b..aa673a0c 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -0,0 +1,162 @@ +$(function () { + var $player1 = $('
') + var $player2 = $('
') + var currentPlayer = $player1 + var totalStepsTakenByP1 = 1 // track where player is supposed to be at. + var totalStepsTakenByP2 = 1 + + var $circle = $('.circle') // circle img to indicate which player's turn + +// Create rollDie Event + var $dieButton = $('.dieButton') // Create dice event + $dieButton.on('click', rollDice) + + // create autoPlay event + var $autoPlayButton = $('.auto-play') + $autoPlayButton.on('click', autoPlayButton) + var clear + + // Create reset event + var $resetButton = $('.resetButton') + $resetButton.on('click', resetButton) + + // Create audio event + var $soundButton = $('.sound') + $soundButton.on('click', playAudio) + + function playAudio () { + document.getElementsByClassName('audio')[0].play() + } + + function startPosition () { + $('#1').append($player1) // grid 1 + $('#1').append($player2) // grid 1 + } + + function rollDice () { + var randomDiceResult = 1 + Math.floor(Math.random() * 6) + var $dieValue = $('.dieValue') + $dieValue.text(`${randomDiceResult}`) + playerTurn(randomDiceResult) + } + + function playerTurn (randomDiceResult) { + if (currentPlayer === $player1) { + totalStepsTakenByP1 += randomDiceResult + $player1.appendTo(`#${totalStepsTakenByP1}`) // move player 1 + dice value + $circle.css('left', '147px') // indicate player2 turn + painOrPleasureP1() + + if (randomDiceResult === 6) { + currentPlayer = $player1 // if dice is 6 go again + $circle.css('left', '25px') + } else { currentPlayer = $player2 } + } else if (currentPlayer === $player2) { + totalStepsTakenByP2 += randomDiceResult + $player2.appendTo(`#${totalStepsTakenByP2}`) // move player 1 + dice value + painOrPleasureP2() + $circle.css('left', '25px') // indicate player1 turn + + if (randomDiceResult === 6) { + currentPlayer = $player2 + $circle.css('left', '147px') + } else { currentPlayer = $player1 } + } + gameOver() + } + + function gameOver () { + if (totalStepsTakenByP1 >= 100) { + alert('Player 1 has won!') + resetButton() + } else if (totalStepsTakenByP2 >= 100) { + alert('Player 2 has won!') + resetButton() + } + } + + function resetButton () { + totalStepsTakenByP1 = 1 + totalStepsTakenByP2 = 1 + currentPlayer = $player1 + $player1.appendTo(`#${totalStepsTakenByP1}`) + $player2.appendTo(`#${totalStepsTakenByP2}`) + var $dieValue = $('.dieValue') + $dieValue.text(0) + clearInterval(clear) + } + + function autoPlayButton () { + clear = setInterval(rollDice, 1500) + } + + function createTable () { + var $tbl = $('#tbl') + var id = 100 + var rowClass = 10 + // nested loop to create rows and columsn + for (var r = 0; r < 10; r++) { + var $row = $('') // create rows + $row.attr('class', rowClass--) // give rows an individual class + + for (var c = 0; c < 10; c++) { + var $column = $('') // create column + $column.css({ 'width': '50px', 'height': '50px'}) + $column.attr('id', id--) // give each individual column a number + + $column.attr('id') % 2 === 0 ? $column.css('backgroundColor', '#ffff00') : $column.css('backgroundColor', 'white') // giving grid bg colors. + + // reverse the numbering for even or odd rows. + $row.each(function() { + $(this).attr('class') % 2 === 0 ? $row.append($column) : $row.prepend($column) + }) + $column.html(id + 1).addClass('cell') + } + $tbl.append($row) + } + } + createTable() + startPosition() + + // Using Array to input Snakes & Ladders + var painAndPleasureArray = [0, 'ladder0', 0, 'ladder1', 0, 0, 'snake0', 0, 'ladder2', 0, // row 1 + 'snake1', 0, 'ladder3', 'ladder1', 0, 0, 'snake0', 'ladder0', 'snake3', 'ladder4', // row 2 + 0, 0, 0, 'snake5', 0, 0, 'ladder3', 'ladder5', 'snake1', 0, // row 3 + 'ladder2', 0, 0, 'snake2', 0, 0, 0, 'ladder4', 0, 'ladder6', // row 4 + 0, 0, 'snake4', 0, 0, 0, 0, 0, 0, 0, // row 5 + 'ladder7', 0, 0, 'snake2', 0, 0, 0, 0, 'ladder6', 0, // row 6 + 0, 'snake3', 'ladder8', 'snake4', 0, 0, 'ladder7', 0, 0, 0, // row 7 + 'ladder9', 0, 'snake6', 0, 'snake7', 0, 0, 'snake8', 0, 0, // row 8 + 'ladder8', 0, 0, 'ladder5', 0, 0, 'snake5', 0, 0, 0, // row 9 + 'ladder9', 0, 'snake6', 0, 'snake7', 0, 0, 0, 'snake8', 0] // row 10 + +// Player 1 Snakes & Ladders + function painOrPleasureP1 () { + var currentP1Index = totalStepsTakenByP1 - 1 + painAndPleasureArray.forEach(function (element) { + // if length equal to 7, search for the next similar ladder word to find index + if (painAndPleasureArray[currentP1Index] === element && element.length === 7) { + totalStepsTakenByP1 = (painAndPleasureArray.indexOf(element, painAndPleasureArray.indexOf(element) + 1)) + 1 + $player1.appendTo(`#${totalStepsTakenByP1}`) + // if length equal to 6, search for the next similar snake word to find index + } else if (painAndPleasureArray[currentP1Index] === element && element.length === 6) { + totalStepsTakenByP1 = (painAndPleasureArray.indexOf(element, painAndPleasureArray.indexOf(element) - 1)) + 1 + $player1.appendTo(`#${totalStepsTakenByP1}`) + } else { return totalStepsTakenByP1 } + }) + } + +// Player 2 Snakes & Ladders + function painOrPleasureP2 () { + var currentP2Index = totalStepsTakenByP2 - 1 + painAndPleasureArray.forEach(function (element) { + if (painAndPleasureArray[currentP2Index] === element && element.length === 7) { + totalStepsTakenByP2 = (painAndPleasureArray.indexOf(element, painAndPleasureArray.indexOf(element) + 1)) + 1 + $player2.appendTo(`#${totalStepsTakenByP2}`) + } else if (painAndPleasureArray[currentP2Index] === element && element.length === 6) { + totalStepsTakenByP2 = (painAndPleasureArray.indexOf(element, painAndPleasureArray.indexOf(element) - 1)) + 1 + $player2.appendTo(`#${totalStepsTakenByP2}`) + } else { return totalStepsTakenByP2 } + }) + } +}) diff --git a/doc/created.rid b/doc/created.rid new file mode 100644 index 00000000..e69de29b diff --git a/doc/css/fonts.css b/doc/css/fonts.css new file mode 100644 index 00000000..57302b51 --- /dev/null +++ b/doc/css/fonts.css @@ -0,0 +1,167 @@ +/* + * Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), + * with Reserved Font Name "Source". All Rights Reserved. Source is a + * trademark of Adobe Systems Incorporated in the United States and/or other + * countries. + * + * This Font Software is licensed under the SIL Open Font License, Version + * 1.1. + * + * This license is copied below, and is also available with a FAQ at: + * http://scripts.sil.org/OFL + */ + +@font-face { + font-family: "Source Code Pro"; + font-style: normal; + font-weight: 400; + src: local("Source Code Pro"), + local("SourceCodePro-Regular"), + url("../fonts/SourceCodePro-Regular.ttf") format("truetype"); +} + +@font-face { + font-family: "Source Code Pro"; + font-style: normal; + font-weight: 700; + src: local("Source Code Pro Bold"), + local("SourceCodePro-Bold"), + url("../fonts/SourceCodePro-Bold.ttf") format("truetype"); +} + +/* + * Copyright (c) 2010, Łukasz Dziedzic (dziedzic@typoland.com), + * with Reserved Font Name Lato. + * + * This Font Software is licensed under the SIL Open Font License, Version + * 1.1. + * + * This license is copied below, and is also available with a FAQ at: + * http://scripts.sil.org/OFL + */ + +@font-face { + font-family: "Lato"; + font-style: normal; + font-weight: 300; + src: local("Lato Light"), + local("Lato-Light"), + url("../fonts/Lato-Light.ttf") format("truetype"); +} + +@font-face { + font-family: "Lato"; + font-style: italic; + font-weight: 300; + src: local("Lato Light Italic"), + local("Lato-LightItalic"), + url("../fonts/Lato-LightItalic.ttf") format("truetype"); +} + +@font-face { + font-family: "Lato"; + font-style: normal; + font-weight: 700; + src: local("Lato Regular"), + local("Lato-Regular"), + url("../fonts/Lato-Regular.ttf") format("truetype"); +} + +@font-face { + font-family: "Lato"; + font-style: italic; + font-weight: 700; + src: local("Lato Italic"), + local("Lato-Italic"), + url("../fonts/Lato-RegularItalic.ttf") format("truetype"); +} + +/* + * ----------------------------------------------------------- + * SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 + * ----------------------------------------------------------- + * + * PREAMBLE + * The goals of the Open Font License (OFL) are to stimulate worldwide + * development of collaborative font projects, to support the font creation + * efforts of academic and linguistic communities, and to provide a free and + * open framework in which fonts may be shared and improved in partnership + * with others. + * + * The OFL allows the licensed fonts to be used, studied, modified and + * redistributed freely as long as they are not sold by themselves. The + * fonts, including any derivative works, can be bundled, embedded, + * redistributed and/or sold with any software provided that any reserved + * names are not used by derivative works. The fonts and derivatives, + * however, cannot be released under any other type of license. The + * requirement for fonts to remain under this license does not apply + * to any document created using the fonts or their derivatives. + * + * DEFINITIONS + * "Font Software" refers to the set of files released by the Copyright + * Holder(s) under this license and clearly marked as such. This may + * include source files, build scripts and documentation. + * + * "Reserved Font Name" refers to any names specified as such after the + * copyright statement(s). + * + * "Original Version" refers to the collection of Font Software components as + * distributed by the Copyright Holder(s). + * + * "Modified Version" refers to any derivative made by adding to, deleting, + * or substituting -- in part or in whole -- any of the components of the + * Original Version, by changing formats or by porting the Font Software to a + * new environment. + * + * "Author" refers to any designer, engineer, programmer, technical + * writer or other person who contributed to the Font Software. + * + * PERMISSION & CONDITIONS + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of the Font Software, to use, study, copy, merge, embed, modify, + * redistribute, and sell modified and unmodified copies of the Font + * Software, subject to the following conditions: + * + * 1) Neither the Font Software nor any of its individual components, + * in Original or Modified Versions, may be sold by itself. + * + * 2) Original or Modified Versions of the Font Software may be bundled, + * redistributed and/or sold with any software, provided that each copy + * contains the above copyright notice and this license. These can be + * included either as stand-alone text files, human-readable headers or + * in the appropriate machine-readable metadata fields within text or + * binary files as long as those fields can be easily viewed by the user. + * + * 3) No Modified Version of the Font Software may use the Reserved Font + * Name(s) unless explicit written permission is granted by the corresponding + * Copyright Holder. This restriction only applies to the primary font name as + * presented to the users. + * + * 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font + * Software shall not be used to promote, endorse or advertise any + * Modified Version, except to acknowledge the contribution(s) of the + * Copyright Holder(s) and the Author(s) or with their explicit written + * permission. + * + * 5) The Font Software, modified or unmodified, in part or in whole, + * must be distributed entirely under this license, and must not be + * distributed under any other license. The requirement for fonts to + * remain under this license does not apply to any document created + * using the Font Software. + * + * TERMINATION + * This license becomes null and void if any of the above conditions are + * not met. + * + * DISCLAIMER + * THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT + * OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL + * DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM + * OTHER DEALINGS IN THE FONT SOFTWARE. + */ + diff --git a/doc/css/rdoc.css b/doc/css/rdoc.css new file mode 100644 index 00000000..2f4dca7e --- /dev/null +++ b/doc/css/rdoc.css @@ -0,0 +1,590 @@ +/* + * "Darkfish" Rdoc CSS + * $Id: rdoc.css 54 2009-01-27 01:09:48Z deveiant $ + * + * Author: Michael Granger + * + */ + +/* vim: ft=css et sw=2 ts=2 sts=2 */ +/* Base Green is: #6C8C22 */ + +* { padding: 0; margin: 0; } + +body { + background: #fafafa; + font-family: Lato, sans-serif; + font-weight: 300; +} + +h1 span, +h2 span, +h3 span, +h4 span, +h5 span, +h6 span { + position: relative; + + display: none; + padding-left: 1em; + line-height: 0; + vertical-align: baseline; + font-size: 10px; +} + +h1 span { top: -1.3em; } +h2 span { top: -1.2em; } +h3 span { top: -1.0em; } +h4 span { top: -0.8em; } +h5 span { top: -0.5em; } +h6 span { top: -0.5em; } + +h1:hover span, +h2:hover span, +h3:hover span, +h4:hover span, +h5:hover span, +h6:hover span { + display: inline; +} + +:link, +:visited { + color: #6C8C22; + text-decoration: none; +} + +:link:hover, +:visited:hover { + border-bottom: 1px dotted #6C8C22; +} + +code, +pre { + font-family: "Source Code Pro", Monaco, monospace; +} + +/* @group Generic Classes */ + +.initially-hidden { + display: none; +} + +#search-field { + width: 98%; + background: white; + border: none; + height: 1.5em; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + text-align: left; +} +#search-field:focus { + background: #f1edba; +} +#search-field:-moz-placeholder, +#search-field::-webkit-input-placeholder { + font-weight: bold; + color: #666; +} + +.missing-docs { + font-size: 120%; + background: white url(images/wrench_orange.png) no-repeat 4px center; + color: #ccc; + line-height: 2em; + border: 1px solid #d00; + opacity: 1; + padding-left: 20px; + text-indent: 24px; + letter-spacing: 3px; + font-weight: bold; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; +} + +.target-section { + border: 2px solid #dcce90; + border-left-width: 8px; + padding: 0 1em; + background: #fff3c2; +} + +/* @end */ + +/* @group Index Page, Standalone file pages */ +.table-of-contents ul { + margin: 1em; + list-style: none; +} + +.table-of-contents ul ul { + margin-top: 0.25em; +} + +.table-of-contents ul :link, +.table-of-contents ul :visited { + font-size: 16px; +} + +.table-of-contents li { + margin-bottom: 0.25em; +} + +.table-of-contents li .toc-toggle { + width: 16px; + height: 16px; + background: url(images/add.png) no-repeat; +} + +.table-of-contents li .toc-toggle.open { + background: url(images/delete.png) no-repeat; +} + +/* @end */ + +/* @group Top-Level Structure */ + +nav { + float: left; + width: 260px; + font-family: Helvetica, sans-serif; + font-size: 14px; +} + +main { + display: block; + margin: 0 2em 5em 260px; + padding-left: 20px; + min-width: 340px; + font-size: 16px; +} + +main h1, +main h2, +main h3, +main h4, +main h5, +main h6 { + font-family: Helvetica, sans-serif; +} + +.table-of-contents main { + margin-left: 2em; +} + +#validator-badges { + clear: both; + margin: 1em 1em 2em; + font-size: smaller; +} + +/* @end */ + +/* @group navigation */ +nav { + margin-bottom: 1em; +} + +nav .nav-section { + margin-top: 2em; + border-top: 2px solid #aaa; + font-size: 90%; + overflow: hidden; +} + +nav h2 { + margin: 0; + padding: 2px 8px 2px 8px; + background-color: #e8e8e8; + color: #555; + font-size: 125%; + text-align: center; +} + +nav h3, +#table-of-contents-navigation { + margin: 0; + padding: 2px 8px 2px 8px; + text-align: right; + background-color: #e8e8e8; + color: #555; +} + +nav ul, +nav dl, +nav p { + padding: 4px 8px 0; + list-style: none; +} + +#project-navigation .nav-section { + margin: 0; + border-top: 0; +} + +#home-section h2 { + text-align: center; +} + +#table-of-contents-navigation { + font-size: 1.2em; + font-weight: bold; + text-align: center; +} + +#search-section { + margin-top: 0; + border-top: 0; +} + +#search-field-wrapper { + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; + padding: 3px 8px; + background-color: #e8e8e8; + color: #555; +} + +ul.link-list li { + white-space: nowrap; + line-height: 1.4em; +} + +ul.link-list .type { + font-size: 8px; + text-transform: uppercase; + color: white; + background: #969696; + padding: 2px 4px; + -webkit-border-radius: 5px; +} + +.calls-super { + background: url(images/arrow_up.png) no-repeat right center; +} + +/* @end */ + +/* @group Documentation Section */ +main { + color: #333; +} + +main > h1:first-child, +main > h2:first-child, +main > h3:first-child, +main > h4:first-child, +main > h5:first-child, +main > h6:first-child { + margin-top: 0px; +} + +main sup { + vertical-align: super; + font-size: 0.8em; +} + +/* The heading with the class name */ +main h1[class] { + margin-top: 0; + margin-bottom: 1em; + font-size: 2em; + color: #6C8C22; +} + +main h1 { + margin: 2em 0 0.5em; + font-size: 1.7em; +} + +main h2 { + margin: 2em 0 0.5em; + font-size: 1.5em; +} + +main h3 { + margin: 2em 0 0.5em; + font-size: 1.2em; +} + +main h4 { + margin: 2em 0 0.5em; + font-size: 1.1em; +} + +main h5 { + margin: 2em 0 0.5em; + font-size: 1em; +} + +main h6 { + margin: 2em 0 0.5em; + font-size: 1em; +} + +main p { + margin: 0 0 0.5em; + line-height: 1.4em; +} + +main pre { + margin: 1.2em 0.5em; + padding: 1em; + font-size: 0.8em; +} + +main hr { + margin: 1.5em 1em; + border: 2px solid #ddd; +} + +main blockquote { + margin: 0 2em 1.2em 1.2em; + padding-left: 0.5em; + border-left: 2px solid #ddd; +} + +main ol, +main ul { + margin: 1em 2em; +} + +main li > p { + margin-bottom: 0.5em; +} + +main dl { + margin: 1em 0.5em; +} + +main dt { + margin-bottom: 0.5em; + font-weight: bold; +} + +main dd { + margin: 0 1em 1em 0.5em; +} + +main header h2 { + margin-top: 2em; + border-width: 0; + border-top: 4px solid #bbb; + font-size: 130%; +} + +main header h3 { + margin: 2em 0 1.5em; + border-width: 0; + border-top: 3px solid #bbb; + font-size: 120%; +} + +.documentation-section-title { + position: relative; +} +.documentation-section-title .section-click-top { + position: absolute; + top: 6px; + left: 12px; + font-size: 10px; + color: #9b9877; + visibility: hidden; + padding-left: 0.5px; +} + +.documentation-section-title:hover .section-click-top { + visibility: visible; +} + +.constants-list > dl { + margin: 1em 0 2em; + border: 0; +} + +.constants-list > dl dt { + margin-bottom: 0.75em; + padding-left: 0; + font-family: "Source Code Pro", Monaco, monospace; + font-size: 110%; +} + +.constants-list > dl dt a { + color: inherit; +} + +.constants-list > dl dd { + margin: 0 0 2em 0; + padding: 0; + color: #666; +} + +.documentation-section h2 { + position: relative; +} + +.documentation-section h2 a { + position: absolute; + top: 8px; + right: 10px; + font-size: 12px; + color: #9b9877; + visibility: hidden; +} + +.documentation-section h2:hover a { + visibility: visible; +} + +/* @group Method Details */ + +main .method-source-code { + display: none; +} + +main .method-description .method-calls-super { + color: #333; + font-weight: bold; +} + +main .method-detail { + margin-bottom: 2.5em; + cursor: pointer; +} + +main .method-detail:target { + margin-left: -10px; + border-left: 10px solid #f1edba; +} + +main .method-heading { + position: relative; + font-family: "Source Code Pro", Monaco, monospace; + font-size: 110%; + font-weight: bold; + color: #333; +} +main .method-heading :link, +main .method-heading :visited { + color: inherit; +} +main .method-click-advice { + position: absolute; + top: 2px; + right: 5px; + font-size: 12px; + color: #9b9877; + visibility: hidden; + padding-right: 20px; + line-height: 20px; + background: url(images/zoom.png) no-repeat right top; +} +main .method-heading:hover .method-click-advice { + visibility: visible; +} + +main .method-alias .method-heading { + color: #666; +} + +main .method-description, +main .aliases { + margin-top: 0.75em; + color: #333; +} + +main .aliases { + padding-top: 4px; + font-style: italic; + cursor: default; +} +main .method-description ul { + margin-left: 1.5em; +} + +main #attribute-method-details .method-detail:hover { + background-color: transparent; + cursor: default; +} +main .attribute-access-type { + text-transform: uppercase; + padding: 0 1em; +} +/* @end */ + +/* @end */ + +/* @group Source Code */ + +pre { + margin: 0.5em 0; + border: 1px dashed #999; + padding: 0.5em; + background: #262626; + color: white; + overflow: auto; +} + +.ruby-constant { color: #7fffd4; background: transparent; } +.ruby-keyword { color: #00ffff; background: transparent; } +.ruby-ivar { color: #eedd82; background: transparent; } +.ruby-operator { color: #00ffee; background: transparent; } +.ruby-identifier { color: #ffdead; background: transparent; } +.ruby-node { color: #ffa07a; background: transparent; } +.ruby-comment { color: #dc0000; background: transparent; } +.ruby-regexp { color: #ffa07a; background: transparent; } +.ruby-value { color: #7fffd4; background: transparent; } + +/* @end */ + + +/* @group search results */ +#search-results { + font-family: Lato, sans-serif; + font-weight: 300; +} + +#search-results .search-match { + font-family: Helvetica, sans-serif; + font-weight: normal; +} + +#search-results .search-selected { + background: #e8e8e8; + border-bottom: 1px solid transparent; +} + +#search-results li { + list-style: none; + border-bottom: 1px solid #aaa; + margin-bottom: 0.5em; +} + +#search-results li:last-child { + border-bottom: none; + margin-bottom: 0; +} + +#search-results li p { + padding: 0; + margin: 0.5em; +} + +#search-results .search-namespace { + font-weight: bold; +} + +#search-results li em { + background: yellow; + font-style: normal; +} + +#search-results pre { + margin: 0.5em; + font-family: "Source Code Pro", Monaco, monospace; +} + +/* @end */ + diff --git a/doc/fonts/Lato-Light.ttf b/doc/fonts/Lato-Light.ttf new file mode 100644 index 00000000..b49dd437 Binary files /dev/null and b/doc/fonts/Lato-Light.ttf differ diff --git a/doc/fonts/Lato-LightItalic.ttf b/doc/fonts/Lato-LightItalic.ttf new file mode 100644 index 00000000..7959fef0 Binary files /dev/null and b/doc/fonts/Lato-LightItalic.ttf differ diff --git a/doc/fonts/Lato-Regular.ttf b/doc/fonts/Lato-Regular.ttf new file mode 100644 index 00000000..839cd589 Binary files /dev/null and b/doc/fonts/Lato-Regular.ttf differ diff --git a/doc/fonts/Lato-RegularItalic.ttf b/doc/fonts/Lato-RegularItalic.ttf new file mode 100644 index 00000000..bababa09 Binary files /dev/null and b/doc/fonts/Lato-RegularItalic.ttf differ diff --git a/doc/fonts/SourceCodePro-Bold.ttf b/doc/fonts/SourceCodePro-Bold.ttf new file mode 100644 index 00000000..61e3090c Binary files /dev/null and b/doc/fonts/SourceCodePro-Bold.ttf differ diff --git a/doc/fonts/SourceCodePro-Regular.ttf b/doc/fonts/SourceCodePro-Regular.ttf new file mode 100644 index 00000000..85686d96 Binary files /dev/null and b/doc/fonts/SourceCodePro-Regular.ttf differ diff --git a/index.html b/index.html index 5b002212..e5b3ded8 100644 --- a/index.html +++ b/index.html @@ -2,10 +2,41 @@ - - + Snakes and Ladders + - +
+
+ SnakesAndLadderImage +
+
+
+ +
+
+
+
+ gold image + + + + +

Decide who is paying for Lunch with Snakes & Ladder!

+
+
+

P1 P2

+ golden circle + monkey + pig +
+
+ +
0
+
+
+
+ +