JSDoc
This commit is contained in:
parent
8e0c66565c
commit
1b7ed67f3e
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,3 +1,2 @@
|
|||||||
node_modules/
|
node_modules/
|
||||||
package-lock.json
|
package-lock.json
|
||||||
docs/DOCS.md
|
|
||||||
|
142
docs/DOCS.md
Normal file
142
docs/DOCS.md
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
<!-- Generated by documentation.js. Update this documentation by updating the source code. -->
|
||||||
|
|
||||||
|
## setAreas
|
||||||
|
|
||||||
|
Устанавливает размеры и положение зон для отрисовки
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
* `canvas` **[Object][1]**
|
||||||
|
* `landscape_orientation` **Bool** текущая ориентация игры
|
||||||
|
* `logoImage` **[Image][2]** логотип
|
||||||
|
|
||||||
|
Returns **[Object][1]** список зон
|
||||||
|
|
||||||
|
## getMousePos
|
||||||
|
|
||||||
|
Возвращает
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
* `canvas` **[Object][1]** canvas с которого считывается позиция курсора
|
||||||
|
* `event` **[Event][3]**
|
||||||
|
|
||||||
|
Returns **[Object][1]** координаты X, Y положения курсора на canvas
|
||||||
|
|
||||||
|
## isInside
|
||||||
|
|
||||||
|
Проверяет положение курсора в области объекта
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
* `mousePos` **[Object][1]** { x:, y: } курсора мыши
|
||||||
|
* `rect` **[Object][1]** квадратная область
|
||||||
|
|
||||||
|
Returns **Bool**
|
||||||
|
|
||||||
|
## clearContext
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
* `canvas` **[Object][1]** canvas object
|
||||||
|
* `color` **[String][4]** строка с цветом (HEX, либо имя, либо rgba, etc)
|
||||||
|
|
||||||
|
## getCenterH
|
||||||
|
|
||||||
|
Возвращает X координату для центрировки объекта
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
* `canvasWidth` **Integer**
|
||||||
|
* `objectWidth` **Integer**
|
||||||
|
|
||||||
|
Returns **Integer** X координата
|
||||||
|
|
||||||
|
## getCenterV
|
||||||
|
|
||||||
|
Возвращает Y координату для центрировки объекта
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
* `canvasHeight` **Integer**
|
||||||
|
* `objectHeight` **Integer**
|
||||||
|
|
||||||
|
Returns **Integer** Y координата
|
||||||
|
|
||||||
|
## drawProgressBar
|
||||||
|
|
||||||
|
Рисует полосу прогресса с визуализацией правильных и неправильных ответов
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
* `context`
|
||||||
|
* `area` **[Object][1]** зона в которой будет отрисовываться объект
|
||||||
|
* `colors` **[Object][1]** объект цветов
|
||||||
|
* `questions` **[Object][1]** объект вопросов
|
||||||
|
|
||||||
|
## imagePreloader
|
||||||
|
|
||||||
|
Функция, которая загружает изображения в документ
|
||||||
|
и по завершению выполнятся callback() функция
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
* `images` **[Array][5]** массив с именами файлов
|
||||||
|
* `callback` **[Function][6]** callback() функция
|
||||||
|
|
||||||
|
## shuffle
|
||||||
|
|
||||||
|
Функция случайным образом перемешивает массив
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
* `array` **[Array][5]** массив, элементы которого будут перемешаны
|
||||||
|
|
||||||
|
## setOrientation
|
||||||
|
|
||||||
|
Функция возвращает ориентацию игры в зависимости от размера canvas
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
* `canvas` **[Object][1]** canvas object
|
||||||
|
|
||||||
|
Returns **Bool** значение, которое присвается landscape_orientation в index.js
|
||||||
|
|
||||||
|
## checkAnswer
|
||||||
|
|
||||||
|
Проверяет правильность ответа на вопрос и устанавливает статус ответа в верно/неверно
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
* `quest` **[Object][1]** объект вопроса с вариантами ответа и правильным вариантом
|
||||||
|
* `answer` **[String][4]**
|
||||||
|
|
||||||
|
## restartGame
|
||||||
|
|
||||||
|
При выполнении перемешивает вопросы и варианты ответов и запускает игру сначала
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
* `game` **[Object][1]** объект игрового процесса
|
||||||
|
* `quests` **[Object][1]** объект с вопросами
|
||||||
|
|
||||||
|
## playMusic
|
||||||
|
|
||||||
|
Воспроизводит фоновую музыку
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
* `config` **[Object][1]** объект с параметрами движка
|
||||||
|
* `music` **AudioContext**
|
||||||
|
|
||||||
|
[1]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
|
||||||
|
|
||||||
|
[2]: https://developer.mozilla.org/docs/Web/API/HTMLImageElement/Image
|
||||||
|
|
||||||
|
[3]: https://developer.mozilla.org/docs/Web/API/Event
|
||||||
|
|
||||||
|
[4]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
|
||||||
|
|
||||||
|
[5]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array
|
||||||
|
|
||||||
|
[6]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function
|
@ -2,6 +2,13 @@ import config from './config.json';
|
|||||||
|
|
||||||
import * as Draw from './draw.js'
|
import * as Draw from './draw.js'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Устанавливает размеры и положение зон для отрисовки
|
||||||
|
* @param {Object} canvas
|
||||||
|
* @param {Bool} landscape_orientation текущая ориентация игры
|
||||||
|
* @param {Image} logoImage логотип
|
||||||
|
* @return {Object} список зон
|
||||||
|
*/
|
||||||
export function setAreas(canvas, landscape_orientation, logoImage) {
|
export function setAreas(canvas, landscape_orientation, logoImage) {
|
||||||
let areasArray = null;
|
let areasArray = null;
|
||||||
|
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
// функции обработки кнопок
|
// функции обработки кнопок
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Возвращает
|
||||||
|
* @param {Object} canvas canvas с которого считывается позиция курсора
|
||||||
|
* @param {Event} event
|
||||||
|
* @return {Object} координаты X, Y положения курсора на canvas
|
||||||
|
*/
|
||||||
export function getMousePos(canvas, event) {
|
export function getMousePos(canvas, event) {
|
||||||
let rect = canvas.getBoundingClientRect();
|
let rect = canvas.getBoundingClientRect();
|
||||||
|
|
||||||
@ -9,6 +15,12 @@ export function getMousePos(canvas, event) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Проверяет положение курсора в области объекта
|
||||||
|
* @param {Object} mousePos { x:, y: } курсора мыши
|
||||||
|
* @param {Object} rect квадратная область
|
||||||
|
* @return {Bool}
|
||||||
|
*/
|
||||||
export function isInside(mousePos, rect) {
|
export function isInside(mousePos, rect) {
|
||||||
return mousePos.x > rect.x && mousePos.x < rect.x + rect.w && mousePos.y < rect.y + rect.h && mousePos.y > rect.y;
|
return mousePos.x > rect.x && mousePos.x < rect.x + rect.w && mousePos.y < rect.y + rect.h && mousePos.y > rect.y;
|
||||||
}
|
}
|
||||||
|
23
js/draw.js
23
js/draw.js
@ -1,5 +1,9 @@
|
|||||||
// функции рисоввания
|
// функции рисоввания
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Object} canvas canvas object
|
||||||
|
* @param {String} color строка с цветом (HEX, либо имя, либо rgba, etc)
|
||||||
|
*/
|
||||||
export function clearContext(canvas, color) {
|
export function clearContext(canvas, color) {
|
||||||
let cW = canvas.width;
|
let cW = canvas.width;
|
||||||
let cH = canvas.height;
|
let cH = canvas.height;
|
||||||
@ -41,10 +45,22 @@ export function placeImage(canvas, area, imageFile, colors) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Возвращает X координату для центрировки объекта
|
||||||
|
* @param {Integer} canvasWidth
|
||||||
|
* @param {Integer} objectWidth
|
||||||
|
* @return {Integer} X координата
|
||||||
|
*/
|
||||||
export function getCenterH(canvasWidth, objectWidth) {
|
export function getCenterH(canvasWidth, objectWidth) {
|
||||||
return canvasWidth / 2 - objectWidth / 2;
|
return canvasWidth / 2 - objectWidth / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Возвращает Y координату для центрировки объекта
|
||||||
|
* @param {Integer} canvasHeight
|
||||||
|
* @param {Integer} objectHeight
|
||||||
|
* @return {Integer} Y координата
|
||||||
|
*/
|
||||||
export function getCenterV(canvasHeight, objectHeight) {
|
export function getCenterV(canvasHeight, objectHeight) {
|
||||||
return canvasHeight / 2 - objectHeight / 2;
|
return canvasHeight / 2 - objectHeight / 2;
|
||||||
}
|
}
|
||||||
@ -74,6 +90,13 @@ export function drawInfo(canvas, landscape_orientation) {
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Рисует полосу прогресса с визуализацией правильных и неправильных ответов
|
||||||
|
* @param {} context
|
||||||
|
* @param {Object} area зона в которой будет отрисовываться объект
|
||||||
|
* @param {Object} colors объект цветов
|
||||||
|
* @param {Object} questions объект вопросов
|
||||||
|
*/
|
||||||
export function drawProgressBar(context, area, colors, questions) {
|
export function drawProgressBar(context, area, colors, questions) {
|
||||||
let sizeProgressItem = area.w / questions.length;
|
let sizeProgressItem = area.w / questions.length;
|
||||||
|
|
||||||
|
14
js/engine.js
14
js/engine.js
@ -1,5 +1,11 @@
|
|||||||
import config from './config.json';
|
import config from './config.json';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Функция, которая загружает изображения в документ
|
||||||
|
* и по завершению выполнятся callback() функция
|
||||||
|
* @param {Array} images массив с именами файлов
|
||||||
|
* @param {Function} callback callback() функция
|
||||||
|
*/
|
||||||
export function imagePreloader(images, callback) {
|
export function imagePreloader(images, callback) {
|
||||||
let counter = 0;
|
let counter = 0;
|
||||||
|
|
||||||
@ -15,9 +21,11 @@ export function imagePreloader(images, callback) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Функция случайным образом перемешивает массив
|
||||||
|
* @param {Array} array массив, элементы которого будут перемешаны
|
||||||
|
*/
|
||||||
export function shuffle(array) {
|
export function shuffle(array) {
|
||||||
// ф
|
|
||||||
|
|
||||||
for (let i = array.length - 1; i > 0; i--) {
|
for (let i = array.length - 1; i > 0; i--) {
|
||||||
const j = Math.floor(Math.random() * (i + 1));
|
const j = Math.floor(Math.random() * (i + 1));
|
||||||
[array[i], array[j]] = [array[j], array[i]];
|
[array[i], array[j]] = [array[j], array[i]];
|
||||||
@ -28,7 +36,7 @@ export function shuffle(array) {
|
|||||||
/**
|
/**
|
||||||
* Функция возвращает ориентацию игры в зависимости от размера canvas
|
* Функция возвращает ориентацию игры в зависимости от размера canvas
|
||||||
* @param {Object} canvas canvas object
|
* @param {Object} canvas canvas object
|
||||||
* @return {Bool} landscape_orientation
|
* @return {Bool} значение, которое присвается landscape_orientation в index.js
|
||||||
*/
|
*/
|
||||||
export function setOrientation(canvas) {
|
export function setOrientation(canvas) {
|
||||||
let landscape_orientation = null;
|
let landscape_orientation = null;
|
||||||
|
10
js/game.js
10
js/game.js
@ -2,6 +2,11 @@
|
|||||||
|
|
||||||
import { shuffle } from './engine.js';
|
import { shuffle } from './engine.js';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Проверяет правильность ответа на вопрос и устанавливает статус ответа в верно/неверно
|
||||||
|
* @param {Object} quest объект вопроса с вариантами ответа и правильным вариантом
|
||||||
|
* @param {String} answer
|
||||||
|
*/
|
||||||
export function checkAnswer(quest, answer) {
|
export function checkAnswer(quest, answer) {
|
||||||
if (Array.isArray(quest.rightAnswer)) {
|
if (Array.isArray(quest.rightAnswer)) {
|
||||||
let lowerCaseArray = [];
|
let lowerCaseArray = [];
|
||||||
@ -24,6 +29,11 @@ export function checkAnswer(quest, answer) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* При выполнении перемешивает вопросы и варианты ответов и запускает игру сначала
|
||||||
|
* @param {Object} game объект игрового процесса
|
||||||
|
* @param {Object} quests объект с вопросами
|
||||||
|
*/
|
||||||
export function restartGame(game, quests) {
|
export function restartGame(game, quests) {
|
||||||
// shuffle quests and answers order
|
// shuffle quests and answers order
|
||||||
shuffle(quests);
|
shuffle(quests);
|
||||||
|
@ -44,8 +44,7 @@ window.onload = function() {
|
|||||||
images.logo = imageLogo;
|
images.logo = imageLogo;
|
||||||
|
|
||||||
let loadingImages = [];
|
let loadingImages = [];
|
||||||
loadingImages.push(gameData.result.notPassed);
|
loadingImages.push(gameData.result.notPassed, gameData.result.passed);
|
||||||
loadingImages.push(gameData.result.passed);
|
|
||||||
|
|
||||||
for (const [key, value] of Object.entries(gameData.questions)) {
|
for (const [key, value] of Object.entries(gameData.questions)) {
|
||||||
loadingImages.push(value.image);
|
loadingImages.push(value.image);
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
/**
|
||||||
|
* Воспроизводит фоновую музыку
|
||||||
|
* @param {Object} config объект с параметрами движка
|
||||||
|
* @param {AudioContext} music
|
||||||
|
*/
|
||||||
export function playMusic(config, music) {
|
export function playMusic(config, music) {
|
||||||
let request = new XMLHttpRequest();
|
let request = new XMLHttpRequest();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user